diff --git a/iguana/iguana777.h b/iguana/iguana777.h index 8c709276c..1c116b6d0 100755 --- a/iguana/iguana777.h +++ b/iguana/iguana777.h @@ -726,6 +726,9 @@ int32_t iguana_rwmsgtx(struct iguana_info *coin,int32_t rwflag,cJSON *json,uint8 int32_t iguana_ramtxbytes(struct iguana_info *coin,uint8_t *serialized,int32_t maxlen,bits256 *txidp,struct iguana_txid *tx,int32_t height,struct iguana_msgvin *vins,struct iguana_msgvout *vouts); cJSON *bitcoin_txtest(struct iguana_info *coin,char *rawtxstr,bits256 txid); cJSON *iguana_blockjson(struct iguana_info *coin,struct iguana_block *block,int32_t txidsflag); +int32_t iguana_sig(uint8_t *sig,int32_t maxsize,uint8_t *data,int32_t datalen,bits256 privkey); +int32_t iguana_ver(uint8_t *sig,int32_t maxsize,uint8_t *data,int32_t datalen,bits256 pubkey); + extern queue_t bundlesQ; diff --git a/iguana/iguana_pubkeys.c b/iguana/iguana_pubkeys.c index b4c1b8a2a..d3986bbff 100755 --- a/iguana/iguana_pubkeys.c +++ b/iguana/iguana_pubkeys.c @@ -806,6 +806,33 @@ struct iguana_waddress *iguana_waddresscalc(uint8_t pubtype,uint8_t wiftype,stru return(0); } +int32_t iguana_ver(uint8_t *sig,int32_t siglen,uint8_t *data,int32_t datalen,bits256 pubkey) +{ + struct bp_key key; + if ( bp_key_init(&key) != 0 && bp_pubkey_set(&key,pubkey.bytes,sizeof(pubkey)) != 0 ) + { + if ( bp_verify(key.k,data,datalen,sig,siglen) != 0 ) + return(0); + } + return(-1); +} + +int32_t iguana_sig(uint8_t *sig,int32_t maxsize,uint8_t *data,int32_t datalen,bits256 privkey) +{ + struct bp_key key; void *sigptr = NULL; size_t siglen = 0; + if ( bp_key_init(&key) != 0 && bp_key_secret_set(&key,privkey.bytes,sizeof(privkey)) != 0 ) + { + if ( bp_sign(key.k,data,datalen,&sigptr,&siglen) != 0 ) + { + if ( siglen < maxsize && sigptr != 0 ) + { + memcpy(sig,sigptr,siglen); + return((int32_t)siglen); + } else free(sigptr); + } + } + return(-1); +} /*char *iguana_txsign(struct iguana_info *coin,struct cointx_info *refT,int32_t redeemi,char *redeemscript,char sigs[][256],int32_t n,uint8_t privkey[32],int32_t privkeyind) { char hexstr[16384]; bits256 hash2; uint8_t data[4096],sigbuf[512]; struct bp_key key; @@ -1177,3 +1204,19 @@ cJSON *iguana_pubkeyjson(struct iguana_info *coin,char *pubkeystr) cJSON *json = cJSON_CreateObject(); return(json); } + +void pktest() +{ + bits256 p; uint8_t privkey,*pubkey,sig[128]; struct bp_key key; size_t pk_len,pubk_len; int32_t siglen; + bp_key_init(&key); + bp_key_generate(&key); + OS_randombytes(p.bytes,sizeof(privkey)); + bp_privkey_set(&key,p.bytes,sizeof(privkey)); + //bp_privkey_get(&key,(void **)&privkey,&pk_len); + bp_pubkey_get(&key,(void **)&pubkey,&pubk_len); + printf("pk_len.%ld\n",pubk_len); + + siglen = iguana_sig(sig,sizeof(sig),(uint8_t *)"hello",(int32_t)strlen("hello"),p); + printf("siglen.%d\n",siglen); + //iguana_ver(uint8_t *sig,int32_t siglen,uint8_t *data,int32_t datalen,bits256 pubkey) +} diff --git a/iguana/main.c b/iguana/main.c index 2a380fc64..32c34414d 100644 --- a/iguana/main.c +++ b/iguana/main.c @@ -310,7 +310,8 @@ void iguana_main(void *arg) if ( ismainnet != 0 ) strcat(myinfo->NXTAPIURL,"7876/nxt"); else strcat(myinfo->NXTAPIURL,"6876/nxt"); - + void pktest(); + pktest(); signal(SIGINT,sigint_func); signal(SIGILL,sigillegal_func); signal(SIGHUP,sighangup_func); diff --git a/iguana/manifest.json b/iguana/manifest.json index 93f1ed64b..2c5cf921f 100755 --- a/iguana/manifest.json +++ b/iguana/manifest.json @@ -1,25 +1,17 @@ { - "app": { - "background": { - "scripts": ["js/background.js"] - } - }, + "name": "iguana", + "uri": "iguana.pexe", + "short_name": "iguana", + "version": "44.1.2", "manifest_version": 2, - "name": "Iguana", - "version": "0.0.1", - "icons": { - "128": "icon128.png" - }, - "minimum_chrome_version": "36", - "sockets": { - "tcp": { - "connect": "*" - }, - "tcpServer": { - "listen": "*" - } - }, - "permissions": [ - "storage" - ] + "description": "iguana", + "offline_enabled": true, + "icons": { "128": "icon128.png" }, + "app": + { + "name": "iguana", + "background": { "scripts": ["background.js"] }, + "sockets": { "tcp": { "connect": "" }, "tcpServer": { "listen": "127.0.0.1:*" } }, + "permissions": [ "unlimitedStorage", "filesystem", "storage", "system.storage", "system.display", "system.network","system.cpu" ] + } }