Поделиться через


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

Функция CertCreateContext создает указанный контекст из закодированных байтов. Созданный контекст не включает расширенные свойства.

Синтаксис

const void * CertCreateContext(
  [in]           DWORD                     dwContextType,
  [in]           DWORD                     dwEncodingType,
  [in]           const BYTE                *pbEncoded,
  [in]           DWORD                     cbEncoded,
  [in]           DWORD                     dwFlags,
  [in, optional] PCERT_CREATE_CONTEXT_PARA pCreatePara
);

Параметры

[in] dwContextType

Указывает контексты, которые можно создать. Например, чтобы создать контекстсертификата, задайте параметру dwContextType значение CERT_STORE_CERTIFICATE_CONTEXT.

В следующей таблице показаны флаги определенных типов контекста.

Значение Значение
CERT_STORE_CERTIFICATE_CONTEXT
Контекст сертификата.
CERT_STORE_CRL_CONTEXT
Контекст списка отзыва сертификатов.
CERT_STORE_CTL_CONTEXT
Контекст CTL.

[in] dwEncodingType

Указывает используемый тип кодирования. В настоящее время используются только X509_ASN_ENCODING и PKCS_7_ASN_ENCODING; однако в будущем могут быть добавлены дополнительные типы кодирования. Для любого из текущих типов кодирования используйте:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] pbEncoded

Указатель на буфер, содержащий существующее закодированное содержимое контекста для копирования.

[in] cbEncoded

Размер буфера pbEncoded в байтах.

[in] dwFlags

Следующие значения флагов определены и могут быть объединены с помощью побитовой операции ИЛИ .

Значение Значение
CERT_CREATE_CONTEXT_NOCOPY_FLAG
Созданный контекст указывает непосредственно на содержимое, на которое указывает pbEncoded , а не на выделенную копию.
CERT_CREATE_CONTEXT_SORTED_FLAG
Функция создает контекст с отсортированных записей. В настоящее время этот флаг применяется только к контексту CTL.

Для списков CCL элемент cCTLEntry возвращаемой структуры CTL_INFO всегда равен нулю. Для поиска или перечисления записей CTL необходимо вызывать CertFindSubjectInSortedCTL и CertEnumSubjectInSortedCTL.

CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG
По умолчанию при создании контекста CTL создается дескриптор HCRYTPMSG для сообщения SignedData . Этот флаг можно установить для повышения производительности, не создавая этот дескриптор. Этот флаг можно использовать только в том случае, если параметр dwContextType имеет CERT_STORE_CTL_CONTEXT.
CERT_CREATE_CONTEXT_NO_ENTRY_FLAG
По умолчанию при создании контекста CTL его записи декодируются. Если этот флаг установлен, записи не декодируются и производительность улучшается. Этот флаг можно использовать только в том случае, если параметр dwContextType имеет CERT_STORE_CTL_CONTEXT.

[in, optional] pCreatePara

Указатель на структуру CERT_CREATE_CONTEXT_PARA .

Если pCreatePara и его элемент pfnFree не имеют значения NULL, элемент pfnFree используется для освобождения памяти, указанной элементом pvFree . Если элемент pvFree имеет значение NULL, то для освобождения указателя pbEncoded используется элемент pfnFree.

Если pCreatePara или его член pfnFree имеет значение NULL, попытка освободить pbEncoded не предпринимается.

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

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

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

Если GetLastError возвращает ERROR_CANCELLED, это означает, что функция обратного вызова PFN_CERT_CREATE_CONTEXT_SORT_FUNC вернула значение FALSE для остановки сортировки.

Требования

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

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

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

Функции обслуживания хранилища сертификатов и сертификатов