client端
var client = crypto.createECDH('secp256k1');
var client_key = client.generateKeys();//保存客户端公钥,公钥Pku length=65
server端
var crypto = require('crypto');
var serverEcdh;
var serverEcdh_pubKey;
serverEcdh = crypto.createECDH('secp256k1');//secp256k1,secp521r1
serverEcdh_pubKey = serverEcdh.generateKeys();
var secret = serverEcdh.computeSecret(client_key);//共享秘钥
crypto.js:418
var ret = this._handle.computeSecret(toBuf(key, inEnc));^
Error: Failed to translate Buffer to a EC_POINT
at Error (native)
at ECDH.dhComputeSecret [as computeSecret] (crypto.js:418:26)
出错原因client端公钥(buffer)使用ascii\base64\binary三种编码方式传输到server端,再转成buffer后,与原client端buffer不一致,出错。
解决方法:使用hex编码客户端buffer后传给server