test
This commit is contained in:
@@ -950,23 +950,42 @@ uint256 komodo_kvprivkey(uint256 *pubkeyp,char *passphrase)
|
|||||||
return(privkey);
|
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);
|
vcalc_sha256(0,hash.bytes,buf,len);
|
||||||
otherpub = curve25519(hash,curve25519_basepoint9());
|
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<len; i++)
|
||||||
|
printf("%02x",buf[i]);
|
||||||
|
printf(" -> ");
|
||||||
|
for (i=0; i<len; i++)
|
||||||
|
printf("%02x",((uint8_t *)&sig)[i]);
|
||||||
|
printf(" -> ");
|
||||||
|
for (i=0; i<32; i++)
|
||||||
|
printf("%02x",((uint8_t *)&checksig)[i]);
|
||||||
|
printf(" checksig\n");
|
||||||
memcpy(&usig,&sig,sizeof(usig));
|
memcpy(&usig,&sig,sizeof(usig));
|
||||||
return(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 )
|
if ( memcmp(&pubkey,&zeroes,sizeof(pubkey)) != 0 )
|
||||||
{
|
{
|
||||||
vcalc_sha256(0,hash.bytes,buf,len);
|
vcalc_sha256(0,hash.bytes,buf,len);
|
||||||
checksig = curve25519_shared(hash,*(bits256 *)&pubkey);
|
checksig = curve25519_shared(hash,*(bits256 *)&pubkey);
|
||||||
|
int32_t i; for (i=0; i<len; i++)
|
||||||
|
printf("%02x",buf[i]);
|
||||||
|
printf(" -> ");
|
||||||
|
for (i=0; i<32; i++)
|
||||||
|
printf("%02x",((uint8_t *)&checksig)[i]);
|
||||||
|
printf(" sig\n");
|
||||||
if ( memcmp(&checksig,&sig,sizeof(sig)) != 0 )
|
if ( memcmp(&checksig,&sig,sizeof(sig)) != 0 )
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
printf("flags.%d (%s) n.%d\n",flags,params[2].get_str().c_str(),n);
|
||||||
} else flags = 0;
|
} else flags = 0;
|
||||||
if ( n >= 4 )
|
if ( n >= 4 )
|
||||||
{
|
privkey = komodo_kvprivkey(&pubkey,(char *)(n >= 4 ? params[3].get_str().c_str() : "password"));
|
||||||
privkey = komodo_kvprivkey(&pubkey,(char *)params[3].get_str().c_str());
|
haveprivkey = 1;
|
||||||
haveprivkey = 1;
|
flags |= 1;
|
||||||
flags |= 1;
|
for (i=0; i<32; i++)
|
||||||
for (i=0; i<32; i++)
|
printf("%02x",((uint8_t *)&privkey)[i]);
|
||||||
printf("%02x",((uint8_t *)&privkey)[i]);
|
printf(" priv, ");
|
||||||
printf(" priv, ");
|
for (i=0; i<32; i++)
|
||||||
for (i=0; i<32; i++)
|
printf("%02x",((uint8_t *)&pubkey)[i]);
|
||||||
printf("%02x",((uint8_t *)&pubkey)[i]);
|
printf(" pubkey, privkey derived from (%s)\n",(char *)params[3].get_str().c_str());
|
||||||
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());
|
//printf("flags.%d (%s)\n",flags,params[2].get_str().c_str());
|
||||||
}
|
|
||||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
if ( (keylen= (int32_t)strlen(params[0].get_str().c_str())) > 0 )
|
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;
|
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)));
|
ret.push_back(Pair("coin",(char *)(ASSETCHAINS_SYMBOL[0] == 0 ? "KMD" : ASSETCHAINS_SYMBOL)));
|
||||||
height = chainActive.Tip()->nHeight;
|
height = chainActive.Tip()->nHeight;
|
||||||
if ( memcmp(&zeroes,&refpubkey,sizeof(refpubkey)) != 0 )
|
if ( memcmp(&zeroes,&refpubkey,sizeof(refpubkey)) != 0 )
|
||||||
|
|||||||
Reference in New Issue
Block a user