3

私はメール全体を暗号化され署名された文字列として持っています。

Outlook Expressのデフォルトでは、受信者が送信者の公開証明書を持っていない場合、公開証明書はメールから抽出され、証明書マネージャーに保存されます。後で、そのメールに返信できます。このメールも暗号化されて署名されたものになります。

私はc#を使用して同じ機能を実現したいと思います。

メールのテキストから公開証明書を抽出して証明書マネージャーに保存するにはどうすればよいですか?

4

1 に答える 1

3

使用する署名の種類によって異なりますが、電子メールの終了場所と電子メールの署名部分の開始場所がわかっている場合は、System.Securityという名前の.NETのクラスを使用してこの情報を解析できるはずです。 Cryptography.Pkcs.SignedCms。

これがどのように見えるかの擬似コードの例...必要に応じてさらに議論できるといういくつかの仮定をしました。関数参照は、その背後で実行されることを期待しています。必要に応じて、これらの方法で何が必要になるかについてさらに話し合うことができます。

var rawEmailBytes = pseudo_GetRawEmail();  // function that gets the raw email
var signedCmsBytes = psuedo_GetSignedCmsData(rawEmailBytes)   // would pull out the signed package bytes from the email
var signedCms = new SignedCms();
signedCms.Decode(signedCmsBytes)

foreach (var certificate in signedCms.Certificates) {
   psuedo_StoreCertificate(certificate)   // store certificate using the cert manager.
}

証明書を署名パッケージに含めることはオプションであるため、証明書がこのコレクションに格納される保証はありません。さらに話し合いたい場合は、メモを追加してください。

また、このシグニチャタイプのRFCを確認したい場合は、URLhttp://www.ietf.org/rfc/rfc3852.txtで読むことができます。特に、セクション5.1から始まる署名付きデータ型を見てください。

于 2011-12-07T16:37:36.577 に答える