C#のみを使用して、RSAキーペアを生成し、それをDKIMのPEMのようなフォーマットと互換性のあるASN1フォーマットにエクスポートすることは可能ですか?
サードパーティへの依存を減らしたいのですが、私が見つけたものをいくつか紹介します
弾む城
暗号化アプリケーション ブロック
Win32 PFXImportCertStore
- http://msdn.microsoft.com/en-us/library/aa387314(v=vs.85).aspx
- http://msdn.microsoft.com/en-us/library/aa387313(v=vs.85)
PEM のインポート
- このコードは PEM データのみをインポートしますが、.NET 4.0 およびキーhttp://www.codeproject.com/Articles/162194/Certificates-to-DB-and-の先行ゼロの問題を修正するという点で OpenSSL とは異なります。戻る
Microsoft の CLR セキュリティの強化
マイクロソフト CNG
コードプレックス (上記) で .NET dll を使用した Microsoft CNG プロバイダーのコードを次に示します...ただし、公開キーと秘密キーの両方をDKIM 互換の ASN1 形式でエクスポートおよびインポートする方法がわかりません。
byte[] pkcs8PrivateKey = null;
byte[] signedData = null;
CngKey key = CngKey.Create(CngAlgorithm2.Rsa);
byte[] exportedPrivateBytes = key.Export(CngKeyBlobFormat.GenericPrivateBlob);
string exportedPrivateString= Encoding.UTF8.GetString(exportedPrivateBytes);
pkcs8PrivateKey = Encoding.UTF8.GetBytes(exportedPrivateString);
using (CngKey signingKey = CngKey.Import(pkcs8PrivateKey, CngKeyBlobFormat.Pkcs8PrivateBlob))
{
using (RSACng rsa = new RSACng(signingKey))
{
rsa.SignatureHashAlgorithm = CngAlgorithm.Sha1;
signedData = rsa.SignData(dataToSign);
}
}
質問
キー ペアを作成し、それらの値を PEM 形式でエクスポート/インポートする方法を示す Microsoft のライブラリ (Win32、PFX、または Codeplex 上の CLR) を使用する直接的な例はありますか?