使用SignedCms类计算数字签名

时间:2018-03-07 13:46:20

标签: .net digital-signature

我使用.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。

1 个答案:

答案 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结构中已签名的属性是无序的=>他们的订单无关紧要。