我在使用 sequoia crate 检查加密消息是否由 CA 签名时遇到一些问题。他们的文档没有谈论这样的事情。
与 TLS、CMS 和其他围绕 X.509 设计的协议不同,OpenPGP 没有任何固有的证书颁发机构概念。任何主键都可以对子键进行签名,任何具有适当键标志的键都可以对数据进行签名。
当然,您可以创建和使用证书颁发机构,过去甚至有公开信任的证书颁发机构(尽管我现在不知道有任何操作)。但是,来自证书颁发机构的签名看起来就像来自任何其他密钥的签名,并且您必须将签名密钥追溯到独立提供的某个信任根。
假设您有这样的信任根,您可以通过迭代数据包以查看是否有签名来解析签名。通常有一个一次性签名包允许一次性解析数据。从该数据包中提取指纹和其他数据并找到密钥后,您可以调用
verify_message
来验证数据。您想要传递的数据是 LiteralData 数据包。