Dart.Mail 名前空間 > MailMessage クラス > SecureEncrypt メソッド : SecureEncrypt() メソッド |
MailMessageは、EncryptingAlgorithm.TripleDesと、各受信者(To、Cc、Bcc)に関連付けられた証明書の公開鍵を使用して暗号化されます。これらの証明書は、現在のユーザーのAddressBook証明書ストアから取得されます。暗号化は受信者ごとに実行されるため、受信者の数が多いほど、暗号化されたMailMessageのサイズは大きくなります。ヘッダは暗号化されません。
追加のコントロールが必要な場合は、SecureEncrypt(X509Certificate2Collection,EncryptingAlgorithm,Boolean)を使用します。
using System.Security.Cryptography.X509Certificates; private MailMessage getEncryptedMessage(MailMessage message) { // 暗号化に使用する証明書をCurrentUser/AddressBookストアで検索します。 // 以下のコードを実行すると、"message.SecureEncrypt()"と同じ暗号化メッセージが得られます。 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.TripleDes, false); return message; } } return null; }
Imports System.Security.Cryptography.X509Certificates Private Function getEncryptedMessage(ByVal message As MailMessage) As MailMessage ' 暗号化に使用する証明書をCurrentUser/AddressBookストアで検索します。 ' 以下のコードを実行すると、"message.SecureEncrypt()"と同じ暗号化メッセージが得られます。 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.TripleDes, False) Return message End If Next certificate Return Nothing End Function