diff --git a/iguana/iguana_notary.c b/iguana/iguana_notary.c index b5ef39a8b..aaaeb1d47 100755 --- a/iguana/iguana_notary.c +++ b/iguana/iguana_notary.c @@ -378,10 +378,9 @@ int32_t dpow_message_utxo(bits256 *hashmsgp,bits256 *txidp,int32_t *voutp,bits25 int32_t dpow_rwsigbuf(int32_t rwflag,uint8_t *data,uint8_t *sig,int32_t *siglenp,uint64_t *maskp,int32_t *senderindp,int32_t *lastkp) { int32_t len = 0; - len += iguana_rwnum(rwflag,&data[len],sizeof(*maskp),(uint8_t *)maskp); if ( rwflag != 0 ) { - data[len++] = *senderindp; + data[len++] = *senderindp; // must be first data[len++] = *lastkp; data[len++] = *siglenp; memcpy(&data[len],sig,*siglenp), len += *siglenp; @@ -393,12 +392,32 @@ int32_t dpow_rwsigbuf(int32_t rwflag,uint8_t *data,uint8_t *sig,int32_t *siglenp *siglenp = data[len++]; memcpy(sig,&data[len],*siglenp), len += *siglenp; } + len += iguana_rwnum(rwflag,&data[len],sizeof(*maskp),(uint8_t *)maskp); return(len); } +int32_t dpow_sigbufcmp(int32_t *duplicatep,uint8_t *sigbuf,uint8_t *refbuf,int32_t len) +{ + if ( memcmp(sigbuf,refbuf,len) == 0 ) + { + if ( sigbuf[0] == refbuf[0] ) + { + (*duplicatep)++; + return(0); + } + else + { + if ( ++refbuf[len+1] == 0 ) + refbuf[len]++; + return(-1); + } + } + return(-1); +} + int32_t dpow_message_most(uint8_t *k_masks,int32_t num,cJSON *json,int32_t lastflag) { - cJSON *msgobj,*item; uint8_t key[BASILISK_KEYSIZE],data[512]; char *keystr,*hexstr; int32_t duplicate,i,j,n,datalen,most = 0; + cJSON *msgobj,*item; uint8_t key[BASILISK_KEYSIZE],data[1 << 7]; char *keystr,*hexstr; int32_t duplicate,i,j,n,datalen,most = 0; if ( (msgobj= jarray(&n,json,"messages")) != 0 ) { for (i=0; i