Browse Source

test

release/v0.1
jl777 8 years ago
parent
commit
cecfcd2bcc
  1. 36
      basilisk/basilisk_swap.c

36
basilisk/basilisk_swap.c

@ -476,29 +476,35 @@ int32_t basilisk_verify_pubpair(int32_t *wrongfirstbytep,struct basilisk_swap *s
int32_t basilisk_verify_privkeys(struct supernet_info *myinfo,struct basilisk_swap *swap,uint8_t *data,int32_t datalen) int32_t basilisk_verify_privkeys(struct supernet_info *myinfo,struct basilisk_swap *swap,uint8_t *data,int32_t datalen)
{ {
int32_t i,j,wrongfirstbyte=0,errs=0,len = 0; bits256 otherpriv,pubi; uint8_t secret160[20],otherpubkey[33]; uint64_t txid; int32_t i,j,wrongfirstbyte=0,errs=0,len = 0; bits256 otherpriv,pubi; uint8_t secret160[20],otherpubkey[33]; uint64_t txid;
printf("verify privkeys choosei.%d otherchoosei.%d datalen.%d vs %d\n",swap->choosei,swap->otherchoosei,datalen,(int32_t)sizeof(swap->privkeys)+20); printf("verify privkeys choosei.%d otherchoosei.%d datalen.%d vs %d\n",swap->choosei,swap->otherchoosei,datalen,(int32_t)sizeof(swap->privkeys)+20+32);
if ( swap->cutverified == 0 && swap->otherchoosei >= 0 && datalen == sizeof(swap->privkeys)+20 ) if ( swap->cutverified == 0 && swap->otherchoosei >= 0 && datalen == sizeof(swap->privkeys)+20+32 )
{ {
for (i=errs=0; i<sizeof(swap->privkeys)/sizeof(*swap->privkeys); i++) for (i=errs=0; i<sizeof(swap->privkeys)/sizeof(*swap->privkeys); i++)
{ {
for (j=0; j<32; j++) for (j=0; j<32; j++)
otherpriv.bytes[j] = data[len++]; otherpriv.bytes[j] = data[len++];
pubi = bitcoin_pubkey33(myinfo->ctx,otherpubkey,otherpriv);
calc_rmd160_sha256(secret160,otherpriv.bytes,sizeof(otherpriv));
memcpy(&txid,secret160,sizeof(txid));
if ( i != swap->choosei ) if ( i != swap->choosei )
{
pubi = bitcoin_pubkey33(myinfo->ctx,otherpubkey,otherpriv);
calc_rmd160_sha256(secret160,otherpriv.bytes,sizeof(otherpriv));
memcpy(&txid,secret160,sizeof(txid));
errs += basilisk_verify_pubpair(&wrongfirstbyte,swap,i,otherpubkey[0],pubi,txid); errs += basilisk_verify_pubpair(&wrongfirstbyte,swap,i,otherpubkey[0],pubi,txid);
}
} }
if ( errs == 0 && wrongfirstbyte == 0 ) if ( errs == 0 && wrongfirstbyte == 0 )
{ {
swap->cutverified = 1, printf("CUT VERIFIED\n"); swap->cutverified = 1, printf("CUT VERIFIED\n");
if ( swap->iambob != 0 ) if ( swap->iambob != 0 )
{ {
for (i=0; i<32; i++)
swap->pubAm.bytes[i] = data[len++];
for (i=0; i<20; i++) for (i=0; i<20; i++)
swap->secretAm[i] = data[len++]; swap->secretAm[i] = data[len++];
} }
else else
{ {
for (i=0; i<32; i++)
swap->pubBn.bytes[i] = data[len++];
for (i=0; i<20; i++) for (i=0; i<20; i++)
swap->secretBn[i] = data[len++]; swap->secretBn[i] = data[len++];
} }
@ -621,11 +627,15 @@ void basilisk_swaploop(void *_swap)
} }
if ( swap->iambob != 0 ) if ( swap->iambob != 0 )
{ {
for (i=0; i<32; i++)
data[datalen++] = swap->pubBn.bytes[i];
for (i=0; i<20; i++) for (i=0; i<20; i++)
data[datalen++] = swap->secretBn[i]; data[datalen++] = swap->secretBn[i];
} }
else else
{ {
for (i=0; i<32; i++)
data[datalen++] = swap->pubAm.bytes[i];
for (i=0; i<20; i++) for (i=0; i<20; i++)
data[datalen++] = swap->secretAm[i]; data[datalen++] = swap->secretAm[i];
} }
@ -643,9 +653,15 @@ void basilisk_swaploop(void *_swap)
for (i=0; i<20; i++) for (i=0; i<20; i++)
printf("%02x",swap->secretAm[i]); printf("%02x",swap->secretAm[i]);
printf(" <- secretAm\n"); printf(" <- secretAm\n");
for (i=0; i<32; i++)
printf("%02x",swap->pubAm.bytes[i]);
printf(" <- pubAm\n");
for (i=0; i<20; i++) for (i=0; i<20; i++)
printf("%02x",swap->secretBn[i]); printf("%02x",swap->secretBn[i]);
printf(" <- secretBn\n"); printf(" <- secretBn\n");
for (i=0; i<32; i++)
printf("%02x",swap->pubBn.bytes[i]);
printf(" <- pubBn\n");
for (i=0; i<32; i++) for (i=0; i<32; i++)
printf("%02x",swap->pubA0.bytes[i]); printf("%02x",swap->pubA0.bytes[i]);
printf(" <- pubA0\n"); printf(" <- pubA0\n");
@ -672,7 +688,13 @@ void basilisk_swaploop(void *_swap)
} }
else else
{ {
swap->alicepayment.spendlen = basilisk_alicescript(swap->alicepayment.spendscript,0,swap->alicepayment.destaddr,swap->alicepayment.coin->chain->p2shtype,swap->pubAm,swap->pubBn);
basilisk_rawtx_gen("alicepayment",myinfo,swap,1,&swap->alicepayment,swap->alicepayment.locktime,swap->alicepayment.spendscript,swap->alicepayment.spendlen,swap->alicepayment.coin->chain->txfee,1);
if ( swap->alicepayment.txbytes == 0 || swap->alicepayment.spendlen == 0 )
{
printf("error alice generating payment.%d\n",swap->alicepayment.spendlen);
break;
}
} }
if ( basilisk_rawtx_gen("myfee",myinfo,swap,1,&swap->myfee,0,swap->myfee.spendscript,swap->myfee.spendlen,swap->myfee.coin->chain->txfee,1) == 0 ) if ( basilisk_rawtx_gen("myfee",myinfo,swap,1,&swap->myfee,0,swap->myfee.spendscript,swap->myfee.spendlen,swap->myfee.coin->chain->txfee,1) == 0 )
swap->statebits |= basilisk_swapdata_rawtxsend(myinfo,swap,0x80,data,maxlen,&swap->myfee,0x40); swap->statebits |= basilisk_swapdata_rawtxsend(myinfo,swap,0x80,data,maxlen,&swap->myfee,0x40);
@ -744,8 +766,6 @@ void basilisk_swaploop(void *_swap)
} }
else else
{ {
swap->alicepayment.spendlen = basilisk_alicescript(swap->alicepayment.spendscript,0,swap->alicepayment.destaddr,swap->alicepayment.coin->chain->p2shtype,swap->pubAm,swap->pubBn);
basilisk_rawtx_gen("alicepayment",myinfo,swap,1,&swap->alicepayment,swap->alicepayment.locktime,swap->alicepayment.spendscript,swap->alicepayment.spendlen,swap->alicepayment.coin->chain->txfee,1);
// [BLOCKING: depfound] Alice waits for deposit to confirm and sends altpayment // [BLOCKING: depfound] Alice waits for deposit to confirm and sends altpayment
if ( (swap->statebits & 0x200) == 0 ) if ( (swap->statebits & 0x200) == 0 )
{ {

Loading…
Cancel
Save