如何将nodejs ecdh公钥编码为pem

时间:2018-06-15 11:06:57

标签: node.js sign cryptojs verify diffie-hellman

Unable to sign a file with nodejs crypto

我正在尝试使用带有ECDH公钥的方法verify.verify()验证在此线程中创建的签名文档。因此,我想,我必须将原始公钥格式化为有效的PEM。

我如何使用ans1.js和bn.js模块?

1 个答案:

答案 0 :(得分:0)

这是web-push库的工作方式:

const asn1 = require('asn1.js');

const ECPrivateKeyASN = asn1.define('ECPrivateKey', function() {
  this.seq().obj(
    this.key('version').int(),
    this.key('privateKey').octstr(),
    this.key('parameters').explicit(0).objid()
      .optional(),
    this.key('publicKey').explicit(1).bitstr()
      .optional()
  );
});

function toPEM(key) {
  return ECPrivateKeyASN.encode({
    version: 1,
    privateKey: key,
    parameters: [1, 2, 840, 10045, 3, 1, 7] // prime256v1
  }, 'pem', {
    label: 'EC PRIVATE KEY'
  });
}