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

IOpcSignatureRelationshipReference

COM
IID57babac6-9d4a-4e50-8b86-e5d4051eae7c継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

署名済み、または署名される予定のリレーションシップを含む Relationships パートへの参照を表します。

解説(Remarks)

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

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

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

重要 参照先の Relationships パートに追加または変更されたリレーションシップのリレーションシップタイプが、サブセット内の 1 つ以上のリレーションシップを選択するために使用されたリレーションシップタイプと一致する場合、選択されたサブセットが変更されることがあります。

このインターフェイスは、参照先の Relationships パート、署名済みまたは署名される予定の選択されたリレーションシップ、および参照自体に関する情報にアクセスするためのメソッドを提供します。署名が生成されると、これらの参照情報は署名の XML マークアップ (署名マークアップ) にシリアル化されます。署名マークアップでは、この情報は Relationships パートを識別する URI 属性値を持つ Reference 要素として表現されます。

スレッドセーフティ

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

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

メソッド 6

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

vtbl 3 HRESULT GetSourceUri(IOpcUri** sourceUri)

参照先の Relationships パートに格納されているリレーションシップのソース URI を取得します。

sourceUriIOpcUri**out参照先の Relationships パートに格納されているリレーションシップのソース URI へのポインター。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
sourceUri パラメーターが NULL です。
vtbl 4 HRESULT GetDigestMethod(LPWSTR* digestMethod)

選択されたリレーションシップのリレーションシップマークアップに適用するダイジェストメソッドを取得します。

digestMethodLPWSTR*out選択されたリレーションシップが署名される際に、そのリレーションシップマークアップに適用するダイジェストメソッド。

戻り値

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

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

解説(Remarks)

このメソッドは、digestMethod で返される文字列が使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。

スレッドセーフティ

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

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

vtbl 5 HRESULT GetDigestValue(BYTE** digestValue, DWORD* count)

選択されたリレーションシップが署名される際に計算されたダイジェスト値を取得します。

digestValueBYTE**out指定されたダイジェストメソッドを使用して計算されたダイジェスト値を格納するバッファーへのポインター。このメソッドは、選択されたリレーションシップが署名される際に、そのリレーションシップマークアップに適用されます。
countDWORD*out

digestValue バッファーのサイズ。

選択されたリレーションシップがまだ署名されていない場合、count は 0 になります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
digestValue および count パラメーターの少なくとも 1 つが NULL です。

解説(Remarks)

このメソッドは、digestValue で返されるバッファーが使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。

スレッドセーフティ

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

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

vtbl 6 HRESULT GetTransformMethod(OPC_CANONICALIZATION_METHOD* transformMethod)

選択されたリレーションシップが署名される際に、そのリレーションシップマークアップに適用する正規化メソッドを取得します。

transformMethodOPC_CANONICALIZATION_METHOD*out選択されたリレーションシップが署名される際に、そのリレーションシップマークアップに適用する正規化メソッド。

戻り値

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

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

解説(Remarks)

参照先の Relationships パート内のリレーションシップは、すべて署名することも、その一部のみを署名することもできます。

サブセットが選択されており、IOpcDigitalSignatureManager::Sign メソッドを呼び出して署名を生成する場合、リレーションシップマークアップに適用される変換メソッドは、リレーションシップ変換に続いて OPC_CANONICALIZATION_C14N 正規化メソッドとなります。

スレッドセーフティ

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

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

vtbl 7 HRESULT GetRelationshipSigningOption(OPC_RELATIONSHIPS_SIGNING_OPTION* relationshipSigningOption)

参照先の Relationships パートに格納されているリレーションシップのうち、すべてが選択されているのか一部のみが選択されているのかを示す値を取得します。

relationshipSigningOptionOPC_RELATIONSHIPS_SIGNING_OPTION*outすべてのリレーションシップが選択されているのか、一部のみが選択されているのかを示す値。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
relationshipSigningOption パラメーターが NULL です。
vtbl 8 HRESULT GetRelationshipSelectorEnumerator(IOpcRelationshipSelectorEnumerator** selectorEnumerator)

参照先の Relationships パート内のリレーションシップのサブセットを選択するために使用された手法を表す、IOpcRelationshipSelector インターフェイスポインターの列挙子を取得します。

selectorEnumeratorIOpcRelationshipSelectorEnumerator**outIOpcRelationshipSelector インターフェイスポインターの列挙子へのポインター。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
selectorEnumerator パラメーターが 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_IOpcSignatureRelationshipReference "{57BABAC6-9D4A-4E50-8B86-E5D4051EAE7C}"
#usecom global IOpcSignatureRelationshipReference IID_IOpcSignatureRelationshipReference "{}"
#comfunc global IOpcSignatureRelationshipReference_GetSourceUri                       3 sptr
#comfunc global IOpcSignatureRelationshipReference_GetDigestMethod                    4 var
#comfunc global IOpcSignatureRelationshipReference_GetDigestValue                     5 var,var
#comfunc global IOpcSignatureRelationshipReference_GetTransformMethod                 6 var
#comfunc global IOpcSignatureRelationshipReference_GetRelationshipSigningOption       7 var
#comfunc global IOpcSignatureRelationshipReference_GetRelationshipSelectorEnumerator  8 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。