CertStrToNameA 関数 (wincrypt.h)
CertStrToName 関数は、null で終わる X.500 文字列をエンコードされた証明書名に変換します。
構文
BOOL CertStrToNameA(
[in] DWORD dwCertEncodingType,
[in] LPCSTR pszX500,
[in] DWORD dwStrType,
[in, optional] void *pvReserved,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded,
[out, optional] LPCSTR *ppszError
);
パラメーター
[in] dwCertEncodingType
文字列のエンコードに使用された証明書エンコードの 種類 。 この値の高い WORD に含まれるメッセージ エンコード型識別子は、この関数では無視されます。
このパラメーターには、現在定義されている次の証明書エンコードの種類を指定できます。
値 | 意味 |
---|---|
|
X.509 証明書のエンコードを指定します。 |
[in] pszX500
変換する null で終わる X.500 文字列へのポインター。 この文字列の形式は、 dwStrType パラメーターで指定します。
この文字列は、 CertNameToStr 関数からの出力と同じように書式設定される必要があります。
[in] dwStrType
このパラメーターは、文字列の型を指定します。 このパラメーターは、文字列の内容に関するその他のオプションも指定します。
文字列型指定子と組み合わされたフラグがない場合、文字列にはコンマ (,) またはセミコロン (相対 識別名 (RDN) の区切り記号として;)、複数の RDN 値の区切り記号としてプラス記号 (+) を含めることができます。
引用符 ("") がサポートされています。 引用符は、引用符の 2 つのセット (CN="User ""one"" など) を使用して、引用符で囲まれた値に含めることができます。
数値記号 (#) で始まる値は ASCII 16 進数として扱われ、 CERT_RDN_OCTET_STRINGに変換されます。 埋め込み空白は無視されます。 たとえば、1.2.3 = # AB CD 01 は 1.2.3=#ABCD01 と同じです。
キー、オブジェクト識別子、および値を囲む空白は無視されます。
このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
|
この文字列型はサポートされていません。 |
|
文字列型がサポートされていることを検証します。 文字列には、 オブジェクト識別子 (OID) または X.500 名を指定できます。 |
|
CERT_OID_NAME_STRと同じです。 文字列型がサポートされていることを検証します。 文字列には、 オブジェクト識別子 (OID) または X.500 名を指定できます。 |
次のオプションを上記の値と組み合わせて、文字列の追加オプションを指定することもできます。
値 | 意味 |
---|---|
|
RDN 区切り記号としてサポートされているのはコンマ (,) のみです。 |
|
RDN 区切り記号としてサポートされているのは、セミコロン (;)のみです。 |
|
RDN 区切り記号としてサポートされるのは、円記号 r (\r) または円記号 n (\n) のみです。 |
|
正符号 (+) は区切り記号として無視され、RDN ごとに複数の値はサポートされていません。 |
|
引用符はサポートされていません。 |
|
識別名内の RDN の順序は、エンコードの前に逆になります。 このフラグは、既定では設定されていません。 |
|
CERT_RDN_UNICODE_STRINGの代わりに、CERT_RDN_T61_STRINGエンコードされた値型が使用されます。 このフラグは、すべての Unicode 文字が0xFF以下の場合に使用できます。 |
|
CERT_RDN_UNICODE_STRINGの代わりに、CERT_RDN_UTF8_STRINGエンコードされた値型が使用されます。 |
|
X.500 キーを、印刷可能な Unicode (CERT_RDN_PRINTABLE_STRING) 文字列としてではなく、UTF-8 (CERT_RDN_UTF8_STRING) 文字列として強制的にエンコードします。 これは、Windows Server 2003 以降の Microsoft 証明機関の既定値です。 |
|
UTF-8 (CERT_RDN_UTF8_STRING) を使用して、印刷可能な Unicode (CERT_RDN_PRINTABLE_STRING) X.500 キーを強制的にエンコードできないようにします。 CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAGが設定されている場合に、Unicode 値として X.500 キーのエンコードを有効にするには、 を使用します。 |
|
文字列に電子メール RDN 値が含まれており、電子メール アドレスに ASCII 文字セット以外の Unicode 文字が含まれている場合、電子メール アドレスのホスト名部分は Punycode でエンコードされます。 結果の電子メール アドレスは、 IA5String 文字列としてエンコードされます。 ホスト名の Punycode エンコードは、ラベルごとに実行されます。
Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値はサポートされていません。 |
[in, optional] pvReserved
将来使用するために予約されており、 NULL である必要があります。
[out] pbEncoded
エンコードされた構造体を受け取るバッファーへのポインター。
このバッファーのサイズは 、pcbEncoded パラメーターで指定します。
メモリ割り当て目的でバッファーの必要なサイズを取得するには、このパラメーターを NULL にすることができます 。 詳細については、「不明な 長さのデータの取得」を参照してください。
[in, out] pcbEncoded
関数を呼び出す前に、pbEncoded パラメーターが指すバッファーのサイズ (バイト単位) を含む DWORD へのポインター。 関数が戻るときに、 DWORD にはバッファーに格納されているバイト数が含まれます。
pbEncoded が NULL の場合、DWORD はバッファーに必要なサイズ (バイト単位) を受け取ります。
[out, optional] ppszError
無効な入力文字列に関する追加のエラー情報を受け取る文字列ポインターへのポインター。
pszX500 文字列が無効な場合、この関数によって ppszError が更新され、無効な文字シーケンスの先頭を指します。 入力文字列でエラーが検出されない場合、 ppszError は NULL に設定されます。
この情報が必要ない場合は、このパラメーターに NULL を 渡します。
このパラメーターは、 GetLastError から返される次のエラー コードに対して更新されます。
CRYPT_E_INVALID_X500_STRING
CRYPT_E_INVALID_NUMERIC_STRING
CRYPT_E_INVALID_PRINTABLE_STRING
CRYPT_E_INVALID_IA5_STRING
戻り値
成功した場合は 0 以外、それ以外の場合は 0 を返します。
拡張エラー情報については、 GetLastError を呼び出します。
注釈
次の表には、サポートされている X.500 キー、対応するオブジェクト識別子文字列、文字列識別子 (Wincrypt.h から)、値型が含まれています。
キー | オブジェクト識別子の文字列 | 文字列識別子 | RDN 値の種類 |
---|---|---|---|
CN | 2.5.4.3 | szOID_COMMON_NAME |
印刷可能 T61 |
L | 2.5.4.7 | szOID_LOCALITY_NAME |
印刷可能 T61 |
O | 2.5.4.10 | szOID_ORGANIZATION_NAME |
印刷可能 T61 |
OU | 2.5.4.11 | szOID_ORGANIZATIONAL_UNIT_NAME |
印刷可能 T61 |
E 電子メール |
1.2.840.113549.1.9.1 | szOID_RSA_emailAddr | IA5 |
C | 2.5.4.6 | szOID_COUNTRY_NAME | 印刷可能 |
S ST |
2.5.4.8 | szOID_STATE_OR_PROVINCE_NAME |
印刷可能 T61 |
STREET | 2.5.4.9 | szOID_STREET_ADDRESS |
印刷可能 T61 |
T タイトル |
2.5.4.12 | szOID_TITLE |
印刷可能 T61 |
G GivenName |
2.5.4.42 | szOID_GIVEN_NAME |
印刷可能 T61 |
I Initials |
2.5.4.43 | szOID_INITIALS |
印刷可能 T61 |
SN | 2.5.4.4 | szOID_SUR_NAME |
印刷可能 T61 |
DC | 0.9.2342.19200300.100.1.25 | szOID_DOMAIN_COMPONENT |
IA5 UTF8 |
キーの RDN 値型として Printable または T61 が許可されている場合、名前文字列コンポーネントが次の文字セットのメンバーである場合、Printable は自動的に選択されます。
- A、B、...、Z
- a、b、...、z
- 0, 1, ..., 9
- (スペース)' ( ) + , - . / : = ?
T61 型は UTF8 でエンコードされています。
例
この関数を使用する例については、「 サンプル C プログラム: 証明書から ASN.1 および Back への名前の変換」を参照してください。
注意
wincrypt.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CertStrToName を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |