Dart.Mail 名前空間 > MailMessage クラス > SecureDecode メソッド : SecureDecode(X509Certificate2Collection,Boolean) メソッド |
Public Overloads Function SecureDecode( _ ByVal decryptingCertificates As X509Certificate2Collection, _ ByVal importSigningCertificate As Boolean _ ) As SignerInfoCollection
public SignerInfoCollection SecureDecode( X509Certificate2Collection decryptingCertificates, bool importSigningCertificate )
例外 | 解説 |
---|---|
System.FormatException | 形式が認識されません。 |
System.Security.Cryptography.CryptographicException | 暗号操作を完了できませんでした。署名者の検証に失敗した場合にスローされます。 |
IsSecureがtrueの場合、このメソッドはS/MIMEメッセージの検証と復号化の一方または両方を適宜実行します。成功した場合、IsSecureはfalseを返します。 失敗した場合は例外がスローされます。署名者の検証で例外がスローされる前に復号化が成功する場合があるため、例外がスローされた場合にメッセージが部分的にデコードされることがあります。
ユーザーのMY証明書ストア内の証明書を補完するには、decryptingCertificatesを指定します。ユーザーの証明書ストアに有効な証明書が格納されている場合は、nullを使用します。
importSigningCertificatesがtrueの場合は、署名証明書がAddressBook証明書ストアに追加されます。 これにより、以後この送信者に送信するメッセージでSecureEncryptを使用するとき、暗号化証明書を指定する必要がなくなります。これは、SecureEncryptがAddressBook証明書ストアで一致する証明書を検索するためです。
デジタル署名を確認し、証明書を有効にするには、System.Security.Cryptography.Pkcs.SignerInfoCollectionの戻り値の各メンバーに対して SignerInfo.CheckSignature(Boolean)を実行します。
using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Pkcs private MailMessage getDecodedMessage(MailMessage message) { // 復号化に使用する証明書を、エクスポートされた証明書ファイルからロードします(X509Storeからロードすることもできます)。 X509Certificate2 decryptingCertificate = new X509Certificate2(Application.StartupPath + "\\myCertificate.pfx"); // メッセージをデコードし、署名証明書をAddressBook証明書ストアにインポートします // (復号化証明書がすでにMY証明書ストアに存在する場合は、 // パラメーターのないSecureDecode()を代わりに使用できます)。 SignerInfoCollection signatories = message.SecureDecode(new X509Certificate2Collection(decryptingCertificate), true); // 署名を確認し、証明書を有効にします foreach (SignerInfo signator in signatories) signator.CheckSignature(false); return message; }
Imports System.Security.Cryptography.X509Certificates Imports System.Security.Cryptography.Pkcs Private Function getDecodedMessage(ByVal message As MailMessage) As MailMessage ' 復号化に使用する証明書を、エクスポートされた証明書ファイルからロードします(X509Storeからロードすることもできます)。 Dim decryptingCertificate As New X509Certificate2(Application.StartupPath & "\myCertificate.pfx") ' メッセージをデコードし、署名証明書をAddressBook証明書ストアにインポートします ' (復号化証明書がすでにMY証明書ストアに存在する場合は、 ' パラメーターのないSecureDecode()を代わりに使用できます)。 Dim signatories As SignerInfoCollection = message.SecureDecode(New X509Certificate2Collection(decryptingCertificate), True) '署名を確認し、証明書を有効にします For Each signator As SignerInfo In signatories signator.CheckSignature(False) Next signator Return message End Function