IOpcDigitalSignatureManager::Sign メソッド (msopc.h)
指定した証明書と IOpcSigningOptions インターフェイス ポインターを使用して署名を生成して、パッケージに署名します。 結果のシグネチャは、 IOpcDigitalSignature インターフェイス ポインターによって表されます。
構文
HRESULT Sign(
[in] const CERT_CONTEXT *certificate,
[in] IOpcSigningOptions *signingOptions,
[out, retval] IOpcDigitalSignature **digitalSignature
);
パラメーター
[in] certificate
証明書を含む CERT_CONTEXT 構造体へのポインター。
[in] signingOptions
署名の生成に使用される IOpcSigningOptions インターフェイス ポインター。
[out, retval] digitalSignature
署名を表す新しい IOpcDigitalSignature インターフェイス ポインター。
戻り値
このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。
リターン コード/値 | 説明 |
---|---|
|
メソッドが成功しました。 |
|
証明書、signingOptions、digitalSignature パラメーターの少なくとも 1 つが NULL です。 |
|
既定のダイジェスト メソッドが設定されていません。これを設定するには、 IOpcSigningOptions::SetDefaultDigestMethod を呼び出します。 |
|
パッケージ コンポーネントのダイジェスト値、または署名用に参照された署名マークアップ内の要素を取得できません。 |
|
シグネチャの時刻形式が有効な OPC_SIGNATURE_TIME_FORMAT 列挙値ではありません。 |
|
指定されたリレーションシップ署名オプションが有効な OPC_RELATIONSHIPS_SIGNING_OPTION 列挙値ではありません。 |
|
パッケージ内の署名が正しく形成されていません。 署名値を取得できません。 |
|
シグネチャ メソッドが設定されていません。 IOpcSigningOptions::SetSignatureMethod を呼び出して、シグネチャ メソッドを設定します。 |
|
指定した部分が存在しません。 |
|
Cryptography API からの HRESULT エラー コード。 |
|
Windows Web Services API からの HRESULT エラー コード。 |
注釈
このメソッドは Packaging オブジェクトを使用してパッケージを変更します。 結果の変更は、パッケージ自体が保存されるまで保存されません。
このメソッドを呼び出してシグネチャを生成する前に、 IOpcSigningOptions::SetDefaultDigestMethod メソッドと IOpcSigningOptions::SetSignatureMethod メソッドを 呼び出します。
このメソッドで必要な IOpcSigningOptions インターフェイス ポインターを作成するには、 CreateSigningOptions メソッドを 呼び出します。
- デジタル署名の配信元パーツ
- デジタル署名の元のリレーションシップの種類のパッケージリレーションシップ
- 署名マークアップを含む 1 つの署名パーツ
- 証明書を含む 1 つ以上の部分
- 署名パーツを対象とし、デジタル署名の配信元パーツをソースとして持つ 1 つのリレーションシップ
- 証明書を含み、そのソースとして別の署名部分を持つ署名パーツを対象とする 1 つ以上のリレーションシップ
Sign が失敗した場合、上記のパーツとリレーションシップのいずれかがパッケージ内の Packaging オブジェクトによって表される場合があります。 メソッドが OPC_E_DS_SIGNATURE_METHOD_NOT_SETまたはエラー コード OPC_E_DS_DEFAULT_DIGEST_METHOD_NOT_SET 返した場合、パッケージは変更されていません。
Sign が成功した場合、署名されたエンティティに対してダイジェスト値が計算され、生成された署名が署名マークアップとしてシリアル化されます。 署名されたエンティティには、 Signature 要素、参照、パーツ、リレーションシップ、パッケージ固有およびアプリケーション固有の Object 要素が含まれます。
呼び出し元が IOpcSigningOptions インターフェイスを使用して署名情報を設定しているときにパッケージ署名に発生するエラーは、 Sign が呼び出されるまで公開されない場合があります。
スレッド セーフ
パッケージ 化オブジェクトはスレッド セーフではありません。
詳細については、Packaging API を使用したはじめにに関するページを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | msopc.h |
こちらもご覧ください
概要
リファレンス