GrapeCity Secure Mail for .NET 4.0J
SecureEncrypt(X509Certificate2Collection,EncryptingAlgorithm,SubjectIdentifierType,Boolean) メソッド
使用例 

入力/出力。ユーザーのAddressBook証明書ストアにある証明書の使用をオーバーライドする、オプションのSystem.Security.Cryptography.X509Certificates.X509Certificate2Collection。空の場合は、使用された証明書が格納されます。nullを指定できます。
使用する暗号化アルゴリズム。
証明書を選択するために使用するサブジェクトの識別子。System.Security.Cryptography.Pkcs.SubjectIdentifierTypeのSubjectKeyIdentifier を指定します。
trueの場合、メッセージヘッダフィールドが暗号化ペイロードに移動されます。
S/MIMEエンコーディングを使用してMailMessageを暗号化します。
シンタックス

パラメータ

encryptingCertificates
入力/出力。ユーザーのAddressBook証明書ストアにある証明書の使用をオーバーライドする、オプションのSystem.Security.Cryptography.X509Certificates.X509Certificate2Collection。空の場合は、使用された証明書が格納されます。nullを指定できます。
encryptingAlgorithm
使用する暗号化アルゴリズム。
subjectIdentifier
証明書を選択するために使用するサブジェクトの識別子。System.Security.Cryptography.Pkcs.SubjectIdentifierTypeのSubjectKeyIdentifier を指定します。
includeHeaders
trueの場合、メッセージヘッダフィールドが暗号化ペイロードに移動されます。
例外
例外解説
System.InvalidOperationExceptionすべての受信者と一致する証明書が見つかりません。
解説

MailMessageは、各受信者(ToCcBcc)に関連付けられた証明書の公開鍵を使用して暗号化されます。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
参照

参照

MailMessage クラス
MailMessage メンバ
オーバーロード一覧

 

 


© 2003, GrapeCity inc. All rights reserved.