繁体   English   中英

在C#和Compact Framework 3.5的CMS / PKCS 7签名中添加可选的OID

[英]Add optional OID in CMS/PKCS 7 signature in C# and Compact Framework 3.5

通过使用CAPI函数(在C#和Compact Framework 3.5中),我尝试对XML签名并创建CMS / PKCS信封,如以下OpenSSL命令那样:

openssl smime -sign -in file.xml -out file.b64 -passin pass:test -binary -nodetach -inkey cert.priv.pem -signer cert.pub.pem

通过调用函数“ CryptMsgOpenToEncode”和“ CryptMsgUpdate”,我获得了第一个签名文件。 现在,我将添加可选的OID和其他数据(更确切地说是“ SMIMECapabilities”和签名时间)。

这个怎么做?

我有类似的问题。 我发现了这篇文章,建议在此处使用证书注册API。

有弹性的城堡还能够编写SMIMECapabilities。

更新:原始链接的内容:据我所知,.NET中不支持SMIMECapabilities属性,要触摸此属性,证书注册API中的IX509CertificateRequestPkcs10 :: SmimeCapabilities似乎支持它,您可以检查一下:

http://msdn.microsoft.com/zh-CN/library/windows/desktop/aa377586(v=vs.85).aspx

附加信息:经过研究,我能够使用CmsSigner编写SMIMECapabilities(我正在以分离状态创建签名的文档)。 我使用此代码。

signer.SignedAttributes.Add(new AsnEncodedData("1.2.840.113549.1.9.15",  new byte[]{...})

不幸的是,CmsSigner只能将SMIMECapabilities的内容写为字节数组。 我使用此工具https://lapo.it/asn1js/来解码在openssl中创建的带有符号的文件,以找出正确的字节数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM