IOpcSigningOptions
COM公式ドキュメント
署名の生成に必要な情報を設定および取得するためのメソッドを提供します。
解説(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。
Signature 要素の Id 属性の値を取得します。
| signatureId | LPWSTR* | out | Id 属性の値へのポインター。Id がない場合は空文字列 "" が返されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| signatureId パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、signatureId で返される文字列が使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。
Signature 要素の Id 属性は省略可能です。
署名の Id を設定するには、IOpcSigningOptions::SetSignatureId メソッドを呼び出します。
署名が生成される前に Id を取得するには、IOpcSigningOptions::GetSignatureId を呼び出します。署名が生成された後に署名の Id を取得するには、IOpcDigitalSignature::GetSignatureId メソッドを呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
Signature 要素の Id 属性の値を設定します。(IOpcSigningOptions.SetSignatureId)
| signatureId | LPWSTR | in | Id 属性の値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| signatureId パラメーターが NULL です。 |
解説(Remarks)
Signature 要素の Id 属性は省略可能です。このメソッドを呼び出さない場合、Signature 要素に Id 属性は付きません。
署名が生成される前に Id を取得するには、IOpcSigningOptions::GetSignatureId を呼び出します。署名が生成された後に署名の Id を取得するには、IOpcDigitalSignature::GetSignatureId メソッドを呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
SignedInfo 要素のハッシュ値の計算と暗号化に使用する署名メソッドを取得します。このハッシュ値は、署名の SignatureValue 要素としてシリアル化されます。
| signatureMethod | LPWSTR* | out | 使用する署名メソッドへのポインター。SetSignatureMethod メソッドでメソッドが設定されていない場合は空文字列 "" が返されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| signatureMethod パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、signatureMethod で返される文字列が使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。
署名メソッドを設定するには、IOpcSigningOptions::SetSignatureMethod メソッドを呼び出します。
署名が生成される前に署名メソッドを取得するには、IOpcSigningOptions::GetSignatureMethod を呼び出します。署名が生成された後に署名メソッドを取得するには、IOpcDigitalSignature::GetSignatureMethod メソッドを呼び出します。
署名を検証する際には、署名メソッドを使用してその値を再計算し、再計算した値を署名マークアップ内の SignatureValue 要素の値と比較します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
SignedInfo 要素のハッシュ値の計算と暗号化に使用する署名メソッドを設定します。このハッシュ値は、署名の SignatureValue 要素に格納されます。
| signatureMethod | LPWSTR | in | 使用する署名メソッド。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| signatureMethod パラメーターが NULL です。 |
解説(Remarks)
署名が生成される前に署名メソッドを取得するには、IOpcSigningOptions::GetSignatureMethod を呼び出します。署名が生成された後に署名メソッドを取得するには、IOpcDigitalSignature::GetSignatureMethod メソッドを呼び出します。
署名を検証する際には、署名メソッドを使用してその値を再計算し、再計算した値を署名マークアップ内の SignatureValue 要素の値と比較します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
署名対象のオブジェクトのダイジェスト値の計算に使用される、既定のダイジェスト メソッドを取得します。
| digestMethod | LPWSTR* | out | 既定のダイジェスト メソッドへのポインター。SetDefaultDigestMethod メソッドで既定値が設定されていない場合は空文字列 "" が返されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| digestMethod パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、digestMethod で返される文字列が使用するメモリを割り当てます。メソッドが成功した場合は、CoTaskMemFree 関数を呼び出してメモリを解放してください。
既定のダイジェスト メソッドを設定するには、IOpcSigningOptions::SetDefaultDigestMethod メソッドを呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
署名対象のオブジェクトのダイジェスト値の計算に使用される、既定のダイジェスト メソッドを設定します。
| digestMethod | LPWSTR | in | 既定のダイジェスト メソッド。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| digestMethod パラメーターが NULL です。 |
解説(Remarks)
署名が生成される前に既定のダイジェスト メソッドを取得するには、IOpcSigningOptions::GetDefaultDigestMethod を呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
署名に使用する証明書の、パッケージ内での格納場所を指定する値を取得します。
| embeddingOption | OPC_CERTIFICATE_EMBEDDING_OPTION* | out | 証明書の格納場所を指定する値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| embeddingOption パラメーターが有効な OPC_CERTIFICATE_EMBEDDING_OPTION 列挙値ではありません。 |
解説(Remarks)
証明書の既定の格納場所は OPC_CERTIFICATE_IN_CERTIFICATE_PART です。この値を変更するには、IOpcSigningOptions::SetCertificateEmbeddingOption メソッドを呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
署名に使用する証明書の格納場所を設定します。
| embeddingOption | OPC_CERTIFICATE_EMBEDDING_OPTION | in | 証明書の格納場所を示す OPC_CERTIFICATE_EMBEDDING_OPTION 値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| embeddingOption パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、証明書の格納場所を既定の場所である OPC_CERTIFICATE_IN_CERTIFICATE_PART から、呼び出し元が指定した場所に変更します。
証明書の格納場所を示す値を取得するには、IOpcSigningOptions::GetCertificateEmbeddingOption メソッドを呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
IOpcDigitalSignature::GetSigningTime メソッドで取得される文字列の形式を取得します。
| timeFormat | OPC_SIGNATURE_TIME_FORMAT* | out | GetSigningTime の signingTime パラメーターの形式を示す値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| timeFormat パラメーターが NULL です。 |
解説(Remarks)
署名時刻文字列の既定の形式は OPC_SIGNATURE_TIME_FORMAT_MILLISECONDS です。署名時刻文字列の形式を変更するには、IOpcSigningOptions::SetTimeFormat メソッドを呼び出します。
署名が生成された後に署名時刻文字列の形式を取得するには、IOpcDigitalSignature::GetTimeFormat メソッドを呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
IOpcDigitalSignature::GetSigningTime メソッドで取得される文字列の形式を設定します。
| timeFormat | OPC_SIGNATURE_TIME_FORMAT | in | IOpcDigitalSignature::GetSigningTime メソッドで取得される文字列の形式を示す値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| timeFormat パラメーターに渡された値が、有効な OPC_SIGNATURE_TIME_FORMAT 列挙値ではありません。 |
解説(Remarks)
このメソッドは、署名時刻文字列の形式を既定の形式である OPC_SIGNATURE_TIME_FORMAT_MILLISECONDS から、呼び出し元が指定した形式に変更します。
署名が生成される前に署名時刻文字列の形式を取得するには、IOpcSigningOptions::GetTimeFormat メソッドを呼び出します。署名が生成された後に形式を取得するには、IOpcDigitalSignature::GetTimeFormat メソッドを呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
IOpcSignaturePartReferenceSet インターフェイスを取得します。
| partReferenceSet | IOpcSignaturePartReferenceSet** | out | IOpcSignaturePartReferenceSet インターフェイス ポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| partReferenceSet パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、セット内の IOpcSignaturePartReference インターフェイス ポインターの作成と削除を行うメソッドを提供する、IOpcSignaturePartReferenceSet インターフェイス ポインターを取得します。IOpcSignaturePartReference インターフェイス ポインターは、署名対象のパートへの参照を表します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
IOpcSignatureRelationshipReferenceSet インターフェイス ポインターを取得します。
| relationshipReferenceSet | IOpcSignatureRelationshipReferenceSet** | out | IOpcSignatureRelationshipReferenceSet インターフェイス ポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| relationshipReferenceSet パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、セット内の IOpcSignaturePartReference インターフェイス ポインターの作成と削除を行うメソッドを提供する、IOpcSignatureRelationshipReferenceSet インターフェイス ポインターを取得します。IOpcSignatureRelationshipReference インターフェイス ポインターは、署名対象のリレーションシップを含む Relationships パートへの参照を表します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
IOpcSignatureCustomObjectSet インターフェイスを取得します。
| customObjectSet | IOpcSignatureCustomObjectSet** | out | IOpcSignatureCustomObjectSet へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| customObjectSet パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、セット内の IOpcSignatureCustomObject インターフェイス ポインターの作成と削除を行うメソッドを提供する、IOpcSignatureCustomObjectSet インターフェイス ポインターを取得します。IOpcSignatureCustomObject インターフェイス ポインターは、署名の生成時に署名マークアップにシリアル化される、アプリケーション固有の Object 要素を表します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
IOpcSignatureReferenceSet インターフェイス ポインターを取得します。
| customReferenceSet | IOpcSignatureReferenceSet** | out | IOpcSignatureReferenceSet へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| customReferenceSet パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、セット内の IOpcSignatureReference インターフェイス ポインターの作成と削除を行うメソッドを提供する、IOpcSignatureReferenceSet インターフェイス ポインターを取得します。IOpcSignatureReference インターフェイス ポインターは、署名対象の XML 要素への参照を表します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
IOpcCertificateSet インターフェイス ポインターを取得します。
| certificateSet | IOpcCertificateSet** | out | IOpcCertificateSet インターフェイス ポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| certificateSet パラメーターが NULL です。 |
解説(Remarks)
このメソッドは、署名の生成時にその署名に関連付けられる証明書チェーンに対して、証明書の追加と削除を行うメソッドを提供するセットを取得します。
署名の生成に使用する証明書は、このセットに含めないでください。この証明書 (署名者証明書) は署名の生成に必須です。署名を生成するには、certificate パラメーターに署名者証明書へのポインターを設定して IOpcDigitalSignatureManager::Sign メソッドを呼び出します。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
署名マークアップが格納される署名パートのパート名を取得します。
| signaturePartName | IOpcPartUri** | out | 署名マークアップが格納されるパートのパート名を表す IOpcPartUri インターフェイス ポインター。SetSignaturePartName メソッドの呼び出しによってパート名が設定されていない場合は NULL になります。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| signaturePartName パラメーターが NULL です。 |
解説(Remarks)
署名マークアップを格納する署名パートのパート名を設定するには、IOpcSigningOptions::SetSignaturePartName メソッドを呼び出します。
署名が生成された後に署名パート名を取得するには、IOpcDigitalSignature::GetSignaturePartName メソッドを呼び出します。
署名マークアップを格納する署名パートは、その署名に固有のものです。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
署名マークアップが格納される署名パートのパート名を設定します。
| signaturePartName | IOpcPartUri* | in | 署名マークアップが格納されるパートのパート名を表す IOpcPartUri インターフェイス ポインター。署名の作成時にパート名を生成させる場合は NULL を指定します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
署名が生成されるまでは、署名マークアップを格納する署名パートのパート名を変更できます。新しいパート名を設定するには、signaturePartName パラメーターに新しい名前を表す IOpcPartUri インターフェイス ポインターを設定して、このメソッドを呼び出します。既存のパート名をクリアするには、signaturePartName パラメーターの値を NULL に設定します。
署名が生成される前に署名パート名を取得するには、IOpcSigningOptions::GetSignaturePartName を呼び出します。署名が生成された後に署名パート名を取得するには、IOpcDigitalSignature::GetSignaturePartName メソッドを呼び出します。
署名マークアップを格納する署名パートは、その署名に固有のものです。
スレッド セーフティ
パッケージ オブジェクトはスレッド セーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
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 指定が可能。#define global IID_IOpcSigningOptions "{50D2D6A5-7AEB-46C0-B241-43AB0E9B407E}" #usecom global IOpcSigningOptions IID_IOpcSigningOptions "{}" #comfunc global IOpcSigningOptions_GetSignatureId 3 sptr #comfunc global IOpcSigningOptions_SetSignatureId 4 wstr #comfunc global IOpcSigningOptions_GetSignatureMethod 5 sptr #comfunc global IOpcSigningOptions_SetSignatureMethod 6 wstr #comfunc global IOpcSigningOptions_GetDefaultDigestMethod 7 sptr #comfunc global IOpcSigningOptions_SetDefaultDigestMethod 8 wstr #comfunc global IOpcSigningOptions_GetCertificateEmbeddingOption 9 sptr #comfunc global IOpcSigningOptions_SetCertificateEmbeddingOption 10 int #comfunc global IOpcSigningOptions_GetTimeFormat 11 sptr #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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。