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

IOpcSigningOptions

COM
IID50d2d6a5-7aeb-46c0-b241-43ab0e9b407e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

署名の生成に必要な情報を設定および取得するためのメソッドを提供します。

解説(Remarks)

署名を生成するには、signingOptions パラメーターに IOpcSigningOptions インターフェイス ポインターを設定して IOpcDigitalSignatureManager::Sign メソッドを呼び出します。

IOpcSigningOptions インターフェイス ポインターを作成するには、IOpcDigitalSignatureManager::CreateSigningOptions メソッドを呼び出します。

呼び出し元は、署名を生成する前に、既定のダイジェスト メソッドと署名メソッドを設定する必要があります。既定のダイジェスト メソッドを設定するには、SetDefaultDigestMethod メソッドを呼び出します。署名メソッドを設定するには、SetSignatureMethod メソッドを呼び出します。

IOpcSignatureCustomObjectSet インターフェイス ポインターを取得するには、GetCustomObjectSet メソッドを呼び出します。セット内のインターフェイス ポインターは、アプリケーション固有の Object 要素を表します。

IOpcSignatureReferenceSet インターフェイス ポインターを取得するには、GetCustomReferenceSet メソッドを呼び出します。セット内のインターフェイス ポインターは、署名の生成時に署名される、アプリケーション固有の Object 要素またはその子要素への参照を表します。

証明書の既定の格納場所は OPC_CERTIFICATE_IN_CERTIFICATE_PART です。この値を変更するには、SetCertificateEmbeddingOption メソッドを呼び出します。

署名時刻文字列の既定の形式は OPC_SIGNATURE_TIME_FORMAT_MILLISECONDS です。署名時刻文字列の形式を変更するには、SetTimeFormat メソッドを呼び出します。

スレッド セーフティ

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

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

メソッド 17

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

vtbl 3 HRESULT GetSignatureId(LPWSTR* signatureId)

Signature 要素の Id 属性の値を取得します。

signatureIdLPWSTR*outId 属性の値へのポインター。Id がない場合は空文字列 "" が返されます。

戻り値

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

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

解説(Remarks)

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

Signature 要素の Id 属性は省略可能です。

署名の Id を設定するには、IOpcSigningOptions::SetSignatureId メソッドを呼び出します。

署名が生成される前に Id を取得するには、IOpcSigningOptions::GetSignatureId を呼び出します。署名が生成された後に署名の Id を取得するには、IOpcDigitalSignature::GetSignatureId メソッドを呼び出します。

スレッド セーフティ

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

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

vtbl 4 HRESULT SetSignatureId(LPWSTR signatureId)

Signature 要素の Id 属性の値を設定します。(IOpcSigningOptions.SetSignatureId)

signatureIdLPWSTRinId 属性の値。

戻り値

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

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

解説(Remarks)

Signature 要素の Id 属性は省略可能です。このメソッドを呼び出さない場合、Signature 要素に Id 属性は付きません。

署名が生成される前に Id を取得するには、IOpcSigningOptions::GetSignatureId を呼び出します。署名が生成された後に署名の Id を取得するには、IOpcDigitalSignature::GetSignatureId メソッドを呼び出します。

スレッド セーフティ

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

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

vtbl 5 HRESULT GetSignatureMethod(LPWSTR* signatureMethod)

SignedInfo 要素のハッシュ値の計算と暗号化に使用する署名メソッドを取得します。このハッシュ値は、署名の SignatureValue 要素としてシリアル化されます。

signatureMethodLPWSTR*out使用する署名メソッドへのポインター。SetSignatureMethod メソッドでメソッドが設定されていない場合は空文字列 "" が返されます。

戻り値

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

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

解説(Remarks)

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

署名メソッドを設定するには、IOpcSigningOptions::SetSignatureMethod メソッドを呼び出します。

署名が生成される前に署名メソッドを取得するには、IOpcSigningOptions::GetSignatureMethod を呼び出します。署名が生成された後に署名メソッドを取得するには、IOpcDigitalSignature::GetSignatureMethod メソッドを呼び出します。

重要 IOpcDigitalSignatureManager::Sign メソッドを呼び出して署名を生成する前に、有効な署名メソッドを設定しておく必要があります。
署名が生成されると、署名マークアップとしてシリアル化されます。署名メソッドは、署名マークアップ内の SignatureValue 要素の値を計算するために使用されます。

署名を検証する際には、署名メソッドを使用してその値を再計算し、再計算した値を署名マークアップ内の SignatureValue 要素の値と比較します。

