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

ICertEncodeAltName

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

公式ドキュメント

証明書の拡張で使用される代替名 (alternate name) を処理するためのメソッドを提供します。

メソッド 7

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

vtbl 7 HRESULT Decode(LPWSTR strBinary)

Abstract Syntax Notation One (ASN.1) でエンコードされた代替名拡張をデコードし、結果として得られる文字列の配列を CertEncodeAltName オブジェクトに格納します。

strBinaryLPWSTRinASN.1 でエンコードされた代替名拡張を表します。

戻り値

VB

メソッドが成功した場合、S_OK を返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

vtbl 8 HRESULT GetNameCount(INT* pNameCount)

代替名配列に含まれる名前の数を返します。

pNameCountINT*out配列に含まれる代替名の数。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は、配列に含まれる代替名の数です。
vtbl 9 HRESULT GetNameChoice(INT NameIndex, INT* pNameChoice)

代替名配列の指定されたインデックスにある名前の選択肢 (name choice) を返します。

NameIndexINTin代替名エントリのインデックスを指定します。最初のエントリはインデックス 0 です。
pNameChoiceINT*out名前の選択肢の指定子を受け取る LONG へのポインター。

戻り値

C++

メソッドが成功した場合、S_OK を返し、pNameChoice パラメーターは代替名の種類を示す値を指します。これは次のいずれかの値です。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は、指定されたインデックスにある名前の選択肢です。名前の選択肢は代替名の種類を示し、正しく使用できるようにします。次のいずれかの値でなければなりません。
戻りコード 説明
CERT_ALT_NAME_DIRECTORY_NAME
名前はディレクトリ名です。
CERT_ALT_NAME_DNS_NAME
名前は Host.Entity.Domain の形式の DNS (Domain Name System) 名を含む IA5 文字列です。
CERT_ALT_NAME_IP_ADDRESS
名前はインターネットプロトコルアドレスを表すオクテット文字列です。
CERT_ALT_NAME_REGISTERED_ID
名前は登録済みの オブジェクト識別子 (OID) です。
CERT_ALT_NAME_RFC822_NAME
名前はメールアドレスです。
CERT_ALT_NAME_URL
名前は Service://HostName/Path の形式の URL を含む IA5 文字列です。
CERT_ALT_NAME_OTHER_NAME
名前は OID とバイナリの BLOB で構成されます。
vtbl 10 HRESULT GetName(INT NameIndex, LPWSTR* pstrName)

代替名配列から指定された名前を返します。

NameIndexINTin

取得する代替名エントリのインデックスを指定する 0 から始まるインデックス。

CERT_ALT_NAME_OTHER_NAME 名の オブジェクト識別子 (OID) を取得するには、インデックス値を EAN_NAMEOBJECTID (0x80000000 として定義) とビットごとの OR 演算で組み合わせます。それ以外の場合は、バイナリ値が取得されます。名前の種類を判別するには、ICertEncodeAltName::GetNameChoice メソッドを呼び出します。

pstrNameLPWSTR*out代替名を受け取る BSTR へのポインター。BSTR の使用が終わったら、SysFreeString 関数を呼び出して解放します。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は、指定されたインデックスにある代替名です。戻り値は Unicode 文字列です。
vtbl 11 HRESULT Reset(INT NameCount)

このオブジェクト内の代替名配列のサイズを指定します。配列内のすべての要素の値は 0 に設定されます。

NameCountINTin配列内の要素数を指定します。

戻り値

VB

メソッドが成功した場合、S_OK を返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

vtbl 12 HRESULT SetNameEntry(INT NameIndex, CERT_ALT_NAME NameChoice, LPWSTR strName)

代替名配列の指定されたインデックスに名前を設定します。

NameIndexINTin

設定する代替名エントリのインデックスを指定する 0 から始まるインデックス。

NameChoice パラメーターが CERT_ALT_NAME_OTHER_NAME の場合、OID を設定するには、インデックス値を EAN_NAMEOBJECTID (0x80000000 として定義) と OR (|) で組み合わせます。それ以外の場合は、バイナリ値が設定されます。

NameChoiceCERT_ALT_NAMEin

名前の選択肢を指定します。名前の選択肢は代替名の種類を示し、正しく使用できるようにします。次のいずれかの値でなければなりません。

意味
CERT_ALT_NAME_DIRECTORY_NAME
名前はディレクトリ名です。
CERT_ALT_NAME_DNS_NAME
名前は host.entity.domain の形式の DNS (Domain Name System) 名を指定する IA5 文字列です。
CERT_ALT_NAME_IP_ADDRESS
名前はインターネットプロトコルアドレスを表すオクテット文字列です。
CERT_ALT_NAME_REGISTERED_ID
名前は登録済みの オブジェクト識別子 (OID) です。
CERT_ALT_NAME_RFC822_NAME
名前はメールアドレスです。
CERT_ALT_NAME_URL
名前は Service://HostName/Path の形式の URL を含む IA5 文字列です。
CERT_ALT_NAME_OTHER_NAME
名前は オブジェクト識別子 (OID) とバイナリの BLOB で構成されます。
strNameLPWSTRin代替名を指定します。

戻り値

VB

メソッドが成功した場合、S_OK を返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

vtbl 13 HRESULT Encode(LPWSTR* pstrBinary)

このオブジェクトに格納されている代替名配列の ASN.1 でエンコードされた文字列を返します。オブジェクト内の名前はエンコードされません。

pstrBinaryLPWSTR*outASN.1 でエンコードされた代替名拡張を受け取る BSTR へのポインター。完了したら、SysFreeString を呼び出して pbstrBinary を解放します。

戻り値

C++

メソッドが成功した場合、S_OK を返します。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

VB

戻り値は、ASN.1 でエンコードされた代替名配列です。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ICertEncodeAltName "{1C9A8C70-1271-11D1-9BD4-00C04FB683FA}"
#usecom global ICertEncodeAltName IID_ICertEncodeAltName "{}"
#comfunc global ICertEncodeAltName_Decode         7 wstr
#comfunc global ICertEncodeAltName_GetNameCount   8 var
#comfunc global ICertEncodeAltName_GetNameChoice  9 int,var
#comfunc global ICertEncodeAltName_GetName        10 int,var
#comfunc global ICertEncodeAltName_Reset          11 int
#comfunc global ICertEncodeAltName_SetNameEntry   12 int,int,wstr
#comfunc global ICertEncodeAltName_Encode         13 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。