SignedData.Sign メソッド

[ Sign メソッドは、[要件] セクションで指定したオペレーティング システムで使用できます。 代わりに、System.Security.Cryptography.Pkcs 名前空間で SignedCms クラスを使用します。

Sign メソッドは、署名するコンテンツにデジタル署名を作成します。 デジタル署名は、署名者の秘密キーを使用して暗号化される署名対象のコンテンツの ハッシュ で構成されます。 このメソッドは、 SignedData.Content プロパティが初期化された後にのみ使用できます。 署名が既にあるオブジェクトに対して Sign メソッドが呼び出されると、古い署名が置き換えられます。 署名は、SHA1 署名アルゴリズムを使用して作成されます。

構文

SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)

パラメーター

署名者 [in, optional]

データの 署名者の署名 者オブジェクトへの参照。 署名者オブジェクトは、署名に使用される証明書秘密キーにアクセスできる必要があります。 このパラメーターには NULL を指定できます。詳細については、「備考」を参照してください。

bDetached [in, optional]

True の場合、署名するデータはデタッチされます。つまり、署名されたコンテンツは、署名されたオブジェクトの一部として含まれません。 デタッチされたコンテンツの署名を確認するには、アプリケーションに元のコンテンツのコピーが必要です。 デタッチされたコンテンツは、署名されたメッセージの受信者が署名されたデータの元のコピーを持っている場合に、Web 経由で送信される署名済みオブジェクトのサイズを小さくするためによく使用されます。 既定値は Falseです。

EncodingType [in, optional]

署名されたデータのエンコード方法を示す CAPICOM_ENCODING_TYPE 列挙体の値。 既定値は CAPICOM_ENCODE_BASE64 です。 このパラメーターには、次の値のいずれかを指定できます。

説明
CAPICOM_ENCODE_ANY
このエンコードの種類は、入力データに不明なエンコードの種類がある場合にのみ使用されます。 この値を使用して出力のエンコードの種類を指定する場合は、代わりにCAPICOM_ENCODE_BASE64が使用されます。 CAPICOM 2.0 で導入されました。
CAPICOM_ENCODE_BASE64
データは base64 でエンコードされた文字列として保存されます。
CAPICOM_ENCODE_BINARY
データは純粋なバイナリ シーケンスとして保存されます。

 

戻り値

このメソッドは、エンコードされた署名されたデータを含む文字列を返します。

このメソッドが失敗すると、エラーがスローされます。 Err オブジェクトには、エラーに関する追加情報が含まれます。

解説

重要

このメソッドが Web スクリプトから呼び出されると、スクリプトは秘密キーを使用してデジタル署名を作成する必要があります。 信頼されていない Web サイトで秘密キーを使用することを許可することは、セキュリティ上のリスクです。 このメソッドが最初に呼び出されたときに、Web サイトで秘密キーを使用できるかどうかを確認するダイアログ ボックスが表示されます。 スクリプトで秘密キーを使用してデジタル署名を作成し、[このダイアログ ボックスをもう一度表示しない] を選択すると、秘密キーを使用してデジタル署名を作成するそのドメイン内のスクリプトに対してダイアログ ボックスが表示されなくなります。 ただし、秘密キーを使用してデジタル署名を作成しようとするドメイン外のスクリプトでも、このダイアログ ボックスが表示されます。 スクリプトで秘密キーの使用を許可せず、[このダイアログ ボックスをもう一度表示しない] を選択すると、そのドメイン内のスクリプトは、秘密キーを使用してデジタル署名を作成する機能を自動的に拒否されます。

 

デジタル署名を作成するには秘密キーを使用する必要があるため、このメソッドを使用しようとする Web ベースのアプリケーションでは、セキュリティ上の理由から、ユーザーが秘密キーの使用を承認できるようにするユーザー インターフェイス プロンプトが必要になります。

Signer パラメーター値には、次の結果が適用されます。

  • Signer パラメーターが NULL でない場合、このメソッドは関連付けられた証明書によって指される秘密キーを使用して署名を暗号化します。 証明書によって指されている秘密キーが使用できない場合、メソッドは失敗します。
  • 署名者パラメーターが NULL で、秘密キーにアクセスできる証明書が CURRENT_USER MY ストアに 1 つだけ存在する場合、その証明書を使用して署名が作成されます。
  • Signer パラメーターが NULL の場合、Settings.EnablePromptForCertificateUI プロパティの値は true で、使用可能な秘密キーを持つ複数の証明書が CURRENT_USER MY ストアに存在する場合は、使用する証明書を選択できるダイアログ ボックスが表示されます。
  • Signer パラメーターが NULL、Settings.EnablePromptForCertificateUI プロパティが false の場合、メソッドは失敗します。
  • Signer パラメーターが NULL で、使用可能な秘密キーを持つ証明書CURRENT_USER MY ストアに存在しない場合、メソッドは失敗します。

必要条件

要件
再頒布可能パッケージ
Windows Server 2003 および Windows XP の CAPICOM 2.0 以降
[DLL]
Capicom.dll

関連項目

暗号化オブジェクト

SignedData