|
|
@ -245,13 +245,13 @@ uint8_t CClibCCpriv[32] = { 0x57, 0xcf, 0x49, 0x71, 0x7d, 0xb4, 0x15, 0x1b, 0x4f |
|
|
|
|
|
|
|
int32_t CClib_initcp(struct CCcontract_info *cp,uint8_t evalcode) |
|
|
|
{ |
|
|
|
CPubKey pk; uint8_t pub33[33],check33[33]; char CCaddr[64],checkaddr[64],str[67]; |
|
|
|
CPubKey pk; int32_t i; uint8_t pub33[33],check33[33],hash[32]; char CCaddr[64],checkaddr[64],str[67]; |
|
|
|
cp->evalcode = evalcode; |
|
|
|
cp->ismyvin = IsCClibInput; |
|
|
|
memcpy(cp->CCpriv,CClibCCpriv,32); |
|
|
|
if ( evalcode == EVAL_FIRSTUSER ) // eventually make a hashchain for each evalcode
|
|
|
|
{ |
|
|
|
cp->evalcode = evalcode; |
|
|
|
cp->ismyvin = IsCClibInput; |
|
|
|
strcpy(cp->CChexstr,CClibCChexstr); |
|
|
|
memcpy(cp->CCpriv,CClibCCpriv,32); |
|
|
|
decode_hex(pub33,33,cp->CChexstr); |
|
|
|
pk = buf2pk(pub33); |
|
|
|
Getscriptaddress(cp->normaladdr,CScript() << ParseHex(HexStr(pk)) << OP_CHECKSIG); |
|
|
@ -267,6 +267,22 @@ int32_t CClib_initcp(struct CCcontract_info *cp,uint8_t evalcode) |
|
|
|
} else fprintf(stderr,"CClib_initcp mismatched privkey -> addr %s vs %s\n",checkaddr,cp->normaladdr); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
for (i=EVAL_FIRSTUSER; i<evalcode; i++) |
|
|
|
{ |
|
|
|
vcalc_sha256(0,hash,cp->CCpriv,32); |
|
|
|
memcpy(cp->CCpriv,hash,32); |
|
|
|
} |
|
|
|
if ( priv2addr(cp->normaladdr,pub33,cp->CCpriv) != 0 ) |
|
|
|
{ |
|
|
|
pk = buf2pk(pub33); |
|
|
|
for (i=0; i<33; i++) |
|
|
|
sprintf(&cp->CChexstr[i*2],"%02x",pub33[i]); |
|
|
|
cp->CChexstr[i*2] = 0; |
|
|
|
GetCCaddress(cp,cp->unspendableCCaddr,pk); |
|
|
|
} |
|
|
|
} |
|
|
|
return(-1); |
|
|
|
} |
|
|
|
|
|
|
|