スレッド セーフティ

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

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

vtbl 6 HRESULT SetSignatureMethod(LPWSTR signatureMethod)

SignedInfo 要素のハッシュ値の計算と暗号化に使用する署名メソッドを設定します。このハッシュ値は、署名の SignatureValue 要素に格納されます。

signatureMethodLPWSTRin使用する署名メソッド。

戻り値

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

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

解説(Remarks)

署名が生成される前に署名メソッドを取得するには、IOpcSigningOptions::GetSignatureMethod を呼び出します。署名が生成された後に署名メソッドを取得するには、IOpcDigitalSignature::GetSignatureMethod メソッドを呼び出します。

重要 IOpcDigitalSignatureManager::Sign メソッドを呼び出して署名を生成する前に、有効な署名メソッドを設定しておく必要があります。
署名が生成されると、署名マークアップとしてシリアル化されます。署名メソッドは、署名マークアップ内の SignatureValue 要素の値を計算するために使用されます。

署名を検証する際には、署名メソッドを使用してその値を再計算し、再計算した値を署名マークアップ内の SignatureValue 要素の値と比較します。

スレッド セーフティ

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

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

vtbl 7 HRESULT GetDefaultDigestMethod(LPWSTR* digestMethod)

署名対象のオブジェクトのダイジェスト値の計算に使用される、既定のダイジェスト メソッドを取得します。

digestMethodLPWSTR*out既定のダイジェスト メソッドへのポインター。SetDefaultDigestMethod メソッドで既定値が設定されていない場合は空文字列 "" が返されます。

戻り値

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

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

解説(Remarks)

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

既定のダイジェスト メソッドを設定するには、IOpcSigningOptions::SetDefaultDigestMethod メソッドを呼び出します。

重要 IOpcDigitalSignatureManager::Sign メソッドを呼び出して署名を生成する前に、既定のダイジェスト メソッドを設定しておく必要があります。

スレッド セーフティ

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

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

vtbl 8 HRESULT SetDefaultDigestMethod(LPWSTR digestMethod)

署名対象のオブジェクトのダイジェスト値の計算に使用される、既定のダイジェスト メソッドを設定します。

digestMethodLPWSTRin既定のダイジェスト メソッド。

戻り値

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

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

解説(Remarks)

署名が生成される前に既定のダイジェスト メソッドを取得するには、IOpcSigningOptions::GetDefaultDigestMethod を呼び出します。

重要 IOpcDigitalSignatureManager::Sign メソッドを呼び出して署名を生成する前に、署名対象のエンティティに対する既定のダイジェスト メソッドを設定しておく必要があります。

スレッド セーフティ

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

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

vtbl 9 HRESULT GetCertificateEmbeddingOption(OPC_CERTIFICATE_EMBEDDING_OPTION* embeddingOption)

署名に使用する証明書の、パッケージ内での格納場所を指定する値を取得します。

embeddingOptionOPC_CERTIFICATE_EMBEDDING_OPTION*out証明書の格納場所を指定する値。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
embeddingOption パラメーターが有効な OPC_CERTIFICATE_EMBEDDING_OPTION 列挙値ではありません。

解説(Remarks)

証明書の既定の格納場所は OPC_CERTIFICATE_IN_CERTIFICATE_PART です。この値を変更するには、IOpcSigningOptions::SetCertificateEmbeddingOption メソッドを呼び出します。

スレッド セーフティ

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

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

vtbl 10 HRESULT SetCertificateEmbeddingOption(OPC_CERTIFICATE_EMBEDDING_OPTION embeddingOption)

署名に使用する証明書の格納場所を設定します。

embeddingOptionOPC_CERTIFICATE_EMBEDDING_OPTIONin証明書の格納場所を示す OPC_CERTIFICATE_EMBEDDING_OPTION 値。

戻り値

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

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

解説(Remarks)

このメソッドは、証明書の格納場所を既定の場所である OPC_CERTIFICATE_IN_CERTIFICATE_PART から、呼び出し元が指定した場所に変更します。

証明書の格納場所を示す値を取得するには、IOpcSigningOptions::GetCertificateEmbeddingOption メソッドを呼び出します。

スレッド セーフティ

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

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

vtbl 11 HRESULT GetTimeFormat(OPC_SIGNATURE_TIME_FORMAT* timeFormat)

IOpcDigitalSignature::GetSigningTime メソッドで取得される文字列の形式を取得します。

