使用加密库在 NodeJS 中创建 PGP 兼容签名

Create a PGP Compatible Signature in NodeJS using the Crypto Library

在看Crypto Library I see it has the capability to sign data.

有谁知道 PGP 兼容的签名是否像 ASCII 一样简单地保护加密库的签名命令的输出?

我有一个应用程序需要签名并且只使用 PGP 签名数据。我看过 OpenGPGJS 项目; but it blows up when I Webpack my application.

我一直在尝试使用 kbgpg,但他们的文档不是很好,而且 when I follow their default example on signing data 当我尝试使用 Kleopatra 验证一切正确时,该签名甚至没有被识别为签名.即使我将 "GPG MESSAGE" 块更改为 "PGP SIGNATURE" 块也是如此。

因为我不需要加密,只需要签名,我认为直接使用 Crypto 库可能是这里最简单的解决方案,但我很难找到文档来验证它是否可以完成很容易。

虽然 OpenPGP 使用特殊的加密操作模式(OpenPGP CFB 模式),但没有用于签署文档的特殊算法。 RFC 4880, OpenPGP 定义了 OpenPGP 消息的组成方式——理论上,这就是您以 OpenPGP 格式导出消息所需知道的全部内容。您甚至可以跳过许多特殊情况,特别是如果您还可以控制使用哪些密钥(及其技术细节)来签署信息。

但是您必须将自己的代码放在一起来编写 OpenPGP 消息格式,这几乎就是 OpenPGPJS 和其他人已经在做的事情。但是进行正确的密码学是非常复杂的,并且有很多方法会出错。 Don't write your own crypto code,尤其不能作为副业。

最后,查看代码我很确定 kbpgp 不会导出 BEGIN GPG MESSAGE headers。它可能会打印 BEGIN PGP MESSAGE headers,当签名与签名内容结合时,这是正确的 header。将此更改为 BEGIN PGP SIGNATURE 将导致邮件内容无效 header。