IOpcDigitalSignatureManager::ReplaceSignatureXml メソッド (msopc.h)

指定した署名パーツに格納されている既存の署名マークアップを置き換えます。

構文

HRESULT ReplaceSignatureXml(
  [in]          IOpcPartUri          *signaturePartName,
  [in]          const UINT8          *newSignatureXml,
  [in]          UINT32               count,
  [out, retval] IOpcDigitalSignature **digitalSignature
);

パラメーター

[in] signaturePartName

既存の署名マークアップを格納する署名パーツのパーツ名を表す IOpcPartUri インターフェイス ポインター。

[in] newSignatureXml

既存のマークアップを置き換える署名マークアップを含むバッファー。

[in] count

newSignatureXml バッファーのサイズ。

[out, retval] digitalSignature

newSignatureXml で渡される署名マークアップから派生した署名を表す新しい IOpcDigitalSignature インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード/値 説明
S_OK
メソッドが成功しました。
E_POINTER
signaturePartNamenewSignatureXmlおよび digitalSignature パラメーターの少なくとも 1 つが NULL です
OPC_E_DS_DUPLICATE_PACKAGE_OBJECT_REFERENCES
0x8051002D
newSignatureXml バッファーには、パッケージ Object 要素を参照する複数の Reference 要素が含まれていますが、このような Reference は 1 つだけ許可されます。
OPC_E_DS_DUPLICATE_SIGNATURE_PROPERTY_ELEMENT
0x80510028
newSignatureXml バッファーには、同じ Id 属性を持つ複数の SignatureProperty 要素が含まれています。
OPC_E_DS_EXTERNAL_SIGNATURE_REFERENCE
0x8051002F
newSignatureXml バッファーでは、Reference 要素はパッケージの外部にあるオブジェクトを参照します。 参照 要素は、内部のパーツまたは Object 要素を指す必要があります。
OPC_E_DS_INVALID_CANONICALIZATION_METHOD
0x80510022
サポートされていない正規化メソッドが要求されたか、 newSignatureXml バッファーで使用されました。
OPC_E_DS_INVALID_RELATIONSHIP_TRANSFORM_XML
0x80510021
newSignatureXml バッファーでは、リレーションシップ変換の使用と変換の選択基準を示す Transform 要素が、OPC で指定されたスキーマに準拠していません。
OPC_E_DS_INVALID_SIGNATURE_COUNT
0x8051002B
newSignatureXml バッファーには、厳密に 1 つの署名の署名マークアップが含まれていません。
OPC_E_DS_INVALID_SIGNATURE_XML
0x8051002A
newSignatureXml バッファーのサイズは 0 ですが、このバッファーのサイズは 0 より大きい必要があります。
OPC_E_DS_MISSING_CANONICALIZATION_TRANSFORM
0x80510032
newSignatureXml バッファーでは、リレーションシップ変換の後に正規化メソッドが続かない。リレーションシップ変換の後に正規化メソッドを指定する必要があります。
OPC_E_DS_MISSING_PACKAGE_OBJECT_REFERENCE
0x8051002E
newSignatureXml バッファーで、パッケージ固有の Object 要素への参照が見つかりませんでした。
OPC_E_DS_MISSING_SIGNATURE_ALGORITHM
0x8051002C
newSignatureXml バッファーのシグネチャ マークアップでは、シグネチャ メソッド アルゴリズムが指定されていません。
OPC_E_DS_MISSING_SIGNATURE_PROPERTIES_ELEMENT
0x80510026
newSignatureXml バッファーで、SignatureProperties 要素が見つかりませんでした。
OPC_E_DS_MISSING_SIGNATURE_PROPERTY_ELEMENT
0x80510027
newSignatureXml バッファーで、SignatureProperties 要素の SignatureProperty 子要素が見つかりませんでした。
OPC_E_DS_MISSING_SIGNATURE_TIME_PROPERTY
0x80510029
newSignatureXml バッファーでは、Id 属性値が "idSignatureTime" の SignatureProperty 要素が存在しないか、正しく構築されていません。
OPC_E_DS_MULTIPLE_RELATIONSHIP_TRANSFORMS
0x80510031
newSignatureXml バッファーでは、Reference 要素に対して複数のリレーションシップ変換が指定されていますが、許可されるリレーションシップ変換は 1 つだけです。
OPC_E_DS_REFERENCE_MISSING_CONTENT_TYPE
0x80510030
newSignatureXml バッファー内の Reference 要素の URI 属性値には、参照されるパーツのコンテンツ タイプは含まれません。
OPC_E_DS_SIGNATURE_PROPERTY_MISSING_TARGET
0x80510045
newSignatureXml バッファーでは、SignatureProperty 要素に必要な Target 属性がありません。
OPC_E_DS_SIGNATURE_REFERENCE_MISSING_URI
0x80510043
newSignatureXml バッファーにある Reference 要素には URI 属性が必要ですが、 属性がありません。
OPC_E_DS_UNSIGNED_PACKAGE
0x80510055
パッケージは署名されていません。そのため、署名マークアップを置き換えることはできません。
OPC_E_NO_SUCH_PART
0x80510018
指定した部分が存在しません。

注釈

このメソッドは、 newSignatureXml パラメーター内の新しい署名マークアップから派生した署名を検証しません。

呼び出し元は、指定された署名部分の既存の署名マークアップを置き換える新しい署名マークアップが署名を中断しないことを確認する必要があります。

このメソッドは、既存の署名マークアップを変更します。指定された署名部分をソースとして持つ証明書とリレーションシップは保持されます。

スレッド セーフ

パッケージ 化オブジェクトはスレッド セーフではありません。

詳細については、Packaging API を使用したはじめにに関するページを参照してください。

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー msopc.h

こちらもご覧ください

コア パッケージ インターフェイス

デジタル署名の概要

Packaging API を使用したはじめに

IOpcDigitalSignatureManager

概要

パッケージ化 API プログラミング ガイド

パッケージ化 API リファレンス

API サンプルのパッケージ化

デジタル署名インターフェイスのパッケージ化

インターフェイスのパッケージ化

参照