From 478ec8b6664ec1b785afabba482b1524f555049b Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Jan 2016 23:38:21 -0300 Subject: [PATCH] test --- crypto777/OS_portable.h | 1 + iguana/SuperNET.c | 15 ++++++++++----- iguana/iguana_msg.c | 2 +- iguana/iguana_peers.c | 3 ++- iguana/main.c | 3 ++- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/crypto777/OS_portable.h b/crypto777/OS_portable.h index 83e503e59..68c87a088 100755 --- a/crypto777/OS_portable.h +++ b/crypto777/OS_portable.h @@ -312,6 +312,7 @@ bits256 bits256_from_compact(uint32_t c); int32_t btc_priv2pub(uint8_t pubkey[33],uint8_t privkey[32]); extern char *Iguana_validcommands[]; +extern bits256 GENESIS_PUBKEY,GENESIS_PRIVKEY; #endif diff --git a/iguana/SuperNET.c b/iguana/SuperNET.c index 615bc7ac2..4038620db 100644 --- a/iguana/SuperNET.c +++ b/iguana/SuperNET.c @@ -125,8 +125,10 @@ int32_t SuperNET_json2bits(struct supernet_info *myinfo,uint8_t *serialized,int3 *complenp = (int32_t)hconv_bitlen(numbits); seed = curve25519_shared(myinfo->privkey,destpub); vcalc_sha256(0,seed2.bytes,seed.bytes,sizeof(seed)); + char str[65],str2[65],str3[65],str4[65]; + printf("mypriv.%s destpub.%s seed.%s seed2.%s\n",bits256_str(str,myinfo->privkey),bits256_str(str2,destpub),bits256_str(str3,seed),bits256_str(str4,seed2)); int32_t seedlen; seedlen = ramcoder_compress(&compressed[3],maxsize-3,serialized,len,seed2); - char str[65]; printf("strlen.%d len.%d -> complen.%d %s seedlen.%d\n",(int32_t)strlen(jprint(json,0)),len,*complenp,bits256_str(str,seed2),(int32_t)hconv_bitlen(seedlen)); + printf("strlen.%d len.%d -> complen.%d %s seedlen.%d\n",(int32_t)strlen(jprint(json,0)),len,*complenp,bits256_str(str,seed2),(int32_t)hconv_bitlen(seedlen)); *complenp = (int32_t)hconv_bitlen(seedlen); return(len); } @@ -143,7 +145,7 @@ cJSON *SuperNET_bits2json(struct supernet_info *myinfo,bits256 prevpub,uint8_t * len = serialized[0]; len = (len << 8) + serialized[1]; len = (len << 8) + serialized[2]; - seed = curve25519_shared(myinfo->privkey,prevpub); + seed = curve25519_shared(GENESIS_PRIVKEY,prevpub); vcalc_sha256(0,seed2.bytes,seed.bytes,sizeof(seed)); char str[65]; printf("compressed len.%d seed2.(%s)\n",len,bits256_str(str,seed2)); numbits = ramcoder_decompress(space,IGUANA_MAXPACKETSIZE,&serialized[3],len<<3,seed2); @@ -298,9 +300,12 @@ char *SuperNET_forward(struct supernet_info *myinfo,char *hexmsg,uint32_t destip return(SuperNET_DHTsend(myinfo,routehash,hexmsg,maxdelay)); } -int32_t SuperNET_destination(struct supernet_info *myinfo,uint32_t *destipbitsp,bits256 *destpubp,int32_t *maxdelayp,cJSON *json) +int32_t SuperNET_destination(struct supernet_info *myinfo,uint32_t *destipbitsp,bits256 *destpubp,int32_t *maxdelayp,cJSON *json,char *remoteaddr) { - char *destip; int32_t destflag = SUPERNET_FORWARD; + char *destip; int32_t destflag = 0; + if ( remoteaddr != 0 && remoteaddr[0] != 0 ) + destflag = SUPERNET_FORWARD; + else destflag = SUPERNET_ISMINE; if ( (destip= jstr(json,"destip")) != 0 ) *destipbitsp = (uint32_t)calc_ipbits(destip); else *destipbitsp = 0; @@ -321,7 +326,7 @@ char *SuperNET_JSON(struct supernet_info *myinfo,cJSON *json,char *remoteaddr) if ( remoteaddr != 0 && strcmp(remoteaddr,"127.0.0.1") == 0 ) remoteaddr = 0; //printf("SuperNET_JSON.(%s) remote.(%s)\n",jprint(json,0),remoteaddr!=0?remoteaddr:""); - destflag = SuperNET_destination(myinfo,&destipbits,&destpub,&maxdelay,json); + destflag = SuperNET_destination(myinfo,&destipbits,&destpub,&maxdelay,json,remoteaddr); printf("destflag.%d\n",destflag); if ( (destflag & SUPERNET_FORWARD) != 0 ) { diff --git a/iguana/iguana_msg.c b/iguana/iguana_msg.c index bc77e06d7..fe7ddef56 100755 --- a/iguana/iguana_msg.c +++ b/iguana/iguana_msg.c @@ -138,9 +138,9 @@ void iguana_gotversion(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_queue_send(coin,addr,0,serialized,"verack",0,0,0); //iguana_send_ping(coin,addr); } - else printf("nServices.%lld nonce.%llu non-relay node.(%s)\n",(long long)vers->nServices,(long long)vers->nonce,addr->ipaddr); if ( (vers->nServices & (1<<7)) == (1<<7) ) addr->supernet = 1; + else printf("nServices.%lld nonce.%llu non-relay node.(%s) supernet.%d\n",(long long)vers->nServices,(long long)vers->nonce,addr->ipaddr,addr->supernet); if ( vers->nStartingHeight > coin->longestchain ) coin->longestchain = vers->nStartingHeight; iguana_queue_send(coin,addr,0,serialized,"getaddr",0,0,0); diff --git a/iguana/iguana_peers.c b/iguana/iguana_peers.c index 8fdb6b4de..72af51114 100755 --- a/iguana/iguana_peers.c +++ b/iguana/iguana_peers.c @@ -714,7 +714,7 @@ uint32_t iguana_possible_peer(struct iguana_info *coin,char *ipaddr) expand_ipbits(checkaddr,ipbits); if ( strcmp(checkaddr,ipaddr) == 0 ) { - printf("valid ipaddr.(%s) MAXPEERS.%d\n",ipaddr,coin->MAXPEERS); + //printf("valid ipaddr.(%s) MAXPEERS.%d\n",ipaddr,coin->MAXPEERS); if ( (iA= iguana_iAddrhashfind(coin,ipbits,1)) != 0 ) { if ( iA->status != IGUANA_PEER_CONNECTING && iA->status != IGUANA_PEER_READY && iA->status != IGUANA_PEER_ELIGIBLE ) @@ -918,6 +918,7 @@ void iguana_dedicatedloop(struct iguana_info *coin,struct iguana_peer *addr) #endif addr->addrind = (int32_t)(((long)addr - (long)&coin->peers.active[0]) / sizeof(*addr)); ipbits = (uint32_t)addr->ipbits; + addr->pubkey = GENESIS_PUBKEY; vcalc_sha256(0,addr->iphash.bytes,(uint8_t *)&ipbits,sizeof(ipbits)); char str[65]; printf("start dedicatedloop.%s addrind.%d %s\n",addr->ipaddr,addr->addrind,bits256_str(str,addr->iphash)); addr->maxfilehash2 = IGUANA_MAXFILEITEMS; diff --git a/iguana/main.c b/iguana/main.c index 41fb129cc..10dc80f34 100644 --- a/iguana/main.c +++ b/iguana/main.c @@ -258,6 +258,7 @@ void iguana_main(void *arg) { char helperstr[64],*tmpstr,*helperargs,*ipaddr,*coinargs=0,*secret,*jsonstr = arg; int32_t i,len,flag,c; cJSON *json; uint8_t secretbuf[512]; int64_t allocsize; + memset(&MYINFO,0,sizeof(MYINFO)); if ( (ipaddr= OS_filestr(&allocsize,"ipaddr")) != 0 ) { printf("got ipaddr.(%s)\n",ipaddr); @@ -297,7 +298,6 @@ void iguana_main(void *arg) API_json = jobj(API_json,"API"); free(tmpstr); } - memset(&MYINFO,0,sizeof(MYINFO)); OS_randombytes(MYINFO.privkey.bytes,sizeof(MYINFO.privkey)); if ( jsonstr != 0 && (json= cJSON_Parse(jsonstr)) != 0 ) { @@ -317,6 +317,7 @@ void iguana_main(void *arg) coinargs = jsonstr; } MYINFO.myaddr.pubkey = curve25519(MYINFO.privkey,curve25519_basepoint9()); + char str[65],str2[65]; printf("PRIV.%s PUB.%s\n",bits256_str(str,MYINFO.privkey),bits256_str(str2,MYINFO.myaddr.pubkey)); if ( IGUANA_NUMHELPERS == 0 ) IGUANA_NUMHELPERS = 1; for (i=0; i