From 87f82355d0cc10f645e50d8ff16f670a81f6c887 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 22 Jan 2017 13:50:47 +0200 Subject: [PATCH] test --- src/komodo_curve25519.h | 182 ---------------------------------------- src/komodo_kv.h | 10 +-- src/komodo_utils.h | 3 - 3 files changed, 5 insertions(+), 190 deletions(-) diff --git a/src/komodo_curve25519.h b/src/komodo_curve25519.h index 1b97328b2..1353628a2 100644 --- a/src/komodo_curve25519.h +++ b/src/komodo_curve25519.h @@ -969,186 +969,4 @@ int32_t komodo_kvsigverify(uint8_t *buf,int32_t len,bits256 pubkey,bits256 sig) else return(0); } -/* -#include - -bits256 GENESIS_PUBKEY,GENESIS_PRIVKEY; - -bits256 acct777_pubkey(bits256 privkey) -{ - static uint8_t basepoint[32] = {9}; - bits256 pubkey; - privkey.bytes[0] &= 248, privkey.bytes[31] &= 127, privkey.bytes[31] |= 64; - curve25519_donna(pubkey.bytes,privkey.bytes,basepoint); - return(pubkey); -} - -uint64_t acct777_nxt64bits(bits256 pubkey) -{ - bits256 acct; - vcalc_sha256(0,acct.bytes,pubkey.bytes,sizeof(pubkey)); - return(acct.txid); -} - -bits256 acct777_msgprivkey(uint8_t *data,int32_t datalen) -{ - bits256 hash; - vcalc_sha256(0,hash.bytes,data,datalen); - return(hash); -} - -bits256 acct777_msgpubkey(uint8_t *data,int32_t datalen) -{ - return(acct777_pubkey(acct777_msgprivkey(data,datalen))); -} - -bits256 acct777_hashiter(bits256 privkey,bits256 pubkey,int32_t lockdays,uint8_t chainlen) -{ - uint16_t lockseed,signlen = 0; uint8_t signbuf[16]; bits256 shared,lockhash; - lockseed = (chainlen & 0x7f) | (lockdays << 7); - signlen = 0, signbuf[signlen++] = lockseed & 0xff, signbuf[signlen++] = (lockseed >> 8) & 0xff; - - privkey.bytes[0] &= 248, privkey.bytes[31] &= 127, privkey.bytes[31] |= 64; - shared = curve25519(privkey,pubkey); - vcalc_sha256cat(lockhash.bytes,shared.bytes,sizeof(shared),signbuf,signlen); - return(lockhash); -} - -bits256 acct777_lockhash(bits256 pubkey,int32_t lockdays,uint8_t chainlen) -{ - bits256 lockhash = GENESIS_PRIVKEY; - while ( chainlen > 0 ) - lockhash = acct777_hashiter(lockhash,pubkey,lockdays,chainlen--); - return(lockhash); -} - -bits256 acct777_invoicehash(bits256 *invoicehash,uint16_t lockdays,uint8_t chainlen) -{ - int32_t i; bits256 lockhash,privkey; - OS_randombytes(privkey.bytes,sizeof(privkey)); // both privkey and pubkey are sensitive. pubkey allows verification, privkey proves owner - lockhash = privkey; - for (i=0; isigbits.bytes), len += sizeof(bits256); - iguana_rwbignum(rwflag,&serialized[len],sizeof(bits256),sig->pubkey.bytes),len += sizeof(bits256); - iguana_rwnum(rwflag,&serialized[len],sizeof(sig->signer64bits),&sig->signer64bits),len += sizeof(sig->signer64bits); - iguana_rwnum(rwflag,&serialized[len],sizeof(sig->timestamp),&sig->timestamp),len += sizeof(sig->timestamp); - iguana_rwnum(rwflag,&serialized[len],sizeof(sig->allocsize),&sig->allocsize),len += sizeof(sig->allocsize); -} - -int32_t acct777_sigcheck(struct acct777_sig *sig) -{ -#define IGUANA_GENESIS 1453075200 -#define IGUANA_MAXPACKETSIZE (1024 * 1024 * 2) -#define TEN_YEARS (10 * 365 * 24 * 3600) - if ( sig->allocsize < sizeof(*sig) || sig->allocsize > IGUANA_MAXPACKETSIZE ) - { - //printf("acct777_sign: invalid datalen.%d hex.%08x\n",sig->allocsize,sig->allocsize); - return(-1); - } - if ( sig->timestamp < IGUANA_GENESIS || sig->timestamp > (long)IGUANA_GENESIS+TEN_YEARS ) - { - printf("acct777_sign: invalid timestamp.%u (%u %u)\n",sig->timestamp,IGUANA_GENESIS,IGUANA_GENESIS+TEN_YEARS); - return(-1); - } - return(sig->allocsize); -} - -uint64_t acct777_sign(struct acct777_sig *sig,bits256 privkey,bits256 otherpubkey,uint32_t timestamp,uint8_t *serialized,int32_t datalen) -{ - bits256 pubkey; bits256 shared; uint8_t buf[sizeof(*sig)]; - pubkey = acct777_pubkey(privkey); - if ( memcmp(sig->pubkey.bytes,otherpubkey.bytes,sizeof(bits256)) != 0 ) - { - //char str[65],str2[65]; - //printf("set sig fields.(%s) != (%s)\n",bits256_str(str,sig->pubkey),bits256_str(str2,otherpubkey)); - sig->pubkey = pubkey; - sig->timestamp = timestamp; - sig->allocsize = (int32_t)(datalen + sizeof(*sig)); - sig->signer64bits = acct777_nxt64bits(sig->pubkey); - } - sig->sigbits = shared = curve25519(privkey,otherpubkey); - if ( acct777_sigcheck(sig) < 0 ) - return(0); - memset(buf,0,sizeof(buf)); - acct777_rwsig(1,buf,sig); - //int32_t i; for (i=0; iallocsize,(long long)sig->signer64bits,sig->timestamp); - //char str[65]; printf("shared.(%s) crc.%u datalen.%d\n",bits256_str(str,shared),calc_crc32(0,buf,sizeof(buf)),datalen); - vcalc_sha256cat(sig->sigbits.bytes,buf,sizeof(buf),serialized,datalen); - //printf(" calcsig.%llx pubkey.%llx signer.%llu | t%u crc.%08x len.%d shared.%llx <- %llx * %llx\n",(long long)sig->sigbits.txid,(long long)sig->pubkey.txid,(long long)sig->signer64bits,timestamp,calc_crc32(0,serialized,datalen),datalen,(long long)shared.txid,(long long)privkey.txid,(long long)otherpubkey.txid); - return(sig->signer64bits); -} - -uint64_t acct777_validate(struct acct777_sig *sig,bits256 privkey,bits256 pubkey) -{ - struct acct777_sig checksig; uint64_t signerbits; int32_t datalen; uint8_t *serialized; - datalen = (int32_t)(sig->allocsize - sizeof(*sig)); - checksig = *sig; -#if defined(_M_X64) - serialized = (uint8_t *)((unsigned char *)sig + sizeof(*sig)); -#else - serialized = (uint8_t *)((long)sig + sizeof(*sig)); -#endif - //{ int32_t i; for (i=0; itimestamp,serialized,datalen); - if ( memcmp(checksig.sigbits.bytes,sig->sigbits.bytes,sizeof(checksig.sigbits)) != 0 ) - { - //char *bits256_str(); - //char str[65],str2[65]; printf("sig compare error using sig->pub from %llu\n>>>>>>>> sig.(%s) vs (%s)",(long long)acct777_nxt64bits(sig->pubkey),bits256_str(str,checksig.sigbits),bits256_str(str2,sig->sigbits)); - return(0); - } - signerbits = acct777_nxt64bits(sig->pubkey); - if ( signerbits == checksig.signer64bits ) - return(signerbits); - else return(0); -} - -uint64_t acct777_signtx(struct acct777_sig *sig,bits256 privkey,uint32_t timestamp,uint8_t *data,int32_t datalen) -{ - return(acct777_sign(sig,privkey,acct777_msgpubkey(data,datalen),timestamp,data,datalen)); -} - -uint64_t acct777_swaptx(bits256 privkey,struct acct777_sig *sig,uint32_t timestamp,uint8_t *data,int32_t datalen) - { - uint64_t othernxt; - if ( (othernxt= acct777_validate(sig)) != sig->signer64bits ) - return(0); - return(acct777_sign(sig,privkey,acct777_msgpubkey(data,datalen),timestamp,data,datalen)); - }*/ - -int32_t _SuperNET_cipher(uint8_t nonce[crypto_box_NONCEBYTES],uint8_t *cipher,uint8_t *message,int32_t len,bits256 destpub,bits256 srcpriv,uint8_t *buf) -{ - memset(cipher,0,len+crypto_box_ZEROBYTES); - memset(buf,0,crypto_box_ZEROBYTES); - memcpy(buf+crypto_box_ZEROBYTES,message,len); - crypto_box(cipher,buf,len+crypto_box_ZEROBYTES,nonce,destpub.bytes,srcpriv.bytes); - return(len + crypto_box_ZEROBYTES); -} - -uint8_t *_SuperNET_decipher(uint8_t nonce[crypto_box_NONCEBYTES],uint8_t *cipher,uint8_t *message,int32_t len,bits256 srcpub,bits256 mypriv) -{ - int32_t err; - if ( (err= crypto_box_open(message,cipher,len,nonce,srcpub.bytes,mypriv.bytes)) == 0 ) - { - message += crypto_box_ZEROBYTES; - len -= crypto_box_ZEROBYTES; - return(message); - } - return(0); -} - -//#undef force_inline - #endif diff --git a/src/komodo_kv.h b/src/komodo_kv.h index ad8bb1ee4..b77e2f58a 100644 --- a/src/komodo_kv.h +++ b/src/komodo_kv.h @@ -41,7 +41,7 @@ int32_t komodo_kvsearch(uint256 *pubkeyp,int32_t current_height,uint32_t *flagsp { *heightp = ptr->height; *flagsp = ptr->flags; - memcpy(pubkeyp,ptr->pubkey,sizeof(*pubkeyp)); + memcpy(pubkeyp,&ptr->pubkey,sizeof(*pubkeyp)); if ( (retval= ptr->valuesize) != 0 ) memcpy(value,ptr->value,retval); } @@ -85,8 +85,8 @@ uint64_t komodo_kvfee(uint32_t flags,int32_t opretlen,int32_t keylen) void komodo_kvupdate(uint8_t *opretbuf,int32_t opretlen,uint64_t value) { - static bits256 zeroes; - uint32_t flags; bits256 pubkey,sig; int32_t i,transferflag,hassig,coresize,haspubkey,height,kvheight; uint16_t keylen,valuesize,newflag = 0; uint8_t *key,*valueptr,valuebuf[IGUANA_MAXSCRIPTSIZE]; struct komodo_kv *ptr; char *transferpubstr; + static uint256 zeroes; + uint32_t flags; bits256 pubkey,refpubkey,sig; int32_t i,transferflag,hassig,coresize,haspubkey,height,kvheight; uint16_t keylen,valuesize,newflag = 0; uint8_t *key,*valueptr,valuebuf[IGUANA_MAXSCRIPTSIZE]; struct komodo_kv *ptr; char *transferpubstr; iguana_rwnum(0,&opretbuf[1],sizeof(keylen),&keylen); iguana_rwnum(0,&opretbuf[3],sizeof(valuesize),&valuesize); iguana_rwnum(0,&opretbuf[5],sizeof(height),&height); @@ -112,7 +112,7 @@ void komodo_kvupdate(uint8_t *opretbuf,int32_t opretlen,uint64_t value) for (i=0; i<32; i++) ((uint8_t *)&sig)[i] = opretbuf[coresize+sizeof(bits256)+i]; } - if ( komodo_kvsearch(&refpubkey,height,&flags,&kvheight,valuebuf,key,keylen) >= 0 ) + if ( komodo_kvsearch((uint256 *)&refpubkey,height,&flags,&kvheight,valuebuf,key,keylen) >= 0 ) { if ( memcmp(&zeroes,&refpubkey,sizeof(refpubkey)) != 0 ) { @@ -131,7 +131,7 @@ void komodo_kvupdate(uint8_t *opretbuf,int32_t opretlen,uint64_t value) if ( (ptr->flags & KOMODO_KVPROTECTED) != 0 && memcmp(&zeroes,&refpubkey,sizeof(refpubkey)) != 0 ) { transferpubstr = (char *)&value[strlen((char *)"transfer:")]; - if ( strncmp((char *)"transfer:",value,strlen((char *)"transfer:")) == 0 && is_hexstr(transferpubstr,0) == 64 ) + if ( strncmp((char *)"transfer:",(char *)valueptr,strlen((char *)"transfer:")) == 0 && is_hexstr(transferpubstr,0) == 64 ) { transferflag = 1; printf("transfer.(%s) to [%s]\n",key,transferpubstr); diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 57171e2cb..9ab9178b3 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -30,9 +30,6 @@ typedef struct queue char name[64],initflag; } queue_t; -union _bits256 { uint8_t bytes[32]; uint16_t ushorts[16]; uint32_t uints[8]; uint64_t ulongs[4]; uint64_t txid; }; -typedef union _bits256 bits256; - #include "mini-gmp.c" #define CRYPTO777_PUBSECPSTR "020e46e79a2a8d12b9b5d12c7a91adb4e454edfae43c0a0cb805427d2ac7613fd9"