IXpsSigningOptions
COM公式ドキュメント
新しい署名で使用される個々の署名オプションへのアクセスを提供します。
解説(Remarks)
このインターフェイスの新しいインスタンスを作成するには、IXpsSignatureManager::CreateSigningOptions を呼び出します。
IXpsSignatureManager::CreateSigningOptions によってこのインターフェイスの新しいインスタンスが返された時点では、SignatureMethod プロパティと DigestMethod プロパティは初期化されていません。新しいインターフェイスを Sign メソッドの引数として使用する前に、これらのプロパティを初期化する必要があります。
メソッド 17
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Signature 要素の Id 属性の値を取得します。(IXpsSigningOptions.GetSignatureId)
| signatureId | LPWSTR* | out | Signature 要素の Id 属性の値。Id 属性が存在しない場合、このメソッドは空の文字列を返します。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、signatureId で返される文字列が使用するメモリを割り当てます。signatureId が NULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。
署名 ID の既定値は空の文字列です。
Signature 要素の Id 属性の値を設定します。(IXpsSigningOptions.SetSignatureId)
| signatureId | LPWSTR | in | Signature 要素の Id 属性として設定する文字列値。このパラメーターが NULL の場合、Id 属性はクリアされます。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
署名メソッドを取得します。
| signatureMethod | LPWSTR* | out | URI として表現された署名メソッド。署名メソッドが設定されていない場合は、NULL ポインターが返されます。 次の署名メソッドが Windows 7 でテストされています。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
署名の前に署名メソッドを設定する必要があります。
IXpsSignatureManager::CreateSigningOptions によってこのインターフェイスの新しいインスタンスが返された時点では、SignatureMethod プロパティと DigestMethod プロパティは有効ではありません。新しいインターフェイスを Sign メソッドの引数として使用する前に、これらを初期化する必要があります。
このメソッドは、signatureMethod で返される文字列が使用するメモリを割り当てます。signatureMethod が NULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。
署名メソッドを設定します。
| signatureMethod | LPWSTR | in | URI として表現された署名メソッド。 このパラメーターは有効な署名メソッドを参照している必要があります。次の署名メソッドが Windows 7 でテストされています。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
署名の前に署名メソッドを設定する必要があります。
IXpsSignatureManager::CreateSigningOptions によってこのインターフェイスの新しいインスタンスが返された時点では、SignatureMethod プロパティと DigestMethod プロパティは初期化されていません。新しいインターフェイスを Sign メソッドの引数として使用する前に、これらを初期化する必要があります。
signatureMethod の URI は、http://www.w3.org/2000/09/xmldsig#rsa-sha1 のような有効な署名アルゴリズムの URI であり、かつ署名証明書でサポートされている必要があります。
現在のダイジェストメソッドを取得します。
| digestMethod | LPWSTR* | out | 現在のダイジェストメソッド。 次のダイジェストメソッドが Windows 7 でテストされています。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
署名の前にダイジェストメソッドを設定する必要があります。
IXpsSignatureManager::CreateSigningOptions によってこのインターフェイスの新しいインスタンスが返された時点では、SignatureMethod プロパティと DigestMethod プロパティは有効ではありません。新しいインターフェイスを Sign メソッドの引数として使用する前に、これらを初期化する必要があります。
このメソッドは、digestMethod で返される文字列が使用するメモリを割り当てます。digestMethod が NULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。
ダイジェストメソッドの URI を設定します。
| digestMethod | LPWSTR | in | ダイジェストメソッドの URI。 このパラメーターは有効なダイジェストメソッドの URI を参照している必要があります。次のダイジェストメソッドが Windows 7 でテストされています。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
署名の前にダイジェストメソッドを設定する必要があります。
IXpsSignatureManager::CreateSigningOptions によってこのインターフェイスの新しいインスタンスが返された時点では、SignatureMethod プロパティと DigestMethod プロパティは初期化されていません。新しいインターフェイスを Sign メソッドの引数として使用する前に、これらを初期化する必要があります。
パート、リレーションシップ、および署名参照のダイジェストに使用されるアルゴリズムの URI を識別する文字列を設定します。有効な URI の例を次に示します。http://www.w3.org/2000/09/xmldsig#sha1。
署名証明書、署名メソッド、およびダイジェストメソッドは、相互に互換性がある必要があります。
ドキュメントの署名パートのパート名を取得します。
| signaturePartName | IOpcPartUri** | out | ドキュメントの署名パートのパート名を格納する IOpcPartUri インターフェイスへのポインター。 署名パート名が設定されていない場合は、NULL ポインターが返されます。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ドキュメントの署名パートのパート名を設定します。
| signaturePartName | IOpcPartUri* | in | ドキュメントの署名パートのパート名を格納する IOpcPartUri インターフェイス。 このパラメーターが NULL の場合、このメソッドは署名パート用にランダムで一意なパート名を生成します。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
署名ポリシーを指定する XPS_SIGN_POLICY 値を取得します。
| policy | XPS_SIGN_POLICY* | out | 署名ポリシーを指定する XPS_SIGN_POLICY 値の論理和 (OR)。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれます (これらに限定されません)。この表に記載されていない戻り値については、XPS Digital Signature API Errors および XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| policy が NULL です。 | |
| インターフェイスが署名マネージャーに接続されていません。 |
解説(Remarks)
XPS_SIGN_POLICY 値が設定されていても、署名対象のパッケージ内に対応するパートが存在しない場合は、リレーションシップの種類のみが署名されます。
署名ポリシーを表す XPS_SIGN_POLICY 値を設定します。
| policy | XPS_SIGN_POLICY | in | 署名ポリシーとして設定する XPS_SIGN_POLICY 値の論理和 (OR)。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
XPS_SIGN_POLICY 値が設定されていても、署名対象のパッケージ内に対応するパートが存在しない場合は、リレーションシップの種類のみが署名されます。
署名時刻文字列の形式を取得します。
| timeFormat | OPC_SIGNATURE_TIME_FORMAT* | out | 署名時刻文字列の形式を指定する OPC_SIGNATURE_TIME_FORMAT 値。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
timeFormat で渡される日時文字列の形式について詳しくは、OPC_SIGNATURE_TIME_FORMAT を参照してください。
署名時刻の形式が設定されていない場合は、既定の形式として OPC_SIGNATURE_TIME_FORMAT_MILLISECONDS が使用されます。
署名時刻文字列の形式を設定します。
| timeFormat | OPC_SIGNATURE_TIME_FORMAT | in | 署名時刻文字列の形式を指定する OPC_SIGNATURE_TIME_FORMAT 値。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
timeFormat で渡される日時文字列の形式について詳しくは、OPC_SIGNATURE_TIME_FORMAT を参照してください。
署名時刻の形式が設定されていない場合は、既定の形式として OPC_SIGNATURE_TIME_FORMAT_MILLISECONDS が使用されます。
署名のカスタムオブジェクトのセットを格納する IOpcSignatureCustomObjectSet インターフェイスへのポインターを取得します。
| customObjectSet | IOpcSignatureCustomObjectSet** | out | 署名のカスタムオブジェクトのセットを格納する IOpcSignatureCustomObjectSet インターフェイスへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドが返すカスタムオブジェクトのセットは空です。このセットにカスタムオブジェクトを追加するには、customObjectSet で返されるインターフェイスの Create メソッドを呼び出します。
カスタムオブジェクトに署名する必要がある場合は、そのオブジェクトへの参照をカスタムオブジェクトのセットに追加する必要があります。カスタム参照の追加については、GetCustomReferences を参照してください。
署名のカスタム参照のセットを格納する IOpcSignatureReferenceSet インターフェイスへのポインターを取得します。
| customReferenceSet | IOpcSignatureReferenceSet** | out | 署名のカスタム参照のセットを格納する IOpcSignatureReferenceSet インターフェイスへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドが返すカスタム参照のセットは空です。このセットにカスタム参照を追加するには、customReferenceSet で返されるインターフェイスの Create メソッドを呼び出します。
カスタムオブジェクトに署名する必要がある場合は、そのオブジェクトへの参照をカスタムオブジェクトのセットに追加する必要があります。カスタム参照の追加については、GetCustomReferences を参照してください。
署名に追加の証明書を追加するために使用できる IOpcCertificateSet インターフェイスを取得します。
| certificateSet | IOpcCertificateSet** | out | IOpcCertificateSet インターフェイスへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドの呼び出しは省略可能で、アプリケーションが署名に署名証明書を追加するための手段を提供します。このセット内の追加の証明書は、署名証明書とは別に扱われます。
この署名に使用する署名フラグを指定する XPS_SIGN_FLAGS 値を取得します。
| flags | XPS_SIGN_FLAGS* | out | この署名に使用する署名フラグを指定する XPS_SIGN_FLAGS 値。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
この署名に使用する署名フラグを指定する XPS_SIGN_FLAGS 値を設定します。
| flags | XPS_SIGN_FLAGS | in | この署名に使用する署名フラグを指定する XPS_SIGN_FLAGS 値。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXpsSigningOptions "{7718EAE4-3215-49BE-AF5B-594FEF7FCFA6}" #usecom global IXpsSigningOptions IID_IXpsSigningOptions "{}" #comfunc global IXpsSigningOptions_GetSignatureId 3 var #comfunc global IXpsSigningOptions_SetSignatureId 4 wstr #comfunc global IXpsSigningOptions_GetSignatureMethod 5 var #comfunc global IXpsSigningOptions_SetSignatureMethod 6 wstr #comfunc global IXpsSigningOptions_GetDigestMethod 7 var #comfunc global IXpsSigningOptions_SetDigestMethod 8 wstr #comfunc global IXpsSigningOptions_GetSignaturePartName 9 sptr #comfunc global IXpsSigningOptions_SetSignaturePartName 10 sptr #comfunc global IXpsSigningOptions_GetPolicy 11 var #comfunc global IXpsSigningOptions_SetPolicy 12 int #comfunc global IXpsSigningOptions_GetSigningTimeFormat 13 var #comfunc global IXpsSigningOptions_SetSigningTimeFormat 14 int #comfunc global IXpsSigningOptions_GetCustomObjects 15 sptr #comfunc global IXpsSigningOptions_GetCustomReferences 16 sptr #comfunc global IXpsSigningOptions_GetCertificateSet 17 sptr #comfunc global IXpsSigningOptions_GetFlags 18 var #comfunc global IXpsSigningOptions_SetFlags 19 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IXpsSigningOptions "{7718EAE4-3215-49BE-AF5B-594FEF7FCFA6}" #usecom global IXpsSigningOptions IID_IXpsSigningOptions "{}" #comfunc global IXpsSigningOptions_GetSignatureId 3 sptr #comfunc global IXpsSigningOptions_SetSignatureId 4 wstr #comfunc global IXpsSigningOptions_GetSignatureMethod 5 sptr #comfunc global IXpsSigningOptions_SetSignatureMethod 6 wstr #comfunc global IXpsSigningOptions_GetDigestMethod 7 sptr #comfunc global IXpsSigningOptions_SetDigestMethod 8 wstr #comfunc global IXpsSigningOptions_GetSignaturePartName 9 sptr #comfunc global IXpsSigningOptions_SetSignaturePartName 10 sptr #comfunc global IXpsSigningOptions_GetPolicy 11 sptr #comfunc global IXpsSigningOptions_SetPolicy 12 int #comfunc global IXpsSigningOptions_GetSigningTimeFormat 13 sptr #comfunc global IXpsSigningOptions_SetSigningTimeFormat 14 int #comfunc global IXpsSigningOptions_GetCustomObjects 15 sptr #comfunc global IXpsSigningOptions_GetCustomReferences 16 sptr #comfunc global IXpsSigningOptions_GetCertificateSet 17 sptr #comfunc global IXpsSigningOptions_GetFlags 18 sptr #comfunc global IXpsSigningOptions_SetFlags 19 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。