Функция 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, указывающий, как найти имя и как следует отформатировать выходные данные.
Ценность | Значение |
---|---|
|
Если сертификат имеет расширение альтернативного имени субъекта или альтернативное имя издателя, использует первый вариант rfc822Name. Если параметр rfc822Name не найден в расширении, использует поле "Имя субъекта" для OID электронной почты. Если найдено значение rfc822Name или OID электронной почты, используется строка. В противном случае возвращает пустую строку (возвращенное число символов равно 1). pvTypePara не используется и имеет значение NULL. |
|
Преобразует BLOB-объект имени субъекта путем вызова CertNameToStr. |
|
pvTypePara указывает на идентификатор объекта (OID), указывающий возвращаемый атрибут имени. Например, если pvTypePara szOID_COMMON_NAME, используется элемент имени субъекта. Если элемент имени субъекта пуст, а сертификат имеет расширение "Альтернативное имя субъекта", использует первый вариант directoryName. |
|
Выполняет итерацию в следующем списке атрибутов имен и использует расширение имени субъекта или альтернативного имени субъекта для первого вхождения: szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME или szOID_RSA_emailAddr.
Если один из этих атрибутов не найден, использует расширение "Альтернативное имя субъекта" для выбора rfc822Name. Если совпадения по-прежнему нет, использует первый атрибут. pvTypePara не используется и имеет значение NULL. |
|
Проверяет сертификат для свойства CERT_FRIENDLY_NAME_PROP_ID. Если сертификат имеет это свойство, он возвращается. Если сертификат не имеет свойства, возвращается CERT_NAME_SIMPLE_DISPLAY_TYPE. |
|
Если сертификат имеет расширение "Альтернативное имя субъекта" для издателя, издателя альтернативного имени, выполните поиск по первому варианту DNSName.
Если параметр DNSName не найден в расширении, выполните поиск в поле "Имя субъекта" для OID CN, "2.5.4.3". Если найден DNSName или CN OID, верните строку. В противном случае верните пустую строку. |
|
Если сертификат имеет расширение альтернативного имени субъекта для издателя, издателя альтернативного имени, выполните поиск по первому выбору URL-адреса. Если найден выбор URL-адреса, верните строку. В противном случае верните пустую строку. |
|
Если сертификат имеет расширение "Альтернативное имя субъекта", выполните поиск вариантов OtherName, которые ищут pszObjId == szOID_NT_PRINCIPAL_NAME, ("1.3.6.1.4.1.311.20.2.3").
Если идентификатор имени участника-участника-участника найден, декодирует BLOB-объект в виде X509_UNICODE_ANY_STRING и возвращает декодированную строку. В противном случае верните пустую строку. |
[in] dwFlags
Указывает тип необходимой обработки.
Ценность | Значение |
---|---|
|
Получает имя издателя. Если не задано, получает имя субъекта. |
|
Пропускает начальную попытку по умолчанию декодировать значение как UTF8 и декодирует как 8-разрядные символы. |
|
Если параметр dwType имеет значение CERT_NAME_DNS_TYPE, возвращаются все применимые имена для указанного значения DNS. Если в субъекте нет DNS-имени, но в субъекте есть компонент CN, вместо этого возвращается CN. Если есть CN и DNS-имя, возвращаются только DNS-имена. Это имитирует политику построения цепочки SSL. Если этот флаг задан для типа имени, отличного от CERT_NAME_DNS_TYPE, эта функция возвращает пустую строку, завершаемую null.
Windows 8 и Windows Server 2012: начинается поддержка этого флага . |
|
Этот флаг позволяет декодировать строки IA5String в строковые значения Юникода на основе значения параметра dwType dwType, как определено ниже:
|
[in] pvTypePara
Указатель на DWORD, содержащий dwStrType или идентификатор объекта (OID), указывающий атрибут имени. Тип, на который указывает тип, определяется значением dwType.
[out] pszNameString
Указатель на выделенный буфер для получения возвращаемой строки. Если pszNameString не null и cchNameString не равно нулю, pszNameString является строкой null-terminated.
Если
[in] cchNameString
Размер в символах, выделенный для возвращаемой строки. Размер должен содержать завершающийся символ NULL.
Возвращаемое значение
Возвращает число преобразованных символов, в том числе завершающегося нулевого символа. Если pszNameStringnull или cchNameString равно нулю, возвращает требуемый размер целевой строки (включая завершающий символ NULL). Если указанный тип имени не найден, возвращает null-завершенную пустую строку с возвращаемым числом символов 1.
Замечания
Заметка
Заголовок wincrypt.h определяет CertGetNameString как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2003 [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | wincrypt.h |
библиотеки |
Crypt32.lib |
DLL | Crypt32.dll |