次の方法で共有


CertGetNameStringA 関数 (wincrypt.h)

CertGetNameString 関数は、証明書 CERT_CONTEXT 構造体からサブジェクトまたは発行者の名前を取得し、null-terminated 文字列に変換します。

構文

DWORD CertGetNameStringA(
  [in]  PCCERT_CONTEXT pCertContext,
  [in]  DWORD          dwType,
  [in]  DWORD          dwFlags,
  [in]  void           *pvTypePara,
  [out] LPSTR          pszNameString,
  [in]  DWORD          cchNameString
);

パラメーター

[in] pCertContext

変換するサブジェクト名と発行者名を含む CERT_CONTEXT 証明書コンテキストへのポインター。

[in] dwType

DWORD 名前の検出方法と出力の書式設定方法を示します。

価値 意味
CERT_NAME_EMAIL_TYPE
1
証明書にサブジェクトの別名の拡張子または発行者の別名がある場合は、最初の rfc822Name の選択肢を使用します。 拡張機能で rfc822Name の選択肢が見つからない場合は、電子メール OID の [サブジェクト名] フィールドを使用します。 rfc822Name または電子メール OID が見つかった場合は、文字列を使用します。 それ以外の場合は、空の文字列を返します (返される文字数は 1 です)。 pvTypePara は使用されず、nullに設定されます。
CERT_NAME_RDN_TYPE
2
CertNameToStr呼び出してサブジェクト名 BLOB を変換します。 pvTypePara は、CertNameToStrに渡される dwStrType を含む DWORD を指します。 [サブジェクト名] フィールドが空で、証明書にサブジェクトの別名拡張子がある場合は、CertNameToStrから選択した最初 ディレクトリ名を使用します。
CERT_NAME_ATTR_TYPE
3
pvTypePara は、返される name 属性を指定する オブジェクト識別子 (OID) を指します。 たとえば、pvTypePara がszOID_COMMON_NAMEされている場合は、サブジェクト名メンバーを使用します。 サブジェクト名メンバーが空で、証明書にサブジェクトの別名拡張子がある場合は、最初の directoryName の選択肢を使用します。
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
次の名前属性の一覧を反復処理し、最初に出現するサブジェクト名またはサブジェクトの別名の拡張子を使用します:szOID_COMMON_NAME、szOID_ORGANIZATIONAL_UNIT_NAME、szOID_ORGANIZATION_NAME、またはszOID_RSA_emailAddr。

これらの属性のいずれかが見つからない場合は、rfc822Name の選択肢にサブジェクトの別名拡張子を使用します。 一致するものがまだない場合は、最初の属性を使用します。

pvTypePara は使用されず、nullに設定されます。

CERT_NAME_FRIENDLY_DISPLAY_TYPE
5
CERT_FRIENDLY_NAME_PROP_ID プロパティの証明書を確認します。 証明書にこのプロパティがある場合は、返されます。 証明書にプロパティがない場合は、CERT_NAME_SIMPLE_DISPLAY_TYPEが返されます。
CERT_NAME_DNS_TYPE
6
証明書に発行者のサブジェクトの別名拡張子 、発行者の別名がある場合は、最初の DNSName の選択肢を検索します。

拡張機能で DNSName の選択肢が見つからない場合は、[サブジェクト名] フィールドで CN OID "2.5.4.3" を検索します。

DNSName または CN OID が見つかった場合は、文字列を返します。 それ以外の場合は、空の文字列を返します。

CERT_NAME_URL_TYPE
7
証明書に発行者のサブジェクトの別名拡張子 、発行者の別名がある場合は、最初の URL の選択を検索します。 URL の選択が見つかった場合は、文字列を返します。 それ以外の場合は、空の文字列を返します。
CERT_NAME_UPN_TYPE
8
証明書にサブジェクトの別名拡張子がある場合は、pszObjId == szOID_NT_PRINCIPAL_NAME ("1.3.6.1.4.1.311.20.2.3") を探して OtherName の選択肢を検索します。

