我正在用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簽名,因此存在問題。 –