Win32 API 日本語リファレンス
ホームStorage.Packaging.Opc › IOpcSignatureRelationshipReferenceSet

IOpcSignatureRelationshipReferenceSet

COM
IID9f863ca5-3631-404c-828d-807e0715069b継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

署名対象のリレーションシップを含む Relationships パートへの参照を表す、IOpcSignatureRelationshipReference インターフェイスポインターの順序なしセットです。

解説(Remarks)

Relationships パートへの参照を表す IOpcSignatureRelationshipReference インターフェイスポインターを作成するには、Create メソッドを呼び出します。この参照は、署名の生成時に、その Relationships パート内のすべてのリレーションシップを署名するのか、一部のみを署名するのかを示します。

IOpcSignatureRelationshipReferenceSet インターフェイスポインターを取得するには、IOpcSigningOptions::GetSignatureRelationshipReferenceSet メソッドを呼び出します。

IOpcSignatureRelationshipReference インターフェイスポインターが作成されてセットに追加されると、それが表す参照はパッケージの保存時に保存されます。

IOpcSignatureRelationshipReference インターフェイスポインターがセットから削除されると、それが表す参照はパッケージの保存時に保存されません。

スレッドセーフ

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

詳細については、Getting Started with the Packaging API を参照してください。

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Create(IOpcUri* sourceUri, LPWSTR digestMethod, OPC_RELATIONSHIPS_SIGNING_OPTION relationshipSigningOption, IOpcRelationshipSelectorSet* selectorSet, OPC_CANONICALIZATION_METHOD transformMethod, IOpcSignatureRelationshipReference** relationshipReference)

Relationships パートへの参照を表す IOpcSignatureRelationshipReference インターフェイスポインターを作成し、新しいインターフェイスポインターをセットに追加します。

sourceUriIOpcUri*in署名対象として選択されるリレーションシップのソース URI を表す IOpcUri インターフェイスポインターです。
digestMethodLPWSTRin

選択されるリレーションシップに使用されるダイジェストメソッドです。既定のダイジェストメソッドを使用するには、このパラメーターに NULL を渡します。

重要 既定のダイジェストメソッドは、IOpcDigitalSignatureManager::Sign を呼び出す前に、IOpcSigningOptions::SetDefaultDigestMethod メソッドを呼び出して設定しておく必要があります。
relationshipSigningOptionOPC_RELATIONSHIPS_SIGNING_OPTIONin

署名対象として選択されるリレーションシップが、参照対象の Relationships パート内のすべてのリレーションシップであるか、その一部であるかを示す値です。

relationshipSigningOption の値が他のパラメーターに与える影響については、「解説」を参照してください。

selectorSetIOpcRelationshipSelectorSet*in

参照対象の Relationships パート内で、署名対象として選択するリレーションシップの一部を特定するために使用できる IOpcRelationshipSelectorSet インターフェイスポインターです。

relationshipSigningOptionOPC_RELATIONSHIP_SIGN_PART に設定されている場合、selectorSetNULL です。

selectorSet の値については、「解説」を参照してください。

transformMethodOPC_CANONICALIZATION_METHODin

選択されたリレーションシップのリレーションシップマークアップに適用される正規化メソッドを示す値です。

relationshipSigningOptionOPC_RELATIONSHIP_SIGN_USING_SELECTORS に設定されている場合、transformMethod の値は無視されます。

relationshipSigningOptionOPC_RELATIONSHIP_SIGN_USING_SELECTORS に設定されている場合に適用される変換メソッドの詳細については、「解説」を参照してください。

relationshipReferenceIOpcSignatureRelationshipReference**out参照された Relationships パートを表す、新しい IOpcSignatureRelationshipReference インターフェイスポインターです。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
relationshipSigningOption パラメーターに渡された値が、有効な OPC_RELATIONSHIPS_SIGNING_OPTION 列挙値ではありません。
E_INVALIDARG
transformMethod パラメーターに渡された値が、有効な OPC_CANONICALIZATION_METHOD 列挙値ではありません。
E_POINTER
sourceUri パラメーターが NULL です。
E_UNEXPECTED
relationshipSigningOption パラメーターに OPC_RELATIONSHIP_SIGN_PART の値が渡されているにもかかわらず、selectorSet パラメーターに NULL が渡されていません。

解説(Remarks)

このメソッドは Relationships パートへの参照を作成します。参照された Relationships パートに格納されているリレーションシップは、署名の生成時にすべてを署名することも、一部のみを署名することもできます。

Relationships パート内のすべてのリレーションシップに署名するには、relationshipSigningOption パラメーターの値を OPC_RELATIONSHIP_SIGN_PART に、selectorSet パラメーターの値を NULL に設定してこのメソッドを呼び出します。