UPN OID が見つかった場合は、BLOB をX509_UNICODE_ANY_STRINGとしてデコードし、デコードされた文字列を返します。 それ以外の場合は、空の文字列を返します。

[in] dwFlags

必要な処理の種類を示します。

価値 意味
CERT_NAME_ISSUER_FLAG
0x1
発行者の名前を取得します。 設定されていない場合は、サブジェクトの名前を取得します。
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
値を UTF8 としてデコードする既定の最初の試行をスキップし、8 ビット文字としてデコードします。
CERT_NAME_SEARCH_ALL_NAMES_FLAG
0x2
dwType パラメーターが CERT_NAME_DNS_TYPEに設定されている場合は、指定された DNS 値に該当するすべての名前が返されます。 DNS 名がなく、サブジェクトに CN コンポーネントがある場合は、代わりに CN が返されます。 CN と DNS 名がある場合は、DNS 名のみが返されます。 これは、SSL チェーン構築ポリシーを模倣します。 CERT_NAME_DNS_TYPE以外の名前の型に対してこのフラグを設定すると、この関数は null で終わる空の文字列を返します。

Windows 8 および Windows Server 2012: このフラグの サポートが開始されます。

CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
このフラグを使用すると、IA5String 文字列を、以下に定義されている dwType パラメーター値に基づいて Unicode 文字列値にデコードできます。
  • CERT_NAME_EMAIL_TYPE: 電子メール アドレスのホスト名部分に、IA5String コンポーネント エンコードされた Punycode が含まれている場合は、Unicode に相当する部分に変換されます。
  • CERT_NAME_SIMPLE_DISPLAY_TYPE: szOID_RSA_emailAddrのサブジェクト名またはサブジェクトの別名の rfc822Name が証明書から返され、電子メール アドレス a のホスト名部分に IA5String コンポーネント エンコードされた Punycode が含まれている場合は、Unicode と同等の名前に変換されます。
  • CERT_NAME_DNS_TYPE: 証明書に発行者の別名があり、DNSName が選択されていて、電子メール アドレス a のホスト名部分に IA5String コンポーネント エンコードされた Punycode が含まれている場合、Unicode と同等の名前に変換されます。
  • CERT_NAME_URL_TYPE: URI がデコードされ、エスケープ解除されます。 URI のサーバー ホスト名に、IA5String コンポーネント エンコードされた Punycode が含まれている場合、ホスト名の文字列は Unicode に変換されます。
Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値はサポートされていません。

[in] pvTypePara

dwStrType を含む DWORD、または名前属性を指定する オブジェクト識別子 (OID) へのポインター。 ポイントされる型は、dwType値によって決まります。

[out] pszNameString

返された文字列を受け取る割り当てられたバッファーへのポインター。 pszNameString が NULL ではなく、cchNameString が 0 でない場合 、pszNameStringnull-terminated 文字列です。

CERT_NAME_SEARCH_ALL_NAMES_FLAGdwFlags パラメーターで指定され、CERT_NAME_DNS_TYPEdwType パラメーターに設定されている場合、返される文字列には、適用されるすべての DNS 名が含まれます。 出力文字列内の各文字列は null で終わるので、最後の文字列は 2 つの null で終わることになります。 DNS 名が見つからない場合は、null で終わる 1 つの空の文字列が返されます。

[in] cchNameString

返される文字列に割り当てられたサイズ (文字単位)。 サイズには、終端 NULL 文字を含める必要があります。

戻り値

変換された文字数 (終端の 0 文字を含む) を返します。 pszNameString NULL 、または cchNameString 0 の場合は、コピー先の文字列の必要なサイズ (終端 NULL 文字を含む) を返します。 指定した名前の型が見つからない場合は、返された文字数が 1 の null-terminated 空の文字列を返します。

備考

手記

wincrypt.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CertGetNameString を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wincrypt.h
ライブラリ Crypt32.lib
DLL Crypt32.dll

関連項目

データ変換関数