【发布时间】:2021-03-28 10:50:36
【问题描述】:
我正在研究 RFC 5652,以便准确了解如何编码/解码 PKCS#7 ASN.1 数据。
我不明白当存在“signedAttrs”字段时如何创建签名:
消息摘要计算过程的结果取决于 是否存在signedAttrs 字段。当场不在时, 结果只是所描述的内容的消息摘要 更多。但是,当该字段存在时,结果是消息 SignedAttrs 值的完整 DER 编码摘要 包含在 signedAttrs 字段中。由于 SignedAttrs 值, 如果存在,必须包含内容类型和消息摘要 属性,这些值间接包含在结果中。
通过阅读上面的文字,我感到困惑:SignedAttrs 字段包含消息摘要和内容类型值,但消息摘要可以在计算后出现,并且必须计算摘要:
eContent OCTET STRING + SignedAttrs 字段的完整 DER 编码(包含消息摘要字段)。
在下面的示例中,有一个 PKCS#7 已签名数据结构,其中正在对信封数据内容字段值 + 已签名属性进行签名。在哪里 messageDigest 值究竟来自哪里?
【问题讨论】: