我正在尝试获取CMS base64编码的字符串,将其转换为pkcs7文件,并使用javascript/nodejs提取叶证书和中间证书,类似于以下openssl 命令:
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
我几乎阅读了每篇文章,并看到了其他语言的解决方案,但不是针对节点的解决方案。我知道您可以使用节点锻造来实现我需要的东西,但节点锻造不支持 ECC 算法。有谁知道任何其他解决方案/npm包可以帮助我完成此操作?请帮助我。我对此很陌生。
您是否看到 Node.js 的 PKI.js?它是一个纯JavaScript库,实现了PKI应用程序中使用的格式。它基于 W3C Web 加密 API,完全支持 CMS 消息中的所有"套件 B"算法。OP 提交的代码片段:
const cmsSignedBuffer = stringToArrayBuffer(fromBase64(token.signature));
const asn1 = asn1js.fromBER(cmsSignedBuffer);
const cmsContentSimpl = new pkijs.ContentInfo({ schema: asn1.result });
const cmsSignedSimpl = new pkijs.SignedData({ schema: cmsContentSimpl.content })
另一种方法是使用openssl的包装器,例如openssl-nodejs。 包装器只是生成一个子进程来调用 openssl。因此,openssl必须安装在部署Node.js应用程序的系统上。