IOpcSignatureRelationshipReference
COM公式ドキュメント
署名済み、または署名される予定のリレーションシップを含む Relationships パートへの参照を表します。
解説(Remarks)
Relationships パートへの参照を表す IOpcSignatureRelationshipReference インターフェイスポインターを作成するには、Create メソッドを呼び出します。この参照は、署名の生成時に Relationships パート内のすべてのリレーションシップが署名されるのか、その一部のみが署名されるのかを示します。
IOpcSignatureRelationshipReference インターフェイスポインターを取得するには、IOpcSignatureRelationshipReferenceEnumerator::GetCurrent メソッドを呼び出します。
署名対象として選択されていないリレーションシップは、署名を無効化することなくパッケージから削除したり、変更したり、パッケージに追加したりできます。リレーションシップのサブセットが署名対象として選択されている場合、そのサブセットが変更されると署名は無効になります。
このインターフェイスは、参照先の Relationships パート、署名済みまたは署名される予定の選択されたリレーションシップ、および参照自体に関する情報にアクセスするためのメソッドを提供します。署名が生成されると、これらの参照情報は署名の XML マークアップ (署名マークアップ) にシリアル化されます。署名マークアップでは、この情報は Relationships パートを識別する URI 属性値を持つ Reference 要素として表現されます。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
参照先の Relationships パートに格納されているリレーションシップのソース URI を取得します。
| sourceUri | IOpcUri** | out | 参照先の Relationships パートに格納されているリレーションシップのソース URI へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| sourceUri パラメーターが NULL です。 |
選択されたリレーションシップのリレーションシップマークアップに適用するダイジェストメソッドを取得します。
| digestMethod | LPWSTR* | out | 選択されたリレーションシップが署名される際に、そのリレーションシップマークアップに適用するダイジェストメソッド。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| digestMethod パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、digestMethod で返される文字列が使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
選択されたリレーションシップが署名される際に計算されたダイジェスト値を取得します。
| digestValue | BYTE** | out | 指定されたダイジェストメソッドを使用して計算されたダイジェスト値を格納するバッファーへのポインター。このメソッドは、選択されたリレーションシップが署名される際に、そのリレーションシップマークアップに適用されます。 |
| count | DWORD* | out | digestValue バッファーのサイズ。 選択されたリレーションシップがまだ署名されていない場合、count は 0 になります。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| digestValue および count パラメーターの少なくとも 1 つが NULL です。 |
解説(Remarks)
このメソッドは、digestValue で返されるバッファーが使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
選択されたリレーションシップが署名される際に、そのリレーションシップマークアップに適用する正規化メソッドを取得します。
| transformMethod | OPC_CANONICALIZATION_METHOD* | out | 選択されたリレーションシップが署名される際に、そのリレーションシップマークアップに適用する正規化メソッド。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| transformMethod パラメーターが NULL です。 |
解説(Remarks)
参照先の Relationships パート内のリレーションシップは、すべて署名することも、その一部のみを署名することもできます。
サブセットが選択されており、IOpcDigitalSignatureManager::Sign メソッドを呼び出して署名を生成する場合、リレーションシップマークアップに適用される変換メソッドは、リレーションシップ変換に続いて OPC_CANONICALIZATION_C14N 正規化メソッドとなります。
スレッドセーフティ
パッケージングオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
参照先の Relationships パートに格納されているリレーションシップのうち、すべてが選択されているのか一部のみが選択されているのかを示す値を取得します。
| relationshipSigningOption | OPC_RELATIONSHIPS_SIGNING_OPTION* | out | すべてのリレーションシップが選択されているのか、一部のみが選択されているのかを示す値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipSigningOption パラメーターが NULL です。 |
参照先の Relationships パート内のリレーションシップのサブセットを選択するために使用された手法を表す、IOpcRelationshipSelector インターフェイスポインターの列挙子を取得します。
| selectorEnumerator | IOpcRelationshipSelectorEnumerator** | out | IOpcRelationshipSelector インターフェイスポインターの列挙子へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| selectorEnumerator パラメーターが NULL です。 |
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 指定が可能。#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 sptr #comfunc global IOpcSignatureRelationshipReference_GetDigestValue 5 sptr,sptr #comfunc global IOpcSignatureRelationshipReference_GetTransformMethod 6 sptr #comfunc global IOpcSignatureRelationshipReference_GetRelationshipSigningOption 7 sptr #comfunc global IOpcSignatureRelationshipReference_GetRelationshipSelectorEnumerator 8 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。