CertNameToStrW 関数 (wincrypt.h)
CertNameToStr 関数は、CERT_NAME_BLOB構造体のエンコードされた名前を null で終わる文字列に変換します。
文字列表現は、 RFC 1779 の識別名の仕様に従います。 この規則の例外は、以下の「備考」セクションに記載されています。
構文
DWORD CertNameToStrW(
[in] DWORD dwCertEncodingType,
[in] PCERT_NAME_BLOB pName,
[in] DWORD dwStrType,
[out] LPWSTR psz,
[in] DWORD csz
);
パラメーター
[in] dwCertEncodingType
名前のエンコードに使用された証明書エンコードの 種類 。 この値の上位 WORD に含まれるメッセージ エンコード型識別子は、この関数では無視されます。
このパラメーターには、現在定義されている次の証明書エンコードの種類を指定できます。
値 | 説明 |
---|---|
|
X.509 証明書のエンコードを指定します。 |
[in] pName
変換する CERT_NAME_BLOB 構造体へのポインター。
[in] dwStrType
このパラメーターは、出力文字列の形式を指定します。 このパラメーターは、文字列の内容の他のオプションも指定します。
このパラメーターには、次の値のいずれかを指定できます。
値 | 説明 |
---|---|
|
すべての オブジェクト識別子 (OID) は破棄されます。 CERT_RDN エントリは、コンマの後にスペース (、) で区切られます。 CERT_RDN内の複数の属性は、スペース ( + ) で囲まれたプラス記号 (Microsoft、Kim Abercrombie + Programmer など) で区切られます。 |
|
OID は、属性値の等号 (=) 区切り記号に含まれています。 CERT_RDN エントリは、コンマの後にスペース (、) で区切られます。 CERT_RDN内の複数の属性は、プラス記号とスペース (+) で区切られます。 |
|
OID は X.500 キー名に変換されます。それ以外の場合は、 CERT_OID_NAME_STRと同じです。 OID に対応する X.500 名がない場合、OID は OID のプレフィックスと共に使用されます。
RDN 値には、先頭または末尾の空白、または次のいずれかの文字が含まれている場合、引用符で囲まれます。
|
次のオプションを上記の値と組み合わせて、文字列の追加オプションを指定することもできます。
値 | 説明 |
---|---|
|
コンマの後にスペース (、) 区切り記号をセミコロンで置き換え、その後にスペース (; ) 区切り記号を付けます。 |
|
コンマの後にスペース (、) 区切り記号を円記号で置き換え、その後に r 文字、円記号、n 文字 (\r\n) 区切り記号を付けます。 |
|
スペース ( + ) 区切り記号で囲まれたプラス記号を 1 つのスペース区切り記号に置き換えます。 |
|
引用符を無効にします。 |
|
識別名文字列内の RDN の順序は、デコード後に逆になります。 このフラグは既定では設定されていません。 |
|
既定では、CERT_RDN_T61_STRING X.500 キー文字列は UTF8 としてデコードされます。 UTF8 デコードが失敗した場合、X.500 キーは 8 ビット文字としてデコードされます。 CERT_NAME_STR_DISABLE_IE4_UTF8_FLAGを使用して、UTF8 としてデコードする最初の試行をスキップします。 |
|
pName パラメーターが指す名前に電子メール RDN が含まれており、電子メール アドレスのホスト名の部分に Punycode でエンコードされた IA5String が含まれている場合、その名前は Unicode と同等の名前に変換されます。
Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値はサポートされていません。 |
[out] psz
返された文字列を受け取る文字バッファーへのポインター。 このバッファーのサイズは csz パラメーターで指定します。
[in] csz
psz バッファーのサイズ (文字単位)。 サイズには、終端の null 文字を含める必要があります。
戻り値
変換された文字数 (終端の null 文字を含む) を返します。
psz が NULL または csz が 0 の場合は、変換先文字列の必要なサイズを返します。
解説
psz が NULL でなく、csz が 0 でない場合、返される psz は常に null で終わる文字列です。
デコード時に順序の問題が発生する可能性を回避するために、マルチコンポーネント RNN (CN=James+O=Microsoft など) を使用することをお勧めします。 代わりに、単一値の RNN (CN=James、O=Microsoft など) の使用を検討してください。
文字列表現は、 RFC 1779 の識別名の仕様に従います。ただし、次の一覧で説明する逸脱を除きます。
- 引用符を含む名前は、二重引用符で囲まれます。
- 空の文字列は二重引用符で囲まれます。
- 連続するスペースを含む文字列は、引用符で囲まれません。
- CERT_RDN_ENCODED_BLOB型またはCERT_RDN_OCTET_STRING型の相対識別名 (RDN) 値は、16 進数で書式設定されます。
- OID に対応する X.500 名がない場合は、OID の前に "OID" プレフィックスが使用されます。
- RDN 値の先頭に空白、末尾の空白、または次のいずれかの文字が含まれている場合、RDN 値は二重引用符 ("\" ではなく) で囲まれます。
- コンマ (,)
- プラス記号 (+)
- 等号 (=)
- インチ マーク (")
- 円記号 (/)
- より小さい記号 (<)
- より大きい記号 (>)
- 番号記号 (#)
- セミコロン (;)
- stateOrProvinceName (2.5.4.8) OID の X.500 キー名は "S" です。 この値は、RFC 1779 X.500 キー名 ("ST") とは異なります。
Key | オブジェクト識別子の文字列 |
---|---|
E | 1.2.840.113549.1.9.1 |
T | 2.5.4.12 |
G | 2.5.4.42 |
I | 2.5.4.43 |
SN | 2.5.4.4 |
例
この関数を使用する例については、次を参照してください。
例 C プログラム: 証明書から ASN.1 および Back への名前の変換。
注意
wincrypt.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CertNameToStr を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |