Функция CertGetNameStringA (wincrypt.h)
Функция CertGetNameString получает имя субъекта или издателя из структуры сертификата CERT_CONTEXT и преобразует его в символьную строку с пустым завершением.
Синтаксис
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 не найден в расширении, использует поле Имя субъекта для Email OID. При обнаружении rfc822Name или Email OID использует строку . В противном случае возвращает пустую строку (возвращенное число символов равно 1). pvTypePara не используется и имеет значение NULL. |
|
Преобразует BLOB-объект имени субъекта путем вызова CertNameToStr. pvTypePara указывает на DWORD , содержащий dwStrType , переданный в CertNameToStr. Если поле Имя субъекта пусто и сертификат имеет расширение Альтернативное имя субъекта, использует первый выбор имени каталога из 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 не найден в расширении, выполните поиск в поле Имя субъекта для cn OID "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").
Если идентификатор имени участника-пользователя найден, декодировать большой двоичный объект как 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 , как определено ниже:
|
[in] pvTypePara
Указатель на DWORD , содержащий dwStrType , или идентификатор объекта (OID), указывающий атрибут name. Тип, на который указывает , определяется значением dwType.
[out] pszNameString
Указатель на выделенный буфер для получения возвращаемой строки. Если pszNameString не имеет значение NULL , а cchNameString не равно нулю, pszNameString является строкой, заканчивающейся null.
Если CERT_NAME_SEARCH_ALL_NAMES_FLAG указан в параметре dwFlags , а CERT_NAME_DNS_TYPE задано в параметре dwType , возвращаемая строка будет содержать все применимые DNS-имена. Каждая строка в выходной строке заканчивается null, а последняя строка будет иметь двойное значение NULL. Если DNS-имена не найдены, возвращается одна пустая строка, оканченная null.
[in] cchNameString
Размер в символах, выделенный для возвращаемой строки. Размер должен включать завершающий символ NULL .
Возвращаемое значение
Возвращает количество преобразованных символов, включая завершающий нулевой символ. Если pszNameString имеет значение NULL или cchNameString равно нулю, возвращает требуемый размер строки назначения (включая завершающий символ NULL ). Если указанный тип имени не найден, возвращает пустую строку, завершаемую null, с возвращенным числом символов 1.
Комментарии
Примечание
Заголовок wincrypt.h определяет CertGetNameString в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |