diff --git a/supernode/main.html b/supernode/main.html index 429d05a..2d3c491 100644 --- a/supernode/main.html +++ b/supernode/main.html @@ -7261,88 +7261,82 @@ (function (wallets) { var signing = wallets.flowallet = { + + ecparams: EllipticCurve.getSECCurveByName("secp256k1"), + generateFloKeys: function () { - - // var key = new Bitcoin.ECKey(false); - // key.setCompressed(true); - // var bitcoinAddress = key.getBitcoinAddress(); - // var privateKeyWif = key.getBitcoinWalletImportFormat(); - // var privateKey = key.getBitcoinHexFormat(); - // var publicKey = key.getPubKeyHex(); - // var publicKeyECPoint = key.getPubPoint(); // Return public point as ECPoint object. - // console.log("bitcoinAddress", bitcoinAddress); - // console.log("privateKeyWif", privateKeyWif); - // console.log("publicKey", publicKey); - // console.log("publicKeyECPoint", publicKeyECPoint); - - // var ms = "hello"; - // var signn = this.sign(ms, privateKeyWif); - - // var veri = this.verify(ms, signn, publicKeyECPoint); - // console.log(veri); - - var privateKey = Bitcoin.ECDSA.getBigRandom(EllipticCurve.getSECCurveByName("secp256k1").getN()); - var pubKey = EllipticCurve.getSECCurveByName("secp256k1").getG().multiply(privateKey); - - console.log(privateKey); - var key = new Bitcoin.ECKey(privateKey); - key.setCompressed(true); - privateKeyHex = key.getBitcoinHexFormat(); - console.log(privateKeyHex); - // var hx = key.getBitcoinPrivateKeyByteArray(privateKeyHex); - // var hxbi = new BigInteger(hx); - // console.log(hxbi); - - //console.log(Crypto.util.bytesToHex(privateKey)); - //console.log(Bitcoin.ECDSA.getBitcoinBase64Format(privateKey)); - // console.log(Crypto.util.hexToBytes(privateKey)); - //console.log(pubKey); - //var ss = ninja.publicKey.getHexFromByteArray(pubKey); - //console.log(ss); - - //var ms = "hello"; - // var sign = this.sign(ms, privateKey); - //var sign = this.sign(ms, hxbi); - //console.log(sign); - - - //var verify = this.verify(ms, sign, pubKey); - //console.log(verify); - }, - sign: function (msg, privateKeyHex) { - - var key = new Bitcoin.ECKey(privateKeyHex); - key.setCompressed(true); + var privateKey = Bitcoin.ECDSA.getBigRandom(EllipticCurve.getSECCurveByName("secp256k1").getN()); + console.log(privateKey); + var key = new Bitcoin.ECKey(privateKey); + key.setCompressed(true); + // var privateKeyHex = key.getBitcoinHexFormat(); + + var publicKeyHex = ninja.publicKey.getHexFromByteArray(key.getPubPoint().getEncoded(1)).toString().toUpperCase(); + + var ms = "hello"; + //var sign = this.sign(ms, privateKeyHex); + var sign = this.sign(ms, privateKey); + + var verify = this.verify(ms, sign, publicKeyHex); + console.log(verify); + }, + sign: function (msg, privateKey) { + var messageHash = Crypto.SHA256(msg); - var messageHashBigInteger = new BigInteger(messageHash); - - var privateKeyArr = key.getBitcoinPrivateKeyByteArray(privateKeyHex); - - var privateKey = new BigInteger(privateKeyArr); + var messageHashBigInteger = new BigInteger(messageHash); var messageSign = Bitcoin.ECDSA.sign(messageHashBigInteger, privateKey); - var messageSignParse = Bitcoin.ECDSA.parseSig(messageSign); - - var serializeSig = Bitcoin.ECDSA.serializeSig(messageSignParse.r, messageSignParse.s); - - var sighex = Crypto.util.bytesToHex(serializeSig); - + var sighex = Crypto.util.bytesToHex(messageSign); return sighex; - }, - verify: function (msg, signatureHex, publicKey) { + // sign: function (msg, privateKeyHex) { + + // var key = new Bitcoin.ECKey(privateKeyHex); + // key.setCompressed(true); + + // var messageHash = Crypto.SHA256(msg); + + // var messageHashBigInteger = new BigInteger(messageHash); + + // var privateKeyArr = key.getBitcoinPrivateKeyByteArray(privateKeyHex); + // //var pkby = Crypto.util.hexToBytes(privateKeyHex); + // //var privateKeyArr = key.toByteArrayUnsigned(); + // //console.log(pkby); + + // var privateKey = new BigInteger(privateKeyArr); + // console.log(privateKey); + + // var messageSign = Bitcoin.ECDSA.sign(messageHashBigInteger, privateKey); + + // var sighex = Crypto.util.bytesToHex(messageSign); + // return sighex; + // }, + verify: function (msg, signatureHex, publicKeyHex) { var msgHash = Crypto.SHA256(msg); var messageHashBigInteger = new BigInteger(msgHash); var sigBytes = Crypto.util.hexToBytes(signatureHex); var signature = Bitcoin.ECDSA.parseSig(sigBytes); - var verify = Bitcoin.ECDSA.verifyRaw(messageHashBigInteger,signature.r, signature.s, publicKey); + var publicKeyPoint = this.ecparams.getCurve().decodePointHex(publicKeyHex); + + var verify = Bitcoin.ECDSA.verifyRaw(messageHashBigInteger,signature.r, signature.s, publicKeyPoint); return verify; + }, + test: function() { + myPrivateKey = Bitcoin.ECDSA.getBigRandom(EllipticCurve.getSECCurveByName("secp256k1").getN()); + myPublicKey = EllipticCurve.getSECCurveByName("secp256k1").getG().multiply(myPrivateKey); + messageHash = Crypto.SHA256(" I want this message signed"); + messageHashBigInteger = new BigInteger("messageHash"); + messageSign = Bitcoin.ECDSA.sign(messageHashBigInteger,myPrivateKey); + messageSignParse = Bitcoin.ECDSA.parseSig(messageSign); + verify = Bitcoin.ECDSA.verifyRaw(messageHashBigInteger,messageSignParse.r,messageSignParse.s,myPublicKey); + console.log(verify); + } } })(ninja.wallets)