timeFormatOPC_SIGNATURE_TIME_FORMAT*outGetSigningTimesigningTime パラメーターの形式を示す値。

戻り値

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

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

解説(Remarks)

署名時刻文字列の既定の形式は OPC_SIGNATURE_TIME_FORMAT_MILLISECONDS です。署名時刻文字列の形式を変更するには、IOpcSigningOptions::SetTimeFormat メソッドを呼び出します。

署名が生成された後に署名時刻文字列の形式を取得するには、IOpcDigitalSignature::GetTimeFormat メソッドを呼び出します。

スレッド セーフティ

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

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

vtbl 12 HRESULT SetTimeFormat(OPC_SIGNATURE_TIME_FORMAT timeFormat)

IOpcDigitalSignature::GetSigningTime メソッドで取得される文字列の形式を設定します。

timeFormatOPC_SIGNATURE_TIME_FORMATinIOpcDigitalSignature::GetSigningTime メソッドで取得される文字列の形式を示す値。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
timeFormat パラメーターに渡された値が、有効な OPC_SIGNATURE_TIME_FORMAT 列挙値ではありません。

解説(Remarks)

このメソッドは、署名時刻文字列の形式を既定の形式である OPC_SIGNATURE_TIME_FORMAT_MILLISECONDS から、呼び出し元が指定した形式に変更します。

署名が生成される前に署名時刻文字列の形式を取得するには、IOpcSigningOptions::GetTimeFormat メソッドを呼び出します。署名が生成された後に形式を取得するには、IOpcDigitalSignature::GetTimeFormat メソッドを呼び出します。

スレッド セーフティ

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

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

vtbl 13 HRESULT GetSignaturePartReferenceSet(IOpcSignaturePartReferenceSet** partReferenceSet)

IOpcSignaturePartReferenceSet インターフェイスを取得します。

partReferenceSetIOpcSignaturePartReferenceSet**outIOpcSignaturePartReferenceSet インターフェイス ポインター。

戻り値

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

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

解説(Remarks)

このメソッドは、セット内の IOpcSignaturePartReference インターフェイス ポインターの作成と削除を行うメソッドを提供する、IOpcSignaturePartReferenceSet インターフェイス ポインターを取得します。IOpcSignaturePartReference インターフェイス ポインターは、署名対象のパートへの参照を表します。

スレッド セーフティ

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

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

vtbl 14 HRESULT GetSignatureRelationshipReferenceSet(IOpcSignatureRelationshipReferenceSet** relationshipReferenceSet)

IOpcSignatureRelationshipReferenceSet インターフェイス ポインターを取得します。

relationshipReferenceSetIOpcSignatureRelationshipReferenceSet**outIOpcSignatureRelationshipReferenceSet インターフェイス ポインター。

戻り値

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

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

解説(Remarks)

このメソッドは、セット内の IOpcSignaturePartReference インターフェイス ポインターの作成と削除を行うメソッドを提供する、IOpcSignatureRelationshipReferenceSet インターフェイス ポインターを取得します。IOpcSignatureRelationshipReference インターフェイス ポインターは、署名対象のリレーションシップを含む Relationships パートへの参照を表します。

スレッド セーフティ

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

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

vtbl 15 HRESULT GetCustomObjectSet(IOpcSignatureCustomObjectSet** customObjectSet)

IOpcSignatureCustomObjectSet インターフェイスを取得します。

customObjectSetIOpcSignatureCustomObjectSet**outIOpcSignatureCustomObjectSet へのポインター。

戻り値

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

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

解説(Remarks)

このメソッドは、セット内の IOpcSignatureCustomObject インターフェイス ポインターの作成と削除を行うメソッドを提供する、IOpcSignatureCustomObjectSet インターフェイス ポインターを取得します。IOpcSignatureCustomObject インターフェイス ポインターは、署名の生成時に署名マークアップにシリアル化される、アプリケーション固有の Object 要素を表します。

スレッド セーフティ

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

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

vtbl 16 HRESULT GetCustomReferenceSet(IOpcSignatureReferenceSet** customReferenceSet)

IOpcSignatureReferenceSet インターフェイス ポインターを取得します。

customReferenceSetIOpcSignatureReferenceSet**outIOpcSignatureReferenceSet へのポインター。

戻り値

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

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

解説(Remarks)

このメソッドは、セット内の IOpcSignatureReference インターフェイス ポインターの作成と削除を行うメソッドを提供する、IOpcSignatureReferenceSet インターフェイス ポインターを取得します。IOpcSignatureReference インターフェイス ポインターは、署名対象の XML 要素への参照を表します。

