我正在用c#中的自签名X509Certificate
签署一些数据。签名结果为二进制byte[]
。我想将此签名保存为pkcs#7
格式文件,其扩展名为.p7b
。当我根据需要使用FileStream
保存该文件时。它会生成一个无效的p7b
文件。x509Certificate - 以pkcs#7格式保存二进制签名(.net c#)
任何人都可以将此签名保存为有效的外部文件吗?或者指出该方法是否有问题?
//编辑:添加代码询问由Eugene Mayevski
// Open Store Location & fetch certificate
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
X509Certificate2Collection certifcates = store.Certificates;
X509Certificate2 certificate = certifcates[0];`
// fetch private key
string publicKeyString = certificate.GetPublicKeyString();
RSACryptoServiceProvider privateKey = certificate.PrivateKey as RSACryptoServiceProvider;
// get binary of data & sign it.
byte[] buffer = Encoding.Default.GetBytes("Sample data to sign. Although it would be a document.");
byte[] signature = privateKey.SignData(buffer, new SHA1Managed());
你看看http://msdn.microsoft.com/en-us/library/ms180948%28v=vs.85%29.aspx? 你不想存储证书,但签名,对吧? – BatteryBackupUnit
是的,我需要自己存储签名。我已经浏览了您提供的链接。我认为这些功能封装在.net 4.0中,因为命名空间System.Security.Cryptography.pkcs不可用。无论如何,数据正在签署和验证。唯一我想要的是将Signature以适当的文件格式存储。 – Ram
很高兴看到您首先使用的代码创建签名。这可能是因为您实际上没有创建PKCS#7签名,因此存在问题。 –