Win32 API 日本語リファレンス
ホームSecurity.Cryptography.Certificates › IObjectId

IObjectId

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID728ab300-217d-11da-b2a4-000e7bbb2b09継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

オブジェクト識別子 (OID) を表します。

メソッド 8

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT InitializeFromName(CERTENROLL_OBJECTID Name)

CERTENROLL_OBJECTID 列挙値からオブジェクトを初期化します。

NameCERTENROLL_OBJECTIDinCERTENROLL_OBJECTID 列挙値。

戻り値

関数が成功した場合は S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。値には以下の表に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
CERTSRV_E_PROPERTY_EMPTY
OID 情報が見つかりませんでした。
CRYPT_E_UNKNOWN_ALGO
アルゴリズム名が認識されません。
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
オブジェクトは既に初期化されています。

解説(Remarks)

CERTENROLL_OBJECTID の各値は、ASN.1 オブジェクト識別子に関連付けられています。たとえば、XCN_OID_ECDSA_SHA1 という値は、1.2.840.10045.4.1 を含む文字列に関連付けられています。これは、iso(1)member-body(2)us(840)10045 signatures(4)sha1(1) オブジェクト識別子のドット区切り 10 進数表記です。

InitializeFromName メソッドは、ASN.1 オブジェクト識別子に関連付けられた情報をレジストリから検索します。情報が見つかった場合、このメソッドは内部で CRYPT_OID_INFO 構造体を設定し、それをオブジェクトに関連付けます。また、可能であれば、ローカル情報を使用してオブジェクトの表示名を初期化します。

初期化された IObjectId オブジェクトに関する情報を取得するには、以下のプロパティを呼び出すことができます。

vtbl 8 HRESULT InitializeFromValue(LPWSTR strValue)

ドット区切り 10 進数のオブジェクト識別子 (OID) を含む文字列からオブジェクトを初期化します。

strValueLPWSTRinASN.1 オブジェクト識別子のドット区切り 10 進数表記を含む BSTR 変数。たとえば、1.2.840.10045.4.1. という値は、iso(1)member-body(2)us(840)10045 signatures(4)sha1(1) オブジェクト識別子を表します。

戻り値

関数が成功した場合は S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。値には以下の表に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
CERTSRV_E_PROPERTY_EMPTY
OID 情報が見つかりませんでした。
CRYPT_E_UNKNOWN_ALGO
アルゴリズム名が認識されません。
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
オブジェクトは既に初期化されています。

解説(Remarks)

初期化された IObjectId オブジェクトに関する情報を取得するには、以下のプロパティを呼び出すことができます。

vtbl 9 HRESULT InitializeFromAlgorithmName(ObjectIdGroupId GroupId, ObjectIdPublicKeyFlags KeyFlags, AlgorithmFlags AlgFlags, LPWSTR strAlgorithmName)

アルゴリズム名またはオブジェクト識別子からオブジェクトを初期化します。

GroupIdObjectIdGroupIdin

検索する OID グループを指定する ObjectIdGroupId 列挙値。以下のいずれかのアルゴリズムグループを指定できます。

さらに、暗号化アルゴリズムを含まないグループを指定することもできます。
KeyFlagsObjectIdPublicKeyFlagsin

署名アルゴリズムと暗号化アルゴリズムのどちらを検索するかを指定する ObjectIdPublicKeyFlags 列挙値。以下のいずれかの値を指定できます。

いずれの値も、RSA のように暗号化とメッセージ署名の両方に使用できるアルゴリズムを区別するために使用できます。この場合、GroupId パラメーターに XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID も指定する必要があります。
AlgFlagsAlgorithmFlagsin

AlgorithmFlags 列挙値。以下のいずれかの値を指定できます。

  • AlgorithmFlagsNone
  • AlgorithmFlagsWrap
GroupId パラメーターに XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID を指定した場合、AlgorithmFlags 列挙を使用して、キーのラップに使用できる OID を検索できます。たとえば、ビット長 128 を指定し (「解説」セクションを参照)、strAlgorithmName パラメーターに AES を設定して AlgorithmFlagsWrap を指定すると、AES128wrap アルゴリズムに関する情報を取得できます。
strAlgorithmNameLPWSTRin名前を含む BSTR 変数。名前、またはドット区切り 10 進数形式の OID を指定できます。このメソッドは、形式が ASN.1 X.208 標準に準拠していることを検証します。CNG アルゴリズム名の詳細については、CNG Algorithm Identifiers を参照してください。

戻り値

関数が成功した場合は S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。値には以下の表に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
CERTSRV_E_PROPERTY_EMPTY
OID 情報が見つかりませんでした。
CRYPT_E_UNKNOWN_ALGO
アルゴリズム名が認識されません。
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
オブジェクトは既に初期化されています。

解説(Remarks)

GroupId パラメーターの上位 16 ビットを使用して、可変ビット長を受け入れるアルゴリズムのキーサイズを指定できます。たとえば、192 ビットの AES アルゴリズムから IObjectId オブジェクトを初期化するには、strAlgorithmName パラメーターに "AES" を指定し、長さを 16 ビット左シフトして、シフトしたビット長と GroupId 値をビットごとの OR で結合します。

