verify function complete.

This commit is contained in:
Abhishek Sinha 2018-10-10 18:26:02 +05:30
parent be2a649b39
commit 526b6996e1

View File

@ -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)