我使用.NET Framework中包含的ContentInfo,SignedCms和CmsSigner类来签署一些数据。签名遵循CAdES标准。
根据文档,当在CmsSigner.SignedAttributes集合中添加至少一个签名属性时,CmsSigner类会自动生成contentType和messageDigest签名属性。在我的代码中,我按以下顺序添加了2个签名属性:signing-certificate-v2和signature-policy-identifier。
当我检查生成的PKCS#7对象时,签名的属性按以下顺序出现:signature-policy-identifier,contentType,messageDigest和signing-certificate-v2。
是否有可能控制属性的顺序?我需要的顺序是contentType,messageDigest,signing-certificate-v2,signature-policy-identifier。
答案 0 :(得分:2)
这很可能不是您期望的答案,但是当您查看RFC5652时,您会发现SignedAttributes
被定义为SET OF
而不是A Layman's Guide to a Subset of ASN.1, BER, and DER 1}}:
SEQUENCE OF
当你看一下RFC5652时,你会看到这两者之间的区别:
SignedAttributes ::= SET SIZE (1..MAX) OF Attribute
- 给定类型零次或多次出现的无序集合
SET OF
- 给定类型零次或多次出现的有序集合
总结起来=> reinstall their desktop bridge converter声明CMS结构中已签名的属性是无序的=>他们的订单无关紧要。