vtbl 10 HRESULT get_Name(CERTENROLL_OBJECTID* pValue)

オブジェクト識別子を含む CERTENROLL_OBJECTID 値を取得します。

pValueCERTENROLL_OBJECTID*outこの OID に対応する既知の名前を受け取る CERTENROLL_OBJECTID へのポインタである。

解説(Remarks)

このプロパティ値を取得する前に、以下のいずれかのメソッドを呼び出す必要があります。

以下のプロパティ値も取得できます。

vtbl 11 HRESULT get_FriendlyName(LPWSTR* pValue)

オブジェクト識別子の表示名を指定および取得します。(Get)

pValueLPWSTR*outOID の表示名 (フレンドリ名) を受け取る文字列ポインタである。

解説(Remarks)

このプロパティ値を取得する前に、以下のいずれかのメソッドを呼び出す必要があります。

以下のプロパティ値も取得できます。

vtbl 12 HRESULT put_FriendlyName(LPWSTR Value)

オブジェクト識別子の表示名を指定および取得します。(Put)

ValueLPWSTRinOID に設定する表示名 (フレンドリ名) を指定する。

解説(Remarks)

このプロパティ値を取得する前に、以下のいずれかのメソッドを呼び出す必要があります。

以下のプロパティ値も取得できます。

vtbl 13 HRESULT get_Value(LPWSTR* pValue)

ドット区切り 10 進数のオブジェクト識別子 (OID) を含む文字列を取得します。

pValueLPWSTR*outOID 値 (ドット区切り文字列) を受け取る文字列ポインタである。

解説(Remarks)

ドット区切り 10 進数形式については、ASN.1 X.208 仕様で説明されています。たとえば、1.2.840.10045.4.1. という文字列は、iso(1)member-body(2)us(840)10045 signatures(4)sha1(1) オブジェクト識別子を表します。

このプロパティ値を取得する前に、以下のいずれかのメソッドを呼び出す必要があります。

以下のプロパティ値も取得できます。

vtbl 14 HRESULT GetAlgorithmName(ObjectIdGroupId GroupId, ObjectIdPublicKeyFlags KeyFlags, LPWSTR* pstrAlgorithmName)

アルゴリズムのオブジェクト識別子 (OID) に関連付けられた表示名を取得します。

GroupIdObjectIdGroupIdin

検索する OID グループを指定する ObjectIdGroupId 列挙値。以下のいずれかのアルゴリズムグループを指定できます。

さらに、暗号化アルゴリズムを含まないグループを指定することもできます。
KeyFlagsObjectIdPublicKeyFlagsin

署名アルゴリズムと暗号化アルゴリズムのどちらを検索するかを指定する ObjectIdPublicKeyFlags 列挙値。以下のいずれかの値を指定できます。

後者の 2 つの値は、RSA のように暗号化とメッセージ署名の両方に使用できるアルゴリズムを区別するために使用できます。この場合、GroupId パラメーターに XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID も指定する必要があります。GroupId パラメーターに XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID 以外を設定する場合は、XCN_CRYPT_OID_INFO_PUBKEY_ANY を指定してください。
pstrAlgorithmNameLPWSTR*out名前を含む BSTR 変数へのポインター。

戻り値

関数が成功した場合は S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。値には以下の表に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
CERTSRV_E_PROPERTY_EMPTY
アルゴリズム名を含む文字列が空です。
OLE_E_BLANK
アルゴリズム名が見つかりませんでした。GetAlgorithmName を呼び出す前に InitializeFromAlgorithmName を呼び出す必要があります。

解説(Remarks)

XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID 定数を使用して、可変ビット長で識別できるアルゴリズムのキーサイズを考慮した GroupId パラメーター値を作成できます。たとえば、192 ビットの AES アルゴリズムから IObjectId オブジェクトを初期化するには、strAlgorithmName パラメーターに "AES" を指定し、長さを 16 ビット左シフトして、シフトしたビット長と XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID をビットごとの OR で結合します。

GroupId パラメーターに XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID 以外を設定する場合は、KeyFlags パラメーターに XCN_CRYPT_OID_INFO_PUBKEY_ANY を指定してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IObjectId "{728AB300-217D-11DA-B2A4-000E7BBB2B09}"
#usecom global IObjectId IID_IObjectId "{}"
#comfunc global IObjectId_InitializeFromName           7 int
#comfunc global IObjectId_InitializeFromValue          8 wstr
#comfunc global IObjectId_InitializeFromAlgorithmName  9 int,int,int,wstr
#comfunc global IObjectId_get_Name                     10 var
#comfunc global IObjectId_get_FriendlyName             11 var
#comfunc global IObjectId_put_FriendlyName             12 wstr
#comfunc global IObjectId_get_Value                    13 var
#comfunc global IObjectId_GetAlgorithmName             14 int,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。