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

IOpcSignatureReferenceSet

COM
IIDf3b02d31-ab12-42dd-9e2f-2b16761c3c1e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

署名対象の XML 要素への参照を表す IOpcSignatureReference インターフェイスポインターの順序なしセットです。

解説(Remarks)

Create メソッドは、署名の生成時に署名されるアプリケーション固有の Object 要素、またはアプリケーション固有の Object の子要素への参照を作成します。Create は、署名対象のパッケージ固有の Object 要素への参照は作成しません。その参照は、署名の生成時に自動的に作成されます。

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

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

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

スレッドセーフティ

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

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

メソッド 3

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

vtbl 3 HRESULT Create(IUri* referenceUri, LPWSTR referenceId, LPWSTR type, LPWSTR digestMethod, OPC_CANONICALIZATION_METHOD transformMethod, IOpcSignatureReference** reference)

署名対象の XML 要素への参照を表す IOpcSignatureReference インターフェイスポインターを作成します。

referenceUriIUri*in

参照される XML 要素の URI です。

このパラメーターの値には、"#" に続けて参照先要素の Id 属性値を記述した URI ("#<elementIdValue>") を設定します。

例については、「解説」セクションを参照してください。

referenceIdLPWSTRin署名マークアップ内で参照を表す Reference 要素の Id 属性です。Id 属性を省略するには、このパラメーターの値を NULL に設定します。
typeLPWSTRin署名マークアップ内で参照を表す Reference 要素の Type 属性です。Type 属性を省略するには、このパラメーターの値を NULL に設定します。
digestMethodLPWSTRin

参照される XML マークアップに使用するダイジェストメソッドです。既定のダイジェストメソッドを使用するには、このパラメーターの値を NULL に設定します。

重要 既定のダイジェストメソッドは、IOpcDigitalSignatureManager::Sign を呼び出す前に、IOpcSigningOptions::SetDefaultDigestMethod メソッドを呼び出して設定しておく必要があります。
transformMethodOPC_CANONICALIZATION_METHODin参照される XML マークアップに使用する正規化 (canonicalization) メソッドです。
referenceIOpcSignatureReference**out署名対象の XML 要素への参照を表す、新しい IOpcSignatureReference インターフェイスポインターです。

戻り値

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

戻り値/値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
transformMethod パラメーターに渡された値が、有効な OPC_CANONICALIZATION_METHOD 列挙値ではありません。
E_POINTER
referenceUri パラメーターが NULL です。
OPC_E_DS_PACKAGE_REFERENCE_URI_RESERVED
0x80510025
パッケージの Object を指す署名の Reference 要素用に予約された URI 属性値が、カスタム Object 要素への ReferenceURI 属性値として使用されています。

解説(Remarks)

このメソッドは、署名の生成時に署名される XML 要素への参照を作成します。参照先の要素は、アプリケーション固有の Object 要素、またはアプリケーション固有の Object の子要素のいずれかです。

署名のために XML 要素を参照するには、次の表に示すように、referenceUri パラメーターの値に "#" に続けて参照先要素の Id 属性値を記述した URI を設定します。

文字列としての referenceUri の値 参照される要素 要素の説明
"#idMyCustomObject" "<Object Id="idMyCustomObject">...</Object>" アプリケーション固有の Object 要素です。
"#idMyElement" "<Object><MyElement Id="idMyElement">...</MyElement>...</Object>" アプリケーション固有の Object の子要素です。

このメソッドは、署名対象のパッケージ固有の Object 要素への参照は作成しません。その参照は、署名の生成時に自動的に作成されます。

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

スレッドセーフティ

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

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

vtbl 4 HRESULT Delete(IOpcSignatureReference* reference)

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

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

戻り値

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

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

解説(Remarks)

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

スレッドセーフティ

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

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

vtbl 5 HRESULT GetEnumerator(IOpcSignatureReferenceEnumerator** referenceEnumerator)

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

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

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
referenceEnumerator パラメーターが 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_IOpcSignatureReferenceSet "{F3B02D31-AB12-42DD-9E2F-2B16761C3C1E}"
#usecom global IOpcSignatureReferenceSet IID_IOpcSignatureReferenceSet "{}"
#comfunc global IOpcSignatureReferenceSet_Create         3 sptr,wstr,wstr,wstr,int,sptr
#comfunc global IOpcSignatureReferenceSet_Delete         4 sptr
#comfunc global IOpcSignatureReferenceSet_GetEnumerator  5 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。