Функция CryptFormatObject (wincrypt.h)

Функция CryptFormatObject форматирует закодированные данные и возвращает строку Юникода в выделенном буфере в соответствии с типом кодирования сертификата.

Синтаксис

BOOL CryptFormatObject(
  [in]      DWORD      dwCertEncodingType,
  [in]      DWORD      dwFormatType,
  [in]      DWORD      dwFormatStrType,
  [in]      void       *pFormatStruct,
  [in]      LPCSTR     lpszStructType,
  [in]      const BYTE *pbEncoded,
  [in]      DWORD      cbEncoded,
  [out]     void       *pbFormat,
  [in, out] DWORD      *pcbFormat
);

Параметры

[in] dwCertEncodingType

Тип кодировки, используемой в сертификате. Используемый в настоящее время тип кодирования сертификата X509_ASN_ENCODING.

[in] dwFormatType

Значения типа форматирования. Не используется. Задайте нулевое значение.

[in] dwFormatStrType

Значения типа формата структуры. Этот параметр может быть равен нулю, или можно указать один или несколько следующих флагов с помощью побитового оператора ИЛИ для их объединения.

Значение Значение
0
Отображение данных в одной строке. Каждое подполе объединяется с запятой (,). Дополнительные сведения см. в подразделе "Примечания".
CRYPT_FORMAT_STR_MULTI_LINE
0x0001
Отображение данных в нескольких строках, а не в одной строке (по умолчанию). Дополнительные сведения см. в подразделе "Примечания".
CRYPT_FORMAT_STR_NO_HEX
0x0010
Отключает шестнадцатеричный дамп. Дополнительные сведения см. в подразделе "Примечания".

[in] pFormatStruct

Указатель на формат структуры. Не используется. Задайте значение NULL.

[in] lpszStructType

Указатель на OID, определяющий закодированные данные. Если слово высокого порядка параметра lpszStructType равно нулю, слово нижнего порядка задает целочисленный идентификатор для типа данной структуры. В противном случае этот параметр является длинным указателем на строку, завершаемую null.

В следующей таблице перечислены поддерживаемые идентификаторы OID со связанным расширением OID.

Значение Значение
SPC_FINANCIAL_CRITERIA_OBJID
1.3.6.1.4.1.311.2.1.27
SPC_SP_AGENCY_INFO_OBJID
1.3.6.1.4.1.311.2.1.10
szOID_AUTHORITY_INFO_ACCESS
1.3.6.1.5.5.7.1.1
szOID_AUTHORITY_KEY_IDENTIFIER2
2.5.29.35
szOID_BASIC_CONSTRAINTS2
2.5.29.19
szOID_CERT_POLICIES
2.5.29.32
szOID_CRL_DIST_POINTS
2.5.29.31
szOID_CRL_REASON_CODE
2.5.29.21
szOID_ENHANCED_KEY_USAGE
2.5.29.37
szOID_ISSUER_ALT_NAME2
2.5.29.18
szOID_KEY_ATTRIBUTES
2.5.29.2
szOID_KEY_USAGE
2.5.29.15
szOID_KEY_USAGE_RESTRICTION
2.5.29.4
szOID_NEXT_UPDATE_LOCATION
1.3.6.1.4.1.311.10.2
szOID_RSA_SMIMECapabilities
1.2.840.113549.1.9.15
szOID_SUBJECT_ALT_NAME2
2.5.29.17
szOID_SUBJECT_KEY_IDENTIFIER
2.5.29.14

[in] pbEncoded

Указатель на закодированные данные для форматирования. Если lpszStructType является одним из указанных выше идентификаторов OID, pbEncoded — это закодированное расширение.

[in] cbEncoded

Размер структуры pbEncoded в байтах.

[out] pbFormat

Указатель на буфер, который получает отформатированную строку. Если указанный буфер недостаточно велик для получения декодированных структур, функция задает ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pcbFormat. Этот параметр может иметь значение NULL , чтобы задать размер этих сведений для целей выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out] pcbFormat

Указатель на переменную, указывающую размер (в байтах) буфера, на который указывает параметр pbFormat . При возврате функции переменная, на которую указывает параметр pcbFormat , содержит количество байтов, хранящихся в буфере. Этот параметр может иметь значение NULL, только если pbFormat имеет значение NULL.

Примечание При обработке данных, возвращаемых в буфере, приложения должны использовать фактический размер возвращаемых данных. Фактический размер может быть немного меньше размера буфера, указанного на входных данных. (На входных данных размеры буфера обычно указываются достаточно большими, чтобы убедиться, что в буфер помещаются самые большие выходные данные.) В выходных данных переменная, на которую указывает этот параметр, обновляется с учетом фактического размера данных, скопированных в буфер.
 

Возвращаемое значение

Если функция выполнена успешно, возвращается значение TRUE. Если это не удается, возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, используйте функцию GetLastError .

Комментарии

По умолчанию эта функция возвращает однострочное отображение закодированных данных, то есть каждое подполе объединяется с запятой (,) в одной строке. Если вы предпочитаете отображать данные в нескольких строках, установите флаг CRYPT_FORMAT_STR_MULTI_LINE. Затем каждое подполе будет отображаться в отдельной строке.

Если для параметра lpszStructType не установлено или не зарегистрировано подпрограммы форматирования, будет возвращен шестнадцатеричный дамп закодированного CRYPT_INTEGER_BLOB . Пользователь может установить флаг CRYPT_FORMAT_STR_NO_HEX для отключения шестнадцатеричного дампа.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CRYPT_INTEGER_BLOB