CryptQueryObject function (wincrypt.h)

Важно Этот API не рекомендуется использовать. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
 
Функция CryptQueryObject извлекает сведения о содержимом объекта API шифрования, например о сертификате, списке отзыва сертификатов или списке доверия сертификатов. Объект может находиться в структуре в памяти или содержаться в файле.

Синтаксис

BOOL CryptQueryObject(
  [in]  DWORD      dwObjectType,
  [in]  const void *pvObject,
  [in]  DWORD      dwExpectedContentTypeFlags,
  [in]  DWORD      dwExpectedFormatTypeFlags,
  [in]  DWORD      dwFlags,
  [out] DWORD      *pdwMsgAndCertEncodingType,
  [out] DWORD      *pdwContentType,
  [out] DWORD      *pdwFormatType,
  [out] HCERTSTORE *phCertStore,
  [out] HCRYPTMSG  *phMsg,
  [out] const void **ppvContext
);

Параметры

[in] dwObjectType

Указывает тип запрашиваемого объекта. Это должно быть одно из следующих значений.

Значение Значение
CERT_QUERY_OBJECT_BLOB
Объект хранится в структуре в памяти.
CERT_QUERY_OBJECT_FILE
Объект хранится в файле .

[in] pvObject

Указатель на запрашиваемый объект. Тип указателя данных зависит от содержимого параметра dwObjectType .

Значение dwObjectType Значение
CERT_QUERY_OBJECT_BLOB
Этот параметр является указателем на CERT_BLOB или аналогичную структуру, содержащую объект для запроса.
CERT_QUERY_OBJECT_FILE
Этот параметр является указателем на строку Юникода, завершающуюся null, которая содержит путь и имя файла для запроса.

[in] dwExpectedContentTypeFlags

Указывает ожидаемый тип контента. Это может быть одно из следующих значений.

Значение Значение
CERT_QUERY_CONTENT_FLAG_ALL
Содержимое может быть любого типа. Это не включает флаг CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD .

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

CERT_QUERY_CONTENT_FLAG_CERT
Содержимое представляет собой один сертификат.
CERT_QUERY_CONTENT_FLAG_CERT_PAIR
Содержимое представляет собой абстрактную синтаксическую нотацию 1 (ASN.1), закодированную X509_CERT_PAIR (закодированную пару сертификатов, которая содержит перекрестные сертификаты типа "вперед", "обратный" или "вперед" и "обратный").
CERT_QUERY_CONTENT_FLAG_CRL
Содержимое является одним списком отзыва сертификатов.
CERT_QUERY_CONTENT_FLAG_CTL
Содержимое является одним CTL.
CERT_QUERY_CONTENT_FLAG_PFX
Содержимое является пакетом PFX (PKCS No 12), но оно не будет загружено этой функцией. Для загрузки в хранилище можно использовать функцию PFXImportCertStore .
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD
Содержимое является пакетом PFX (PKCS 12) и будет загружено этой функцией в соответствии с условиями, указанными в примечании ниже.
Примечание  

Если пакет PFX содержит внедренный пароль, который не является пустой строкой или значением NULL и пароль не был защищен для субъекта Active Directory (AD), включающего вызывающего пользователя, эта функция не сможет расшифровать пакет PFX. Однако пакет можно расшифровать, если пароль, используемый при создании пакета PFX, был зашифрован в субъекте AD и пользователь в составе этого субъекта имеет разрешение на расшифровку пароля. Дополнительные сведения см. в разделе параметр pvPara и флаг PKCS12_PROTECT_TO_DOMAIN_SIDS функции PFXExportCertStoreEx .

Вы можете защитить пароли PFX для субъекта AD, начиная с Windows 8 и Windows Server 2012.

 
Windows Server 2003 и Windows XP: Это значение не поддерживается.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
Содержимое — сообщение с подписью PKCS #7.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
Содержимое представляет собой внедренное сообщение с подписью PKCS #7.
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
Содержимое представляет собой сообщение без знака PKCS 7.
CERT_QUERY_CONTENT_FLAG_PKCS10
Содержимое — сообщение PKCS No 10.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
Содержимое представляет собой сериализованный один сертификат.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
Содержимое представляет собой сериализованный один список отзыва сертификатов.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
Содержимое сериализуется в одном CTL.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
Содержимое является сериализованным хранилищем.

[in] dwExpectedFormatTypeFlags

Указывает ожидаемый формат возвращаемого типа. Это может быть одно из следующих значений.

Значение Значение
CERT_QUERY_FORMAT_FLAG_ALL
Содержимое может быть возвращено в любом формате.
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
Содержимое должно возвращаться в шестнадцатеричном формате ASCII с префиксом "{ASN}".
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
Содержимое должно возвращаться в формате Base64.
CERT_QUERY_FORMAT_FLAG_BINARY
Содержимое должно быть возвращено в двоичном формате.

[in] dwFlags

Этот параметр зарезервирован для использования в будущем и должен иметь нулевое значение.

[out] pdwMsgAndCertEncodingType

Указатель на значение DWORD , которое получает тип кодировки, используемой в сообщении. Если эти сведения не требуются, задайте для этого параметра значение NULL.

Этот параметр может получить сочетание одного или нескольких из следующих значений.

Значение Значение
PKCS_7_ASN_ENCODING
65536 (0x10000)
Задает кодировку сообщений PKCS 7.
X509_ASN_ENCODING
1 (0x1)
Задает кодировку сертификата X.509.

[out] pdwContentType

Указатель на значение DWORD , которое получает фактический тип содержимого. Если эти сведения не требуются, задайте для этого параметра значение NULL. Возвращаемый тип контента может быть одним из следующих значений.

