From 66dc0c54b422f2f0aaa589eeee8632f4a49cc0f5 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 22 Jan 2017 20:03:15 +0200 Subject: [PATCH] test --- src/komodo_curve25519.h | 29 ++++++++++++++++++++++++----- src/wallet/rpcwallet.cpp | 28 +++++++++++++--------------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/komodo_curve25519.h b/src/komodo_curve25519.h index 8bca4e7fb..906c343a5 100644 --- a/src/komodo_curve25519.h +++ b/src/komodo_curve25519.h @@ -950,23 +950,42 @@ uint256 komodo_kvprivkey(uint256 *pubkeyp,char *passphrase) return(privkey); } -uint256 komodo_kvsig(uint8_t *buf,int32_t len,uint256 privkey) +uint256 komodo_kvsig(uint8_t *buf,int32_t len,uint256 _privkey) { - bits256 sig,hash,otherpub; uint256 usig; + bits256 sig,hash,otherpub,checksig,pubkey,privkey; uint256 usig; + memcpy(&privkey,&_privkey,sizeof(privkey)); vcalc_sha256(0,hash.bytes,buf,len); otherpub = curve25519(hash,curve25519_basepoint9()); - sig = curve25519_shared(*(bits256 *)&privkey,otherpub); + pubkey = curve25519(privkey,curve25519_basepoint9()); + sig = curve25519_shared(privkey,otherpub); + checksig = curve25519_shared(hash,pubkey); + int32_t i; for (i=0; i "); + for (i=0; i "); + for (i=0; i<32; i++) + printf("%02x",((uint8_t *)&checksig)[i]); + printf(" checksig\n"); memcpy(&usig,&sig,sizeof(usig)); return(usig); } -int32_t komodo_kvsigverify(uint8_t *buf,int32_t len,uint256 pubkey,uint256 sig) +int32_t komodo_kvsigverify(uint8_t *buf,int32_t len,uint256 _pubkey,uint256 sig) { - bits256 hash,checksig; static uint256 zeroes; + bits256 hash,checksig,pubkey; static uint256 zeroes; + memcpy(&pubkey,&_pubkey,sizeof(pubkey)); if ( memcmp(&pubkey,&zeroes,sizeof(pubkey)) != 0 ) { vcalc_sha256(0,hash.bytes,buf,len); checksig = curve25519_shared(hash,*(bits256 *)&pubkey); + int32_t i; for (i=0; i "); + for (i=0; i<32; i++) + printf("%02x",((uint8_t *)&checksig)[i]); + printf(" sig\n"); if ( memcmp(&checksig,&sig,sizeof(sig)) != 0 ) return(-1); } diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 9395ab64c..4414452a8 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -514,18 +514,16 @@ Value kvupdate(const Array& params, bool fHelp) printf("flags.%d (%s) n.%d\n",flags,params[2].get_str().c_str(),n); } else flags = 0; if ( n >= 4 ) - { - privkey = komodo_kvprivkey(&pubkey,(char *)params[3].get_str().c_str()); - haveprivkey = 1; - flags |= 1; - for (i=0; i<32; i++) - printf("%02x",((uint8_t *)&privkey)[i]); - printf(" priv, "); - for (i=0; i<32; i++) - printf("%02x",((uint8_t *)&pubkey)[i]); - printf(" pubkey, privkey derived from (%s)\n",(char *)params[3].get_str().c_str()); + privkey = komodo_kvprivkey(&pubkey,(char *)(n >= 4 ? params[3].get_str().c_str() : "password")); + haveprivkey = 1; + flags |= 1; + for (i=0; i<32; i++) + printf("%02x",((uint8_t *)&privkey)[i]); + printf(" priv, "); + for (i=0; i<32; i++) + printf("%02x",((uint8_t *)&pubkey)[i]); + printf(" pubkey, privkey derived from (%s)\n",(char *)params[3].get_str().c_str()); //printf("flags.%d (%s)\n",flags,params[2].get_str().c_str()); - } LOCK2(cs_main, pwalletMain->cs_wallet); if ( (keylen= (int32_t)strlen(params[0].get_str().c_str())) > 0 ) { @@ -546,11 +544,11 @@ Value kvupdate(const Array& params, bool fHelp) return ret; } } - sig = komodo_kvsig(keyvalue,keylen+refvaluesize,privkey); - for (i=0; i<32; i++) - printf("%02x",((uint8_t *)&sig)[i]); - printf(" sig for keylen.%d + valuesize.%d\n",keylen,refvaluesize); } + sig = komodo_kvsig(keyvalue,keylen+refvaluesize,privkey); + for (i=0; i<32; i++) + printf("%02x",((uint8_t *)&sig)[i]); + printf(" sig for keylen.%d + valuesize.%d\n",keylen,refvaluesize); ret.push_back(Pair("coin",(char *)(ASSETCHAINS_SYMBOL[0] == 0 ? "KMD" : ASSETCHAINS_SYMBOL))); height = chainActive.Tip()->nHeight; if ( memcmp(&zeroes,&refpubkey,sizeof(refpubkey)) != 0 )