GrapeCity Secure Mail for .NET 4.0J
SecureSign(X509Certificate2,X509IncludeOption,DigestAlgorithm,Boolean,Boolean) メソッド
使用例 

MailMessageの署名に使用する証明書。nullの場合は、Fromを使用してMY証明書ストアから証明書が取得されます。
証明書チェーン内のどの証明書を含めるかを指定します。
メッセージが変更されていないことの検証に使用するDigestAlgorithm
trueの場合は、デタッチされたデジタル署名を使用して"multipart/signed"メッセージを作成します。それ以外の場合は、signed-dataを使用して"application/pkcs7-mime"メッセージが作成されます。
このパラメーターがtrueで、detachedがfalseの場合、メッセージヘッダフィールドを署名ペイロードに移動することによってヘッダフィールドが保護されます。
S/MIMEエンコーディングを使用してMailMessageを署名します。
シンタックス

パラメータ

signingCertificate
MailMessageの署名に使用する証明書。nullの場合は、Fromを使用してMY証明書ストアから証明書が取得されます。
includeOption
証明書チェーン内のどの証明書を含めるかを指定します。
digestAlgorithm
メッセージが変更されていないことの検証に使用するDigestAlgorithm
detached
trueの場合は、デタッチされたデジタル署名を使用して"multipart/signed"メッセージを作成します。それ以外の場合は、signed-dataを使用して"application/pkcs7-mime"メッセージが作成されます。
includeHeaders
このパラメーターがtrueで、detachedがfalseの場合、メッセージヘッダフィールドを署名ペイロードに移動することによってヘッダフィールドが保護されます。

戻り値の型

署名メッセージに含まれる証明書を含むSystem.Security.Cryptography.X509Certificates.X509Certificate2Collection
例外
例外解説
System.InvalidOperationExceptionFromアドレスと一致する署名証明書が見つかりません。
解説

署名メッセージの受信者は通常、署名証明書を自分のAddressBook証明書ストアに追加します。これにより、以後そのアドレスに送信するメッセージでS/MIME暗号化を実行するときにその証明書を使用できます。署名証明書には暗号化に必要な公開鍵が含まれています。

detachedがtrueの場合は、最初のパート(Parts[0])でメッセージコンテンツが平文で提供され、2番目のパート(Attachment型のParts[1])でデジタル署名が提供されます。 マルチパートメッセージでは、マルチパートMIMEエンティティを使用して複数のパートがParts[0]として集約されます(これは自動的に行われます)。 したがって、ほとんどの非S/MIMEメールリーダーはコンテンツを表示でき、S/MIMEメールリーダーはデジタル署名を使用してメッセージの改ざんをチェックできます。detachedがfalseの場合は、メッセージコンテンツがデジタル署名と組み合わせて単一のパート(Parts[0])に格納されます。この場合、非S/MIMEメールリーダーではコンテンツを表示できません。 通常、署名のみが使用される場合は、互換性のためにデタッチされた署名を使用することが推奨されます。標準的な署名と暗号化の両方が必要な場合は、まずdetachedにfalseを指定してこのメソッドを実行してから、SecureEncryptを使用します。

includeHeadersがfalseの場合は、コンテンツは暗号化されますが、メッセージヘッダはContentTypeを除いて変更されません。trueの場合は、メッセージ全体が暗号化され、復号化時にメールリーダーによって復元されます(これはバージョン3.1で導入されたもので、下位互換性はありません)。 この場合、Subject:、To:、From:、CC:などの機密性が高いヘッダフィールドは、署名した後に削除できます。ただしメールアドレスは、メッセージから削除した場合でもSmtp.Send()には含める必要があります。

バージョン2、3.0、および3.1とほぼ下位互換性があるS/MIMEバージョン3.2 RFC(5751、5652、5035、2634)に準拠します。

使用例
以下のサンプルコードは、送信者のデジタル署名を使用してメッセージを署名する方法を示します。
using System.Security.Cryptography.X509Certificates;

private MailMessage getSignedMessage(MailMessage message)
{
    // 署名に使用する証明書をCurrentUser/My証明書ストアで検索します。
    // 以下のコードを実行すると、"message.SecureSign()"と同じ署名メッセージが得られます。
    X509Store myPersonalStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
    myPersonalStore.Open(OpenFlags.ReadOnly);
    foreach (X509Certificate2 certificate in myPersonalStore.Certificates)
    {
        if (certificate.Subject.Contains("E=" + message.From.ToString()))
        {
            // メッセージを署名します。
            message.SecureSign(certificate, X509IncludeOption.ExcludeRoot, DigestAlgorithm.Sha1, true, false);
            return message;
        }
    }
    return null;
}
Imports System.Security.Cryptography.X509Certificates

Private Function getSignedMessage(ByVal message As MailMessage) As MailMessage
    ' 署名に使用する証明書をCurrentUser/My証明書ストアで検索します。
    ' 以下のコードを実行すると、"message.SecureSign()"と同じ署名メッセージが得られます。
    Dim myPersonalStore As New X509Store(StoreName.My, StoreLocation.CurrentUser)
    myPersonalStore.Open(OpenFlags.ReadOnly)
    For Each certificate As X509Certificate2 In myPersonalStore.Certificates
        If certificate.Subject.Contains("E=" & message.From.ToString()) Then
            ' メッセージを署名します。
            message.SecureSign(certificate, X509IncludeOption.ExcludeRoot, DigestAlgorithm.Sha1, True, False)
            Return message
        End If
    Next certificate
    Return Nothing
End Function
参照

参照

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

 

 


© 2003, GrapeCity inc. All rights reserved.