IOpcSignatureReferenceSet
COM公式ドキュメント
署名対象の 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。
署名対象の XML 要素への参照を表す IOpcSignatureReference インターフェイスポインターを作成します。
| referenceUri | IUri* | in | 参照される XML 要素の URI です。 このパラメーターの値には、"#" に続けて参照先要素の Id 属性値を記述した URI ("#<elementIdValue>") を設定します。 例については、「解説」セクションを参照してください。 |
| referenceId | LPWSTR | in | 署名マークアップ内で参照を表す Reference 要素の Id 属性です。Id 属性を省略するには、このパラメーターの値を NULL に設定します。 |
| type | LPWSTR | in | 署名マークアップ内で参照を表す Reference 要素の Type 属性です。Type 属性を省略するには、このパラメーターの値を NULL に設定します。 |
| digestMethod | LPWSTR | in | 参照される XML マークアップに使用するダイジェストメソッドです。既定のダイジェストメソッドを使用するには、このパラメーターの値を NULL に設定します。 重要 既定のダイジェストメソッドは、IOpcDigitalSignatureManager::Sign を呼び出す前に、IOpcSigningOptions::SetDefaultDigestMethod メソッドを呼び出して設定しておく必要があります。
|
| transformMethod | OPC_CANONICALIZATION_METHOD | in | 参照される XML マークアップに使用する正規化 (canonicalization) メソッドです。 |
| reference | IOpcSignatureReference** | out | 署名対象の XML 要素への参照を表す、新しい IOpcSignatureReference インターフェイスポインターです。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| 戻り値/値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| transformMethod パラメーターに渡された値が、有効な OPC_CANONICALIZATION_METHOD 列挙値ではありません。 | |
| referenceUri パラメーターが NULL です。 | |
|
パッケージの Object を指す署名の Reference 要素用に予約された URI 属性値が、カスタム Object 要素への Reference の URI 属性値として使用されています。 |
解説(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 を参照してください。
指定された IOpcSignatureReference インターフェイスポインターをセットから削除します。
| reference | IOpcSignatureReference* | in | 削除する IOpcSignatureReference インターフェイスポインターです。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| reference パラメーターが NULL です。 |
解説(Remarks)
IOpcSignatureReference インターフェイスポインターがセットから削除されると、それが表す参照はパッケージの保存時に保存されません。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
セット内の IOpcSignatureReference インターフェイスポインターの列挙子を取得します。
| referenceEnumerator | IOpcSignatureReferenceEnumerator** | out | セット内の IOpcSignatureReference インターフェイスポインターの列挙子へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| referenceEnumerator パラメーターが NULL です。 |
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 指定が可能。