jl777 7 years ago
parent
commit
9b705a3509
  1. 20
      iguana/exchanges/LP_bitcoin.c
  2. 4
      iguana/exchanges/LP_coins.c
  3. 2
      iguana/exchanges/LP_include.h
  4. 34
      iguana/exchanges/LP_privkey.c
  5. 12
      iguana/exchanges/LP_transaction.c
  6. 4
      iguana/exchanges/mm.c

20
iguana/exchanges/LP_bitcoin.c

@ -2062,7 +2062,7 @@ int32_t bitcoin_addr2rmd160(char *symbol,uint8_t taddr,uint8_t *addrtypep,uint8_
if ( (len= bitcoin_base58decode(buf,coinaddr)) >= 4 ) if ( (len= bitcoin_base58decode(buf,coinaddr)) >= 4 )
{ {
// validate with trailing hash, then remove hash // validate with trailing hash, then remove hash
hash = bits256_calcaddrhash(0,buf,20+offset); hash = bits256_calcaddrhash(symbol,buf,20+offset);
*addrtypep = (taddr == 0) ? *buf : buf[1]; *addrtypep = (taddr == 0) ? *buf : buf[1];
memcpy(rmd160,buf+offset,20); memcpy(rmd160,buf+offset,20);
if ( (buf[20+offset]&0xff) == hash.bytes[31] && (buf[21+offset]&0xff) == hash.bytes[30] &&(buf[22+offset]&0xff) == hash.bytes[29] && (buf[23+offset]&0xff) == hash.bytes[28] ) if ( (buf[20+offset]&0xff) == hash.bytes[31] && (buf[21+offset]&0xff) == hash.bytes[30] &&(buf[22+offset]&0xff) == hash.bytes[29] && (buf[23+offset]&0xff) == hash.bytes[28] )
@ -2184,7 +2184,7 @@ int32_t base58encode_checkbuf(uint8_t taddr,uint8_t addrtype,uint8_t *data,int32
return(data_len + 4 + offset); return(data_len + 4 + offset);
} }
int32_t bitcoin_wif2priv(uint8_t wiftaddr,uint8_t *addrtypep,bits256 *privkeyp,char *wifstr) int32_t bitcoin_wif2priv(char *symbol,uint8_t wiftaddr,uint8_t *addrtypep,bits256 *privkeyp,char *wifstr)
{ {
int32_t offset,len = -1; bits256 hash; uint8_t buf[256],*ptr; int32_t offset,len = -1; bits256 hash; uint8_t buf[256],*ptr;
offset = 1 + (wiftaddr != 0); offset = 1 + (wiftaddr != 0);
@ -2211,7 +2211,7 @@ int32_t bitcoin_wif2priv(uint8_t wiftaddr,uint8_t *addrtypep,bits256 *privkeyp,c
printf("pbuf from %d\n",len); printf("pbuf from %d\n",len);
len = 38; len = 38;
}*/ }*/
hash = bits256_doublesha256(0,ptr,len - 4); hash = bits256_calcaddrhash(symbol,ptr,len - 4);
*addrtypep = (wiftaddr == 0) ? *ptr : ptr[1]; *addrtypep = (wiftaddr == 0) ? *ptr : ptr[1];
if ( (ptr[len - 4]&0xff) == hash.bytes[31] && (ptr[len - 3]&0xff) == hash.bytes[30] &&(ptr[len - 2]&0xff) == hash.bytes[29] && (ptr[len - 1]&0xff) == hash.bytes[28] ) if ( (ptr[len - 4]&0xff) == hash.bytes[31] && (ptr[len - 3]&0xff) == hash.bytes[30] &&(ptr[len - 2]&0xff) == hash.bytes[29] && (ptr[len - 1]&0xff) == hash.bytes[28] )
{ {
@ -2237,14 +2237,14 @@ int32_t bitcoin_wif2addr(void *ctx,char *symbol,uint8_t wiftaddr,uint8_t taddr,u
if ( strcmp(symbol,"BCH") == 0 ) if ( strcmp(symbol,"BCH") == 0 )
symbol = "BTC"; symbol = "BTC";
coinaddr[0] = 0; coinaddr[0] = 0;
if ( bitcoin_wif2priv(wiftaddr,&addrtype,&privkey,wifstr) == sizeof(privkey) ) if ( bitcoin_wif2priv(symbol,wiftaddr,&addrtype,&privkey,wifstr) == sizeof(privkey) )
{ {
bitcoin_priv2pub(ctx,symbol,pubkey33,coinaddr,privkey,taddr,pubtype); bitcoin_priv2pub(ctx,symbol,pubkey33,coinaddr,privkey,taddr,pubtype);
} }
return(-1); return(-1);
} }
int32_t bitcoin_priv2wif(uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8_t addrtype) int32_t bitcoin_priv2wif(char *symbol,uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8_t addrtype)
{ {
uint8_t data[128]; int32_t offset,len = 32; uint8_t data[128]; int32_t offset,len = 32;
if ( wiftaddr != 0 ) if ( wiftaddr != 0 )
@ -2269,7 +2269,7 @@ int32_t bitcoin_priv2wif(uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8_t a
if ( 0 ) if ( 0 )
{ {
uint8_t checktype; bits256 checkpriv; char str[65],str2[65]; uint8_t checktype; bits256 checkpriv; char str[65],str2[65];
if ( bitcoin_wif2priv(wiftaddr,&checktype,&checkpriv,wifstr) == sizeof(bits256) ) if ( bitcoin_wif2priv(symbol,wiftaddr,&checktype,&checkpriv,wifstr) == sizeof(bits256) )
{ {
if ( checktype != addrtype || bits256_cmp(checkpriv,privkey) != 0 ) if ( checktype != addrtype || bits256_cmp(checkpriv,privkey) != 0 )
printf("(%s) -> wif.(%s) addrtype.%02x -> %02x (%s)\n",bits256_str(str,privkey),wifstr,addrtype,checktype,bits256_str(str2,checkpriv)); printf("(%s) -> wif.(%s) addrtype.%02x -> %02x (%s)\n",bits256_str(str,privkey),wifstr,addrtype,checktype,bits256_str(str2,checkpriv));
@ -2278,7 +2278,7 @@ int32_t bitcoin_priv2wif(uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8_t a
return((int32_t)strlen(wifstr)); return((int32_t)strlen(wifstr));
} }
int32_t bitcoin_priv2wiflong(uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8_t addrtype) int32_t bitcoin_priv2wiflong(char *symbol,uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8_t addrtype)
{ {
uint8_t data[128]; int32_t offset,len = 32; uint8_t data[128]; int32_t offset,len = 32;
offset = 1 + (wiftaddr != 0); offset = 1 + (wiftaddr != 0);
@ -2289,7 +2289,7 @@ int32_t bitcoin_priv2wiflong(uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8
if ( 0 ) if ( 0 )
{ {
uint8_t checktype; bits256 checkpriv; char str[65],str2[65]; uint8_t checktype; bits256 checkpriv; char str[65],str2[65];
if ( bitcoin_wif2priv(wiftaddr,&checktype,&checkpriv,wifstr) == sizeof(bits256) ) if ( bitcoin_wif2priv(symbol,wiftaddr,&checktype,&checkpriv,wifstr) == sizeof(bits256) )
{ {
if ( checktype != addrtype || bits256_cmp(checkpriv,privkey) != 0 ) if ( checktype != addrtype || bits256_cmp(checkpriv,privkey) != 0 )
printf("(%s) -> wif.(%s) addrtype.%02x -> %02x (%s)\n",bits256_str(str,privkey),wifstr,addrtype,checktype,bits256_str(str2,checkpriv)); printf("(%s) -> wif.(%s) addrtype.%02x -> %02x (%s)\n",bits256_str(str,privkey),wifstr,addrtype,checktype,bits256_str(str2,checkpriv));
@ -2298,11 +2298,11 @@ int32_t bitcoin_priv2wiflong(uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8
return((int32_t)strlen(wifstr)); return((int32_t)strlen(wifstr));
} }
char *_setVsigner(uint8_t wiftaddr,uint8_t pubtype,struct vin_info *V,int32_t ind,char *pubstr,char *wifstr) char *_setVsigner(char *symbol,uint8_t wiftaddr,uint8_t pubtype,struct vin_info *V,int32_t ind,char *pubstr,char *wifstr)
{ {
uint8_t addrtype; uint8_t addrtype;
decode_hex(V->signers[ind].pubkey,(int32_t)strlen(pubstr)/2,pubstr); decode_hex(V->signers[ind].pubkey,(int32_t)strlen(pubstr)/2,pubstr);
bitcoin_wif2priv(wiftaddr,&addrtype,&V->signers[ind].privkey,wifstr); bitcoin_wif2priv(symbol,wiftaddr,&addrtype,&V->signers[ind].privkey,wifstr);
if ( addrtype != pubtype ) if ( addrtype != pubtype )
return(clonestr("{\"error\":\"invalid wifA\"}")); return(clonestr("{\"error\":\"invalid wifA\"}"));
else return(0); else return(0);

4
iguana/exchanges/LP_coins.c

@ -218,8 +218,8 @@ cJSON *LP_coinjson(struct iguana_info *coin,int32_t showwif)
jaddstr(item,"coin",coin->symbol); jaddstr(item,"coin",coin->symbol);
if ( showwif != 0 ) if ( showwif != 0 )
{ {
bitcoin_priv2wif(coin->wiftaddr,wifstr,G.LP_privkey,coin->wiftype); bitcoin_priv2wif(coin->symbol,coin->wiftaddr,wifstr,G.LP_privkey,coin->wiftype);
bitcoin_wif2priv(coin->wiftaddr,&tmptype,&checkkey,wifstr); bitcoin_wif2priv(coin->symbol,coin->wiftaddr,&tmptype,&checkkey,wifstr);
if ( bits256_cmp(G.LP_privkey,checkkey) == 0 ) if ( bits256_cmp(G.LP_privkey,checkkey) == 0 )
jaddstr(item,"wif",wifstr); jaddstr(item,"wif",wifstr);
else jaddstr(item,"wif","error creating wif"); else jaddstr(item,"wif","error creating wif");

2
iguana/exchanges/LP_include.h

@ -558,7 +558,7 @@ struct LP_address *LP_addressfind(struct iguana_info *coin,char *coinaddr);
int64_t LP_outpoint_amount(char *symbol,bits256 txid,int32_t vout); int64_t LP_outpoint_amount(char *symbol,bits256 txid,int32_t vout);
void LP_listunspent_query(char *symbol,char *coinaddr); void LP_listunspent_query(char *symbol,char *coinaddr);
int32_t bitcoin_priv2wif(uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8_t addrtype); int32_t bitcoin_priv2wif(char *symbol,uint8_t wiftaddr,char *wifstr,bits256 privkey,uint8_t addrtype);
int bech32_convert_bits(uint8_t *out,int32_t *outlen,int outbits,const uint8_t *in,int32_t inlen,int inbits,int pad); int bech32_convert_bits(uint8_t *out,int32_t *outlen,int outbits,const uint8_t *in,int32_t inlen,int inbits,int pad);
int bech32_decode(char *hrp,uint8_t *data,int32_t *data_len,const char *input); int bech32_decode(char *hrp,uint8_t *data,int32_t *data_len,const char *input);
int bech32_encode(char *output,const char *hrp,const uint8_t *data,int32_t data_len); int bech32_encode(char *output,const char *hrp,const uint8_t *data,int32_t data_len);

34
iguana/exchanges/LP_privkey.c

@ -179,8 +179,8 @@ char *LP_secretaddresses(void *ctx,char *prefix,char *passphrase,int32_t n,uint8
sprintf(buf,"%s %s %03d",prefix,passphrase,i); sprintf(buf,"%s %s %03d",prefix,passphrase,i);
conv_NXTpassword(privkey.bytes,pubkey.bytes,(uint8_t *)buf,(int32_t)strlen(buf)); conv_NXTpassword(privkey.bytes,pubkey.bytes,(uint8_t *)buf,(int32_t)strlen(buf));
bitcoin_priv2pub(ctx,"KMD",pubkey33,coinaddr,privkey,taddr,pubtype); bitcoin_priv2pub(ctx,"KMD",pubkey33,coinaddr,privkey,taddr,pubtype);
bitcoin_priv2wif(0,wifstr,privkey,188); bitcoin_priv2wif("KMD",0,wifstr,privkey,188);
bitcoin_wif2priv(0,&tmptype,&checkprivkey,wifstr); bitcoin_wif2priv("KMD",0,&tmptype,&checkprivkey,wifstr);
bitcoin_addr2rmd160("KMD",taddr,&tmptype,rmd160,coinaddr); bitcoin_addr2rmd160("KMD",taddr,&tmptype,rmd160,coinaddr);
if ( bits256_cmp(checkprivkey,privkey) != 0 ) if ( bits256_cmp(checkprivkey,privkey) != 0 )
{ {
@ -204,7 +204,7 @@ char *LP_secretaddresses(void *ctx,char *prefix,char *passphrase,int32_t n,uint8
static const char base58_chars[] = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; static const char base58_chars[] = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
int32_t LP_wifstr_valid(char *wifstr) int32_t LP_wifstr_valid(char *symbol,char *wifstr)
{ {
bits256 privkey,cmpkey; uint8_t wiftype; char cmpstr[128],cmpstr2[128]; int32_t i; bits256 privkey,cmpkey; uint8_t wiftype; char cmpstr[128],cmpstr2[128]; int32_t i;
memset(privkey.bytes,0,sizeof(privkey)); memset(privkey.bytes,0,sizeof(privkey));
@ -212,8 +212,8 @@ int32_t LP_wifstr_valid(char *wifstr)
for (i=0; wifstr[i]!=0; i++) for (i=0; wifstr[i]!=0; i++)
if ( strchr(base58_chars,wifstr[i]) == 0 ) if ( strchr(base58_chars,wifstr[i]) == 0 )
return(0); return(0);
bitcoin_wif2priv(0,&wiftype,&privkey,wifstr); bitcoin_wif2priv(symbol,0,&wiftype,&privkey,wifstr);
bitcoin_priv2wif(0,cmpstr,privkey,wiftype); bitcoin_priv2wif(symbol,0,cmpstr,privkey,wiftype);
if ( strcmp(cmpstr,wifstr) == 0 ) if ( strcmp(cmpstr,wifstr) == 0 )
{ {
printf("%s is valid wif\n",wifstr); printf("%s is valid wif\n",wifstr);
@ -221,8 +221,8 @@ int32_t LP_wifstr_valid(char *wifstr)
} }
else if ( bits256_nonz(privkey) != 0 ) else if ( bits256_nonz(privkey) != 0 )
{ {
bitcoin_wif2priv(0,&wiftype,&cmpkey,cmpstr); bitcoin_wif2priv(symbol,0,&wiftype,&cmpkey,cmpstr);
bitcoin_priv2wiflong(0,cmpstr2,privkey,wiftype); bitcoin_priv2wiflong(symbol,0,cmpstr2,privkey,wiftype);
char str[65],str2[65]; printf("mismatched wifstr %s -> %s -> %s %s %s\n",wifstr,bits256_str(str,privkey),cmpstr,bits256_str(str2,cmpkey),cmpstr2); char str[65],str2[65]; printf("mismatched wifstr %s -> %s -> %s %s %s\n",wifstr,bits256_str(str,privkey),cmpstr,bits256_str(str2,cmpkey),cmpstr2);
if ( bits256_cmp(privkey,cmpkey) == 0 ) if ( bits256_cmp(privkey,cmpkey) == 0 )
return(1); return(1);
@ -234,7 +234,7 @@ bits256 LP_privkeycalc(void *ctx,uint8_t *pubkey33,bits256 *pubkeyp,struct iguan
{ {
//static uint32_t counter; //static uint32_t counter;
bits256 privkey,userpub,zero,userpass,checkkey,tmpkey; char tmpstr[128]; cJSON *retjson; uint8_t tmptype; int32_t notarized; uint64_t nxtaddr; bits256 privkey,userpub,zero,userpass,checkkey,tmpkey; char tmpstr[128]; cJSON *retjson; uint8_t tmptype; int32_t notarized; uint64_t nxtaddr;
if ( (wifstr == 0 || wifstr[0] == 0) && LP_wifstr_valid(passphrase) > 0 ) if ( (wifstr == 0 || wifstr[0] == 0) && LP_wifstr_valid(coin->symbol,passphrase) > 0 )
{ {
wifstr = passphrase; wifstr = passphrase;
passphrase = 0; passphrase = 0;
@ -247,8 +247,8 @@ bits256 LP_privkeycalc(void *ctx,uint8_t *pubkey33,bits256 *pubkeyp,struct iguan
//vcalc_sha256(0,checkkey.bytes,(uint8_t *)passphrase,(int32_t)strlen(passphrase)); //vcalc_sha256(0,checkkey.bytes,(uint8_t *)passphrase,(int32_t)strlen(passphrase));
//printf("SHA256.(%s) ",bits256_str(pstr,checkkey)); //printf("SHA256.(%s) ",bits256_str(pstr,checkkey));
//printf("privkey.(%s)\n",bits256_str(pstr,privkey)); //printf("privkey.(%s)\n",bits256_str(pstr,privkey));
bitcoin_priv2wif(coin->wiftaddr,tmpstr,privkey,coin->wiftype); bitcoin_priv2wif(coin->symbol,coin->wiftaddr,tmpstr,privkey,coin->wiftype);
bitcoin_wif2priv(coin->wiftaddr,&tmptype,&checkkey,tmpstr); bitcoin_wif2priv(coin->symbol,coin->wiftaddr,&tmptype,&checkkey,tmpstr);
if ( bits256_cmp(privkey,checkkey) != 0 ) if ( bits256_cmp(privkey,checkkey) != 0 )
{ {
char str[65],str2[65]; printf("mismatched privkeys from wif conversion: %s -> %s -> %s\n",bits256_str(str,privkey),tmpstr,bits256_str(str2,checkkey)); char str[65],str2[65]; printf("mismatched privkeys from wif conversion: %s -> %s -> %s\n",bits256_str(str,privkey),tmpstr,bits256_str(str2,checkkey));
@ -257,8 +257,8 @@ bits256 LP_privkeycalc(void *ctx,uint8_t *pubkey33,bits256 *pubkeyp,struct iguan
} }
else else
{ {
bitcoin_wif2priv(coin->wiftaddr,&tmptype,&privkey,wifstr); bitcoin_wif2priv(coin->symbol,coin->wiftaddr,&tmptype,&privkey,wifstr);
bitcoin_priv2wif(coin->wiftaddr,tmpstr,privkey,tmptype); bitcoin_priv2wif(coin->symbol,coin->wiftaddr,tmpstr,privkey,tmptype);
if ( strcmp(tmpstr,wifstr) != 0 ) if ( strcmp(tmpstr,wifstr) != 0 )
{ {
printf("error reproducing the wifstr, likely edge case like non-supported uncompressed pubkey\n"); printf("error reproducing the wifstr, likely edge case like non-supported uncompressed pubkey\n");
@ -273,14 +273,14 @@ bits256 LP_privkeycalc(void *ctx,uint8_t *pubkey33,bits256 *pubkeyp,struct iguan
{ {
coin->counter++; coin->counter++;
memcpy(G.LP_pubsecp,coin->pubkey33,33); memcpy(G.LP_pubsecp,coin->pubkey33,33);
bitcoin_priv2wif(coin->wiftaddr,tmpstr,privkey,coin->wiftype); bitcoin_priv2wif(coin->symbol,coin->wiftaddr,tmpstr,privkey,coin->wiftype);
bitcoin_addr2rmd160(coin->symbol,coin->taddr,&tmptype,G.LP_myrmd160,coin->smartaddr); bitcoin_addr2rmd160(coin->symbol,coin->taddr,&tmptype,G.LP_myrmd160,coin->smartaddr);
LP_privkeyadd(privkey,G.LP_myrmd160); LP_privkeyadd(privkey,G.LP_myrmd160);
G.LP_privkey = privkey; G.LP_privkey = privkey;
if ( G.counter++ == 0 ) if ( G.counter++ == 0 )
{ {
bitcoin_priv2wif(coin->wiftaddr,G.USERPASS_WIFSTR,privkey,188); bitcoin_priv2wif(coin->symbol,coin->wiftaddr,G.USERPASS_WIFSTR,privkey,188);
bitcoin_wif2priv(coin->wiftaddr,&tmptype,&checkkey,G.USERPASS_WIFSTR); bitcoin_wif2priv(coin->symbol,coin->wiftaddr,&tmptype,&checkkey,G.USERPASS_WIFSTR);
if ( bits256_cmp(checkkey,privkey) != 0 ) if ( bits256_cmp(checkkey,privkey) != 0 )
{ {
char str[65],str2[65]; char str[65],str2[65];
@ -381,8 +381,8 @@ void LP_privkey_tests()
for (i=0; i<200000000; i++) for (i=0; i<200000000; i++)
{ {
privkey = rand256(0); privkey = rand256(0);
bitcoin_priv2wif(0,wifstr,privkey,0xff); bitcoin_priv2wif("KMD",0,wifstr,privkey,0xff);
bitcoin_wif2priv(0,&tmptype,&checkkey,wifstr); bitcoin_wif2priv("KMD",0,&tmptype,&checkkey,wifstr);
if ( bits256_cmp(privkey,checkkey) != 0 ) if ( bits256_cmp(privkey,checkkey) != 0 )
{ {
printf("i.%d: %s vs %s\n",i,bits256_str(str,privkey),bits256_str(str2,checkkey)); printf("i.%d: %s vs %s\n",i,bits256_str(str,privkey),bits256_str(str2,checkkey));

12
iguana/exchanges/LP_transaction.c

@ -324,7 +324,7 @@ int32_t iguana_interpreter(struct iguana_info *coin,cJSON *logarray,int64_t nLoc
return(0); return(0);
} }
bits256 iguana_str2priv(uint8_t wiftaddr,char *str) bits256 iguana_str2priv(char *symbol,uint8_t wiftaddr,char *str)
{ {
bits256 privkey; int32_t n; uint8_t addrtype; //struct iguana_waccount *wacct=0; struct iguana_waddress *waddr; bits256 privkey; int32_t n; uint8_t addrtype; //struct iguana_waccount *wacct=0; struct iguana_waddress *waddr;
memset(&privkey,0,sizeof(privkey)); memset(&privkey,0,sizeof(privkey));
@ -333,7 +333,7 @@ bits256 iguana_str2priv(uint8_t wiftaddr,char *str)
n = (int32_t)strlen(str) >> 1; n = (int32_t)strlen(str) >> 1;
if ( n == sizeof(bits256) && is_hexstr(str,sizeof(bits256)) > 0 ) if ( n == sizeof(bits256) && is_hexstr(str,sizeof(bits256)) > 0 )
decode_hex(privkey.bytes,sizeof(privkey),str); decode_hex(privkey.bytes,sizeof(privkey),str);
else if ( bitcoin_wif2priv(wiftaddr,&addrtype,&privkey,str) != sizeof(bits256) ) else if ( bitcoin_wif2priv(symbol,wiftaddr,&addrtype,&privkey,str) != sizeof(bits256) )
{ {
//if ( (waddr= iguana_waddresssearch(&wacct,str)) != 0 ) //if ( (waddr= iguana_waddresssearch(&wacct,str)) != 0 )
// privkey = waddr->privkey; // privkey = waddr->privkey;
@ -523,7 +523,7 @@ int32_t iguana_signrawtransaction(void *ctx,char *symbol,uint8_t wiftaddr,uint8_
privkeystr = jstr(item,0); privkeystr = jstr(item,0);
if ( privkeystr == 0 || privkeystr[0] == 0 ) if ( privkeystr == 0 || privkeystr[0] == 0 )
continue; continue;
privkeys[i] = privkey = iguana_str2priv(wiftaddr,privkeystr); privkeys[i] = privkey = iguana_str2priv(symbol,wiftaddr,privkeystr);
bitcoin_pubkey33(ctx,pubkeys[i],privkey); bitcoin_pubkey33(ctx,pubkeys[i],privkey);
//if ( bits256_nonz(privkey) != 0 ) //if ( bits256_nonz(privkey) != 0 )
// iguana_ensure_privkey(coin,privkey); // iguana_ensure_privkey(coin,privkey);
@ -825,13 +825,13 @@ char *basilisk_swap_bobtxspend(bits256 *signedtxidp,uint64_t txfee,char *name,ch
{ {
V[0].signers[1].privkey = *privkey2p; V[0].signers[1].privkey = *privkey2p;
bitcoin_pubkey33(ctx,V[0].signers[1].pubkey,*privkey2p); bitcoin_pubkey33(ctx,V[0].signers[1].pubkey,*privkey2p);
bitcoin_priv2wif(wiftaddr,wifstr,*privkey2p,wiftype); bitcoin_priv2wif(symbol,wiftaddr,wifstr,*privkey2p,wiftype);
jaddistr(privkeys,wifstr); jaddistr(privkeys,wifstr);
V[0].N = V[0].M = 2; V[0].N = V[0].M = 2;
} else V[0].N = V[0].M = 1; } else V[0].N = V[0].M = 1;
V[0].signers[0].privkey = privkey; V[0].signers[0].privkey = privkey;
bitcoin_pubkey33(ctx,V[0].signers[0].pubkey,privkey); bitcoin_pubkey33(ctx,V[0].signers[0].pubkey,privkey);
bitcoin_priv2wif(wiftaddr,wifstr,privkey,wiftype); bitcoin_priv2wif(symbol,wiftaddr,wifstr,privkey,wiftype);
jaddistr(privkeys,wifstr); jaddistr(privkeys,wifstr);
V[0].suppress_pubkeys = suppress_pubkeys; V[0].suppress_pubkeys = suppress_pubkeys;
V[0].ignore_cltverr = ignore_cltverr; V[0].ignore_cltverr = ignore_cltverr;
@ -1015,7 +1015,7 @@ int32_t LP_vins_select(void *ctx,struct iguana_info *coin,int64_t *totalp,int64_
*totalp = 0; *totalp = 0;
interestsum = 0; interestsum = 0;
init_hexbytes_noT(spendscriptstr,script,scriptlen); init_hexbytes_noT(spendscriptstr,script,scriptlen);
bitcoin_priv2wif(coin->wiftaddr,wifstr,privkey,coin->wiftype); bitcoin_priv2wif(coin->symbol,coin->wiftaddr,wifstr,privkey,coin->wiftype);
n = 0; n = 0;
min0 = min1 = 0; min0 = min1 = 0;
memset(preselected,0,sizeof(preselected)); memset(preselected,0,sizeof(preselected));

4
iguana/exchanges/mm.c

@ -140,7 +140,7 @@ int main(int argc, const char * argv[])
privkey.bytes[4] = 0x06; privkey.bytes[4] = 0x06;
privkey.bytes[5] = 0xdd; privkey.bytes[5] = 0xdd;
privkey.bytes[6] = 0xbb; privkey.bytes[6] = 0xbb;
bitcoin_priv2wiflong(0xab,wifstr,privkey,0x36); bitcoin_priv2wiflong("HUSH",0xab,wifstr,privkey,0x36);
if ( wifstr[2] == 'x' && wifstr[4] == 'H' && wifstr[5] == 'u' && wifstr[6] == 's' )//&& wifstr[3] == 'x' ) if ( wifstr[2] == 'x' && wifstr[4] == 'H' && wifstr[5] == 'u' && wifstr[6] == 's' )//&& wifstr[3] == 'x' )
{ {
if ( wifstr[7] == 'h' && wifstr[8] == 'L' && wifstr[9] == 'i' ) if ( wifstr[7] == 'h' && wifstr[8] == 'L' && wifstr[9] == 'i' )
@ -170,7 +170,7 @@ int main(int argc, const char * argv[])
bitcoin_priv2pub(ctx,"KMD",pubkey33,coinaddr,privkey,0,60); bitcoin_priv2pub(ctx,"KMD",pubkey33,coinaddr,privkey,0,60);
if ( strncmp(coinaddr+1,argv[2],len-1) == 0 ) if ( strncmp(coinaddr+1,argv[2],len-1) == 0 )
{ {
bitcoin_priv2wif(0,wifstr,privkey,188); bitcoin_priv2wif("KMD",0,wifstr,privkey,188);
printf("i.%d %s -> %s wif.%s\n",i,bits256_str(str,privkey),coinaddr,wifstr); printf("i.%d %s -> %s wif.%s\n",i,bits256_str(str,privkey),coinaddr,wifstr);
if ( coinaddr[1+len-1] == argv[2][len-1] ) if ( coinaddr[1+len-1] == argv[2][len-1] )
break; break;

Loading…
Cancel
Save