Функция CertStrToNameA (wincrypt.h)
Функция CertStrTo Name преобразует строку 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
Указатель на преобразуемую строку X.500, завершаемую null. Формат этой строки задается параметром dwStrType.
Ожидается, что эта строка будет отформатирована так же, как выходные данные из функции CertNameToStr.
[in] dwStrType
Этот параметр задает тип строки. Этот параметр также задает другие параметры содержимого строки.
Если флаги не объединяются с описательом типа строки, строка может содержать запятую (,) или точку с запятой (;) в качестве разделителей в относительное различающееся имя (RDN) и знак плюса (+) в качестве разделителя в нескольких значениях RDN.
Поддерживаются кавычки (""). Кавычки можно включить в кавычки с помощью двух наборов кавычки, например CN="User ""one"".
Значение, начинающееся с знака числа (#), рассматривается как ASCII шестнадцатеричным и преобразуется в CERT_RDN_OCTET_STRING. Внедренное пробелы игнорируется. Например, 1.2.3 = # AB CD 01 совпадает с 1.2.3=#ABCD01.
Пробел, который окружает ключи, идентификаторы объектов и значения игнорируются.
Этот параметр может быть одним из следующих значений.
Ценность | Значение |
---|---|
|
Этот тип строки не поддерживается. |
|
Проверяет, поддерживается ли тип строки. Строка может быть идентификатором объекта (OID) или именем X.500. |
|
Идентичен CERT_OID_NAME_STR. Проверяет, поддерживается ли тип строки. Строка может быть идентификатором объекта (OID) или именем X.500. |
Следующие параметры также можно объединить со значением выше, чтобы указать дополнительные параметры строки.
Ценность | Значение |
---|---|
|
В качестве разделителя RDN поддерживается только запятая (,). |
|
В качестве разделителя RDN поддерживается только точка с запятой (;)). |
|
В качестве разделителя RDN поддерживается только обратная косая черта (\r) или обратная косая черта (\n). |
|
Знак плюса (+) игнорируется как разделитель, а несколько значений на RDN не поддерживаются. |
|
Кавывание не поддерживается. |
|
Порядок RDN в различаемом имени перевернут перед кодировкой. Этот флаг по умолчанию не задан. |
|
Вместо CERT_RDN_UNICODE_STRINGиспользуется тип закодированного значения CERT_RDN_T61_STRING. Этот флаг можно использовать, если все символы Юникода меньше или равны 0xFF. |
|
Вместо CERT_RDN_UNICODE_STRINGиспользуется тип закодированного значения CERT_RDN_UTF8_STRING. |
|
Принудительно кодирование ключа X.500 в виде строки UTF-8 (CERT_RDN_UTF8_STRING), а не в виде печатной строки Юникода (CERT_RDN_PRINTABLE_STRING). Это значение по умолчанию для центров сертификации Майкрософт, начиная с Windows Server 2003. |
|
Запрещает принудительное кодирование ключа Юникода (CERT_RDN_PRINTABLE_STRING) X.500 с помощью UTF-8 (CERT_RDN_UTF8_STRING). Используется для включения кодирования ключей X.500 в качестве значений Юникода при установке CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG. |
|
Если строка содержит значение RDN электронной почты, а адрес электронной почты содержит символы Юникода за пределами набора символов ASCII, то часть имени узла адреса электронной почты закодирована в Punycode. Затем результирующий адрес электронной почты закодирован в виде строки IA5Str ing. Кодировка 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 содержит количество байтов, хранящихся в буфере.
Если pbEncodedNULL, DWORD получает размер в байтах, необходимый для буфера.
[out, optional] ppszError
Указатель на строковый указатель, который получает дополнительные сведения об ошибке о недопустимой входной строке.
Если строка pszX500 недопустимая, ppszError обновляется этой функцией, чтобы указать начало недопустимой последовательности символов. Если в входной строке нет ошибок, ppszError имеет значение NULL.
Если эти сведения не требуются, передайте NULL для этого параметра.
Этот параметр обновляется для следующих кодов ошибок, возвращаемых из GetLastError.
CRYPT_E_INVALID_X500_STRING
CRYPT_E_INVALID_NUMERIC_STRING
CRYPT_E_INVALID_PRINTABLE_STRING
CRYPT_E_INVALID_IA5_STRING
Возвращаемое значение
Возвращает ненулевое значение, если успешно или ноль в противном случае.
Для получения расширенных сведений об ошибке вызовите 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 |
ПОДРАЗДЕЛЕНИЕ | 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 или T61, функция печати автоматически выбирается, если компонент строки имени является членом следующих наборов символов:
- A, B, ..., Z
- a, b, ..., z
- 0, 1, …, 9
- (пробел) ' ( ) + , - . / : = ?
Типы T61 кодируются в кодировке UTF8.
Примеры
Пример использования этой функции см. в разделе Пример программы C: преобразование имен из сертификатов в ASN.1 и обратно.
Заметка
Заголовок wincrypt.h определяет CertStrToName как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2003 [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | wincrypt.h |
библиотеки |
Crypt32.lib |
DLL | Crypt32.dll |