我正在尝试实现 SCEP 服务,我对密码学 ++ 的经验非常有限,所以这是一场艰苦的战斗。目前我正在接受来自客户的证书请求,并且我正在解释该请求。证书请求应该采用 CMS/PKCS#7 的形式,但是我在解释它时遇到了很大的困难:
- 在http://lipingshare.com/Asn1Editor/使用 ASN.1 编辑器时,我只是得到“读取数据失败”。
- 在 Linux 上使用 'openssl asn1parse -inform DER < bytes' 时,我得到了一些看起来很明智的东西。该应用程序应该在 Windows .NET 上运行,因此对 linux 的破坏主要是一种绝望。
尝试在 .NET 中解码失败:
byte[] 数据 = Convert.FromBase64String( input_message );
SignedCms signerInfo = new SignedCms();
EnvelopedCms contentInfo = new EnvelopedCms();
签名者信息.解码(数据);
contentInfo.Decode(signerInfo.ContentInfo.Content);
contentInfo.Decrypt();[*][*]:这会失败并出现 CryptographicException 和消息:“找不到对象或属性”。
尝试使用 BouncyCastle .NET 类进行解码失败:
byte[] 数据 = Convert.FromBase64String( input_message );
Org.BouncyCastle.Cms.CmsSignedData signedData = new CmsDignedData(data);
Org.BouncyCastle.Cms.CmsEnvelopedData ed = new CmsEnvelopedData(signedD.ContentInfo);[*][*] 失败,出现“ArgumentException”和消息:“未知对象因素:BerTaggedObject”。
我意识到这不能满足 StackOverflows 对一个清晰简洁的问题的要求;但我想这只是反映了我这边缺乏清晰性:-(基本上我会非常感谢任何关于如何使用标准 Windows 类或BouncyCastle API;但以一些具体问题结束:
- 我可以从 Linux 上的 asn1parse 似乎处理我的消息这一事实推断出一些东西,而 Lipingshare Asn.1 编辑器失败了吗?
- SCEP 标准规定 CMS 消息应进行 BER 编码;而 asn1parse 程序采用“-inform DER”开关(并且仍然有效......),而 BouncyCastle 类似乎抱怨 BERTaggedObject。
感谢任何想法,想法或建议。
乔金