スレッド セーフティ

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

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

vtbl 17 HRESULT GetCertificateSet(IOpcCertificateSet** certificateSet)

IOpcCertificateSet インターフェイス ポインターを取得します。

certificateSetIOpcCertificateSet**outIOpcCertificateSet インターフェイス ポインター。

戻り値

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

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

解説(Remarks)

このメソッドは、署名の生成時にその署名に関連付けられる証明書チェーンに対して、証明書の追加と削除を行うメソッドを提供するセットを取得します。

署名の生成に使用する証明書は、このセットに含めないでください。この証明書 (署名者証明書) は署名の生成に必須です。署名を生成するには、certificate パラメーターに署名者証明書へのポインターを設定して IOpcDigitalSignatureManager::Sign メソッドを呼び出します。

スレッド セーフティ

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

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

vtbl 18 HRESULT GetSignaturePartName(IOpcPartUri** signaturePartName)

署名マークアップが格納される署名パートのパート名を取得します。

signaturePartNameIOpcPartUri**out署名マークアップが格納されるパートのパート名を表す IOpcPartUri インターフェイス ポインター。SetSignaturePartName メソッドの呼び出しによってパート名が設定されていない場合は NULL になります。

戻り値

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

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

解説(Remarks)

署名マークアップを格納する署名パートのパート名を設定するには、IOpcSigningOptions::SetSignaturePartName メソッドを呼び出します。

署名が生成された後に署名パート名を取得するには、IOpcDigitalSignature::GetSignaturePartName メソッドを呼び出します。

署名マークアップを格納する署名パートは、その署名に固有のものです。

スレッド セーフティ

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

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

vtbl 19 HRESULT SetSignaturePartName(IOpcPartUri* signaturePartName)

署名マークアップが格納される署名パートのパート名を設定します。

signaturePartNameIOpcPartUri*in署名マークアップが格納されるパートのパート名を表す IOpcPartUri インターフェイス ポインター。署名の作成時にパート名を生成させる場合は NULL を指定します。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。

解説(Remarks)

署名が生成されるまでは、署名マークアップを格納する署名パートのパート名を変更できます。新しいパート名を設定するには、signaturePartName パラメーターに新しい名前を表す IOpcPartUri インターフェイス ポインターを設定して、このメソッドを呼び出します。既存のパート名をクリアするには、signaturePartName パラメーターの値を NULL に設定します。

署名が生成される前に署名パート名を取得するには、IOpcSigningOptions::GetSignaturePartName を呼び出します。署名が生成された後に署名パート名を取得するには、IOpcDigitalSignature::GetSignaturePartName メソッドを呼び出します。

署名マークアップを格納する署名パートは、その署名に固有のものです。

スレッド セーフティ

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

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IOpcSigningOptions "{50D2D6A5-7AEB-46C0-B241-43AB0E9B407E}"
#usecom global IOpcSigningOptions IID_IOpcSigningOptions "{}"
#comfunc global IOpcSigningOptions_GetSignatureId                        3 var
#comfunc global IOpcSigningOptions_SetSignatureId                        4 wstr
#comfunc global IOpcSigningOptions_GetSignatureMethod                    5 var
#comfunc global IOpcSigningOptions_SetSignatureMethod                    6 wstr
#comfunc global IOpcSigningOptions_GetDefaultDigestMethod                7 var
#comfunc global IOpcSigningOptions_SetDefaultDigestMethod                8 wstr
#comfunc global IOpcSigningOptions_GetCertificateEmbeddingOption         9 var
#comfunc global IOpcSigningOptions_SetCertificateEmbeddingOption         10 int
#comfunc global IOpcSigningOptions_GetTimeFormat                         11 var
#comfunc global IOpcSigningOptions_SetTimeFormat                         12 int
#comfunc global IOpcSigningOptions_GetSignaturePartReferenceSet          13 sptr
#comfunc global IOpcSigningOptions_GetSignatureRelationshipReferenceSet  14 sptr
#comfunc global IOpcSigningOptions_GetCustomObjectSet                    15 sptr
#comfunc global IOpcSigningOptions_GetCustomReferenceSet                 16 sptr
#comfunc global IOpcSigningOptions_GetCertificateSet                     17 sptr
#comfunc global IOpcSigningOptions_GetSignaturePartName                  18 sptr
#comfunc global IOpcSigningOptions_SetSignaturePartName                  19 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。