如何解决如何使用 node.js 获得 DER 编码的非确定性规范 ecdsa 签名?
我尝试了以下方法:
var hash=sha256(sha256(msg)); // hash of the transaction
var priv_key= "...."; // the private key,64 char length,([a-z0-9])
//non-deterministic but not canonical
//********************************************
var crypto = require('crypto');
var KeyEncoder = require('key-encoder').default,keyEncoder = new KeyEncoder("secp256k1");
var pemPrivateKey = keyEncoder.encodePrivate(priv_key,'raw','pem')
const csign = crypto.createSign('SHA256');
csign.update(hash);
console.log(csign.sign(pemPrivateKey,'hex'));
//canonical but deterministic
//**********************************
var ec = new EC("secp256k1");
var mySign = ec.sign(Buffer.from(hash,"hex"),Buffer.from(priv_key,{canonical:true});
var sig=mySign.toDER();
var DER_sig="";
for(var si=0;si<sig.length;si++){
var si_int=sig[si]
DER_sig+=norm_l(si_int.toString(16));
}
console.log(DER_sig)
function norm_l(z){
if(z.length<2){
z="0"+z;
}
return z;
}
问题在于,我从来没有能够使第一个版本成为规范的,或者第二个版本是非确定性的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。