Dart.Mail 名前空間 > MailMessage クラス > SecureEncrypt メソッド : SecureEncrypt(X509Certificate2Collection,EncryptingAlgorithm,SubjectIdentifierType,Boolean) メソッド |
Public Overloads Sub SecureEncrypt( _ ByVal encryptingCertificates As X509Certificate2Collection, _ ByVal encryptingAlgorithm As EncryptingAlgorithm, _ ByVal subjectIdentifier As SubjectIdentifierType, _ ByVal includeHeaders As Boolean _ )
public void SecureEncrypt( X509Certificate2Collection encryptingCertificates, EncryptingAlgorithm encryptingAlgorithm, SubjectIdentifierType subjectIdentifier, bool includeHeaders )
例外 | 解説 |
---|---|
System.InvalidOperationException | すべての受信者と一致する証明書が見つかりません。 |
MailMessageは、各受信者(To、Cc、Bcc)に関連付けられた証明書の公開鍵を使用して暗号化されます。encryptingCertificatesが空の場合は、MailMessageの暗号化に使用された証明書(現在のユーザーのAddressBook証明書ストアから取得された、各受信者に対応する証明書)がこのパラメーターに格納されます。暗号化は受信者ごとに実行されるため、受信者の数が多いほど、暗号化されたMailMessageのサイズは大きくなります。
includeHeadersがfalseの場合は、コンテンツは暗号化されますが、メッセージヘッダはContentTypeを除いて変更されません。trueの場合は、メッセージ全体が暗号化され、復号化時にメールリーダーによって復元されます(これはS/MIMEバージョン3.1で導入されたもので、下位互換性はありません)。 この場合、Subject:、To:、From:、CC:などの機密性が高いヘッダフィールドは、暗号化した後にユーザーが削除できます。 To:、From:、CC:、またはBCC:ヘッダフィールドを削除した場合は、Smtp.SendまたはSend(Stream,String,String)を使用する必要があります。
成功した場合、MailMessageは変更され、IsSecureはtrueを返します。失敗した場合、MailMessageは変更されず、例外がスローされます。
using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Pkcs; private MailMessage getEncryptedMessage(MailMessage message) { // 暗号化に使用する証明書をCurrentUser/AddressBookストアで検索します。 X509Certificate2Collection encryptingCertificates = new X509Certificate2Collection(); X509Store addressBookStore = new X509Store(StoreName.AddressBook, StoreLocation.CurrentUser); addressBookStore.Open(OpenFlags.ReadOnly); foreach (X509Certificate2 certificate in addressBookStore.Certificates) { if (certificate.Subject.Contains("E=" + message.To)) { encryptingCertificates.Add(certificate); // メッセージを暗号化します。 message.SecureEncrypt(encryptingCertificates, EncryptingAlgorithm.Aes256, SubjectIdentifierType.SubjectKeyIdentifier, false); return message; } } return null; }
Imports System.Security.Cryptography.X509Certificates Imports System.Security.Cryptography.Pkcs Private Function getEncryptedMessage(ByVal message As MailMessage) As MailMessage ' 暗号化に使用する証明書をCurrentUser/AddressBookストアで検索します。 Dim encryptingCertificates As New X509Certificate2Collection() Dim addressBookStore As New X509Store(StoreName.AddressBook, StoreLocation.CurrentUser) addressBookStore.Open(OpenFlags.ReadOnly) For Each certificate As X509Certificate2 In addressBookStore.Certificates If certificate.Subject.Contains("E=" & message.To) Then encryptingCertificates.Add(certificate) ' メッセージを暗号化します。 message.SecureEncrypt(encryptingCertificates, EncryptingAlgorithm.Aes256, SubjectIdentifierType.SubjectKeyIdentifier, False) Return message End If Next certificate Return Nothing End Function