RFC 6488指定Signed-Data
内容类型的以下内容:
SignedData ::= SEQUENCE {
version CMSVersion,
digestAlgorithms DigestAlgorithmIdentifiers,
encapContentInfo EncapsulatedContentInfo,
certificates [0] IMPLICIT CertificateSet OPTIONAL,
crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
signerInfos SignerInfos }
案文解释说:
The digestAlgorithms set contains the OIDs of the digest algorithm(s)
used in signing the encapsulated content. This set MUST contain
exactly one digest algorithm OID [...]
然后,在SignerInfo
内,还有另一个DigestAlgorithmIdentifier
:
SignerInfo ::= SEQUENCE {
version CMSVersion,
sid SignerIdentifier,
digestAlgorithm DigestAlgorithmIdentifier,
signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,
signatureAlgorithm SignatureAlgorithmIdentifier,
signature SignatureValue,
unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL }
解释是:
The digestAlgorithm MUST consist of the OID of a digest algorithm
that conforms to the RPKI Algorithms and Key Size Profile
specification [RFC6485].
在我偷看的几个PKCS#7文件中,这两个元素具有相同的价值。
这是同一属性的重复吗?如果没有,那么是什么意思?
答案 0 :(得分:1)
这是同一属性的重复吗?如果没有,那么是什么意思?
如果RPKI是。
原因是该标准没有引入专门的新结构,而仅仅是现有结构的概况:
RPKI签名对象是CMS [RFC5652]签名数据对象
的配置文件
与您的RPKI相比,CMS签名数据对象可能在其 signerInfos 集中包含多个 SignerInfo 对象,并且每个对象可能使用不同的<强> digestAlgorithm 即可。因此,在CMS签名数据对象中,初始摘要算法集可能明智地包含多个条目。
实际上,这个领域更为宽松:
digestAlgorithms是消息摘要算法的集合 身份标识。可能有任意数量的元素 集合,包括零。每个元素标识消息 摘要算法,以及使用的任何相关参数 一个或多个签名者。该集合旨在列出 任何签名者使用的消息摘要算法 订购,便于一次通过签名验证。