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 値の区切り記号として含めることができます。
引用符 ("") がサポートされています。 引用符は、CN="User ""one" など、2 つの引用符セットを使用して引用符で囲まれた値に含めることができます。
数値記号 (#) で始まる値は、ASCII 16 進数
キー、オブジェクト識別子、および値を囲む空白は無視されます。
このパラメーターには、次のいずれかの値を指定できます。
価値 | 意味 |
---|---|
|
この文字列型はサポートされていません。 |
|
文字列型がサポートされていることを検証します。 文字列には、オブジェクト識別子 (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
DWORD へのポインター、関数を呼び出す前に、pbEncoded パラメーターによって指されるバッファーのサイズ (バイト単位) が格納されます。 関数から制御が戻ると、DWORD にはバッファーに格納されているバイト数が格納されます。
pbEncoded
[out, optional] ppszError
無効な入力文字列に関する追加のエラー情報を受け取る文字列ポインターへのポインター。
pszX500 文字列が無効な場合、ppszError は無効な文字シーケンスの先頭を指すよう、この関数によって更新されます。 入力文字列でエラーが検出されない場合、
この情報が不要な場合は、このパラメーター 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 聖 |
2.5.4.8 | szOID_STATE_OR_PROVINCE_NAME |
印刷 T61 |
通り | 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 |
私 イニシャル |
2.5.4.43 | szOID_INITIALS |
印刷 T61 |
SN | 2.5.4.4 | szOID_SUR_NAME |
印刷 T61 |
直流 | 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 アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | wincrypt.h |
ライブラリ | Crypt32.lib |
DLL | Crypt32.dll |
関連項目
GetLastError の