Relationships パート内のリレーションシップの一部に署名するには、relationshipSigningOption パラメーターの値を OPC_RELATIONSHIP_SIGN_USING_SELECTORS に、selectorSet パラメーターの値を IOpcRelationshipSelectorSet インターフェイスポインターに設定してこのメソッドを呼び出します。IOpcRelationshipSelectorSet インターフェイスポインターを作成するには、CreateRelationshipSelectorSet メソッドを呼び出します。

次の表は、参照対象の Relationships パートに格納されているリレーションシップのすべてに署名するか一部に署名するかを示す参照を作成するために、このメソッドで必要となるパラメーター値をまとめたものです。

説明 relationshipSigningOption の値 selectorSet の値
Relationships パート内のすべてのリレーションシップに署名する OPC_RELATIONSHIP_SIGN_PART NULL
Relationships パート内のリレーションシップの一部に署名する OPC_RELATIONSHIP_SIGN_USING_SELECTORS IOpcRelationshipSelectorSet インターフェイスポインター

リレーションシップの一部に署名する場合、指定された変換メソッドは無視されます。代わりに、署名の生成時には、最初に Relationships Transform が適用され、次に OPC_CANONICALIZATION_C14N 正規化メソッドが適用されます。

IOpcSignatureRelationshipReference インターフェイスポインターが作成されてセットに追加されると、それが表す参照はパッケージの保存時に保存されます。

署名されないリレーションシップは、署名を無効にすることなくパッケージから削除、変更、または追加できます。署名対象としてリレーションシップの一部が選択されており、その一部が変更された場合、署名は無効になります。

重要 参照された Relationships パートに追加または変更されたリレーションシップのリレーションシップタイプが、選択された一部のリレーションシップの選択に使用されたリレーションシップタイプと一致する場合、選択された一部が変更される可能性があります。

スレッドセーフ

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

詳細については、Getting Started with the Packaging API を参照してください。

vtbl 4 HRESULT CreateRelationshipSelectorSet(IOpcRelationshipSelectorSet** selectorSet)

Create メソッドの selectorSet パラメーター値として使用する IOpcRelationshipSelectorSet インターフェイスポインターを作成します。

selectorSetIOpcRelationshipSelectorSet**out新しい IOpcRelationshipSelectorSet インターフェイスポインターです。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
selectorSet パラメーターが NULL です。

解説(Remarks)

参照対象の Relationships パートに格納されているリレーションシップのうち、署名の生成時に署名する一部を選択するには、relationshipSigningOption パラメーターの値を OPC_RELATIONSHIP_SIGN_USING_SELECTORS に、selectorSet パラメーターの値をこのメソッドで作成した IOpcRelationshipSelectorSet インターフェイスポインターに設定して、Create メソッドを呼び出します。

スレッドセーフ

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

詳細については、Getting Started with the Packaging API を参照してください。

vtbl 5 HRESULT Delete(IOpcSignatureRelationshipReference* relationshipReference)

指定された IOpcSignatureRelationshipReference インターフェイスポインターをセットから削除します。

relationshipReferenceIOpcSignatureRelationshipReference*in削除する IOpcSignatureRelationshipReference インターフェイスポインターです。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
relationshipReference パラメーターが NULL です。

解説(Remarks)

IOpcSignatureRelationshipReference インターフェイスポインターがセットから削除されると、それが表す参照はパッケージの保存時に保存されません。

スレッドセーフ

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

詳細については、Getting Started with the Packaging API を参照してください。

vtbl 6 HRESULT GetEnumerator(IOpcSignatureRelationshipReferenceEnumerator** relationshipReferenceEnumerator)

セット内の IOpcSignatureRelationshipReference インターフェイスポインターの列挙子を取得します。

relationshipReferenceEnumeratorIOpcSignatureRelationshipReferenceEnumerator**outセット内の IOpcSignatureRelationshipReference インターフェイスポインターの列挙子へのポインターです。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
relationshipReferenceEnumerator パラメーターが NULL です。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IOpcSignatureRelationshipReferenceSet "{9F863CA5-3631-404C-828D-807E0715069B}"
#usecom global IOpcSignatureRelationshipReferenceSet IID_IOpcSignatureRelationshipReferenceSet "{}"
#comfunc global IOpcSignatureRelationshipReferenceSet_Create                         3 sptr,wstr,int,sptr,int,sptr
#comfunc global IOpcSignatureRelationshipReferenceSet_CreateRelationshipSelectorSet  4 sptr
#comfunc global IOpcSignatureRelationshipReferenceSet_Delete                         5 sptr
#comfunc global IOpcSignatureRelationshipReferenceSet_GetEnumerator                  6 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。