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

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

Функция CertAddEncodedCertificateToStore также создает копию закодированного сертификата перед добавлением сертификата в хранилище.

Синтаксис

BOOL CertAddEncodedCertificateToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            DWORD          dwCertEncodingType,
  [in]            const BYTE     *pbCertEncoded,
  [in]            DWORD          cbCertEncoded,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppCertContext
);

Параметры

[in] hCertStore

Дескриптор хранилища сертификатов.

[in] dwCertEncodingType

Указывает тип используемой кодировки. Всегда допустимо указывать типы кодирования сертификатов и сообщений, объединяя их с побитовой операцией ИЛИ , как показано в следующем примере:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING в настоящее время определены следующие типы кодирования:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCertEncoded

Указатель на буфер, содержащий закодированный сертификат, который должен быть добавлен в хранилище сертификатов.

[in] cbCertEncoded

Размер буфера pbCertEncoded (в байтах).

[in] dwAddDisposition

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

Значение Значение
CERT_STORE_ADD_ALWAYS
Функция не проверка для существующего соответствующего сертификата или ссылки на соответствующий сертификат. Новый сертификат всегда добавляется в хранилище. Это может привести к дублированию в хранилище.
CERT_STORE_ADD_NEW
Если соответствующий сертификат или ссылка на соответствующий сертификат существует в хранилище, операция завершается ошибкой. GetLastError возвращает код CRYPT_E_EXISTS.
CERT_STORE_ADD_REPLACE_EXISTING
Если соответствующий сертификат или ссылка на соответствующий сертификат существует в хранилище, существующий сертификат или ссылка удаляются, а новый сертификат создается и добавляется в хранилище. Если соответствующий сертификат или ссылка на соответствующий сертификат не существует, создается и добавляется в хранилище новый сертификат.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Если соответствующий сертификат существует в хранилище, существующий контекст удаляется перед созданием и добавлением нового контекста. Новый контекст наследует свойства от существующего сертификата.
CERT_STORE_ADD_USE_EXISTING
Если соответствующий сертификат или ссылка на соответствующий сертификат существует, используется существующий сертификат или ссылка и добавляются свойства из нового сертификата. Функция не завершается ошибкой, но не добавляет новый контекст. Если ppCertContext не равно NULL, существующий контекст дублируется.

Если соответствующий сертификат или ссылка на соответствующий сертификат не существует, добавляется новый сертификат.

[out, optional] ppCertContext

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

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

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

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

Код возврата Описание
CRYPT_E_EXISTS
Этот код возвращается, если CERT_STORE_ADD_NEW задано и сертификат уже существует в хранилище, или если CERT_STORE_ADD_NEWER задан и в хранилище есть сертификат с датой NotBefore , больше или равной дате NotBefore в добавляемом сертификате.
E_INVALIDARG
Недопустимое значение перед ликвидацией было указано в параметре dwAddDisposition или указан недопустимый тип кодирования сертификата. В настоящее время поддерживается только тип X509_ASN_ENCODING.
 

Если функция завершается сбоем, GetLastError возвращает ошибку кодирования и декодирования абстрактной синтаксической нотации 1 (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.

Требования

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

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

CertAddCertificateContextToStore

CertFreeCertificateContext

Функции сертификата