Значение Значение
CERT_QUERY_CONTENT_CERT
Содержимое представляет собой один сертификат.
CERT_QUERY_CONTENT_CERT_PAIR
Содержимое представляет собой X509_CERT_pair в кодировке ASN.1.
CERT_QUERY_CONTENT_CRL
Содержимое представляет собой один список отзыва сертификатов.
CERT_QUERY_CONTENT_CTL
Содержимое представляет собой один CTL.
CERT_QUERY_CONTENT_PFX
Содержимое представляет собой пакет PFX (PKCS #12). Эта функция только проверяет, является ли объект пакетом PKCS #12. Пакет PKCS 12 не загружается в хранилище сертификатов.
CERT_QUERY_CONTENT_PFX_AND_LOAD
Содержимое представляет собой пакет PFX (PKCS 12), который был загружен в хранилище сертификатов.

Windows Server 2003 и Windows XP: Это значение не поддерживается.

CERT_QUERY_CONTENT_PKCS7_SIGNED
Содержимое представляет собой сообщение с подписью PKCS #7.
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
Содержимое представляет собой внедренное сообщение с подписью PKCS #7.
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
Содержимое представляет собой сообщение без знака PKCS 7.
CERT_QUERY_CONTENT_PKCS10
Содержимое представляет собой сообщение PKCS #10.
CERT_QUERY_CONTENT_SERIALIZED_CERT
Содержимое представляет собой сериализованный отдельный сертификат.
CERT_QUERY_CONTENT_SERIALIZED_CRL
Содержимое представляет собой сериализованный один список отзыва сертификатов.
CERT_QUERY_CONTENT_SERIALIZED_CTL
Содержимое представляет собой сериализованный один CTL.
CERT_QUERY_CONTENT_SERIALIZED_STORE
Содержимое является сериализованным хранилищем.

[out] pdwFormatType

Указатель на значение DWORD , которое получает фактический тип формата содержимого. Если эти сведения не требуются, задайте для этого параметра значение NULL. Возвращаемый тип формата может иметь одно из следующих значений.

Значение Значение
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
Содержимое находится в шестнадцатеричном формате ASCII с префиксом "{ASN}".
CERT_QUERY_FORMAT_BASE64_ENCODED
Содержимое имеет формат в кодировке Base64.
CERT_QUERY_FORMAT_BINARY
Содержимое имеет двоичный формат.

[out] phCertStore

Указатель на значение HCERTSTORE , которое получает дескриптор хранилища сертификатов, включающее все сертификаты, списки отзыва сертификатов и списки сертификатов в объекте .

Этот параметр получает дескриптор хранилища сертификатов, только если параметр dwContentType получает одно из следующих значений. Этот параметр получает значение NULL для всех остальных типов контента.

CERT_QUERY_CONTENT_CERT

CERT_QUERY_CONTENT_CRL

CERT_QUERY_CONTENT_CTL

CERT_QUERY_CONTENT_PFX_AND_LOAD

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_SERIALIZED_CERT

CERT_QUERY_CONTENT_SERIALIZED_CRL

CERT_QUERY_CONTENT_SERIALIZED_CTL

CERT_QUERY_CONTENT_SERIALIZED_STORE

Завершив использование дескриптора, освободите его, передав дескриптор в функцию CertCloseStore .

Если эти сведения не требуются, задайте для этого параметра значение NULL.

[out] phMsg

Указатель на значение HCRYPTMSG , которое получает дескриптор открытого сообщения.

Этот параметр получает дескриптор сообщения, только если параметр dwContentType получает одно из следующих значений. Этот параметр получает значение NULL для всех остальных типов контента.

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_PKCS7_UNSIGNED

Завершив использование дескриптора, освободите его, передав дескриптор в функцию CryptMsgClose .

Если эти сведения не требуются, задайте для этого параметра значение NULL.

[out] ppvContext

Указатель на указатель, получающий дополнительные сведения об объекте.

Формат этих данных зависит от значения, полученного параметром dwContentType . В следующей таблице перечислены форматы данных для указанного значения dwContentType .

Значение dwContentType Значение
CERT_QUERY_CONTENT_CERT
Этот параметр получает указатель на структуру CERT_CONTEXT . Завершив использование структуры, освободите ее, передав этот указатель на функцию CertFreeCertificateContext .
CERT_QUERY_CONTENT_CRL
Этот параметр получает указатель на структуру CRL_CONTEXT . Завершив использование структуры, освободите ее, передав этот указатель на функцию CertFreeCRLContext .
CERT_QUERY_CONTENT_CTL
Этот параметр получает указатель на структуру CTL_CONTEXT . Завершив использование структуры, освободите ее, передав указатель на функцию CertFreeCTLContext .
CERT_QUERY_CONTENT_SERIALIZED_CERT
Этот параметр получает указатель на структуру CERT_CONTEXT . Завершив использование структуры, освободите ее, передав этот указатель на функцию CertFreeCertificateContext .
CERT_QUERY_CONTENT_SERIALIZED_CRL
Этот параметр получает указатель на структуру CRL_CONTEXT . Завершив использование структуры, освободите ее, передав этот указатель на функцию CertFreeCRLContext .
CERT_QUERY_CONTENT_SERIALIZED_CTL
Этот параметр получает указатель на структуру CTL_CONTEXT . Завершив использование структуры, освободите ее, передав указатель на функцию CertFreeCTLContext .
 

Если эти сведения не требуются, задайте для этого параметра значение NULL.

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

Если функция выполняется успешно, функция возвращает ненулевое значение.

Если функция завершается сбоем, она возвращает ноль. Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.

Требования

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

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

Функции Управление данными