Функция CertAddEncodedCTLToStore (wincrypt.h)
Функция CertAddEncodedCTLToStore создает контекстсписка доверия сертификатов (CTL) из закодированного CTL и добавляет его в хранилище сертификатов. Перед добавлением в хранилище функция создает копию контекста CTL.
Синтаксис
BOOL CertAddEncodedCTLToStore(
[in] HCERTSTORE hCertStore,
[in] DWORD dwMsgAndCertEncodingType,
[in] const BYTE *pbCtlEncoded,
[in] DWORD cbCtlEncoded,
[in] DWORD dwAddDisposition,
[out, optional] PCCTL_CONTEXT *ppCtlContext
);
Параметры
[in] hCertStore
Дескриптор хранилища сертификатов.
[in] dwMsgAndCertEncodingType
Указывает тип используемой кодировки. Типы кодирования сертификатов и сообщений должны быть указаны путем объединения их с побитовой операцией ИЛИ, как показано в следующем примере:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
В настоящее время определены следующие типы кодирования:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pbCtlEncoded
Указатель на буфер, содержащий закодированный CTL, добавляемый в хранилище сертификатов.
[in] cbCtlEncoded
Размер буфера pbCtlEncoded (в байтах ).
[in] dwAddDisposition
Указывает действие, которое необходимо выполнить, если соответствующий CTL или ссылка на соответствующий CTL уже существует в хранилище. В настоящее время определенные значения ликвидации и их использование приведены ниже.
Значение | Значение |
---|---|
|
Не проверка для существующего соответствующего CTL или ссылки на соответствующий CTL. Новый CTL всегда добавляется в хранилище. Это может привести к дублированию в магазине. |
|
Если соответствующий CTL или ссылка на соответствующий CTL существует, операция завершается сбоем. GetLastError возвращает код CRYPT_E_EXISTS. |
|
Если соответствующий CTL или ссылка на соответствующий CTL существует, время ThisUpdate в списках CTL сравнивается. Если существующий CTL имеет время ThisUpdate меньше времени ThisUpdate в новом CTL, старый CTL или ссылка заменяется так же, как и CERT_STORE_ADD_REPLACE_EXISTING. Если у существующего CTL время ThisUpdate больше или равно времени ThisUpdate для добавляемого CTL, функция завершается ошибкой, при этом GetLastError возвращает код CRYPT_E_EXISTS.
Если соответствующий CTL или ссылка на соответствующий CTL не найден в магазине, в хранилище добавляется новый CTL. |
|
Действие такое же, как и для CERT_STORE_ADD_NEWER, за исключением того, что при замене старого CTL свойства старого CTL включаются в замещающий CTL. |
|
Если соответствующий CTL или ссылка на соответствующий CTL существует, существующий CTL или ссылка удаляются, а новый CTL создается и добавляется в хранилище. Если соответствующий CTL или ссылка на соответствующий CTL не существует, он добавляется. |
|
Если соответствующий CTL существует в хранилище, этот существующий контекст удаляется перед созданием и добавлением нового контекста. Добавленный контекст наследует свойства от существующего CTL. |
|
Если соответствующий CTL или ссылка на соответствующий CTL существует, используется существующий CTL и добавляются свойства из нового CTL. Функция не завершается сбоем, но новый CTL не добавляется. Если ppCertContext не имеет значение NULL, существующий контекст дублируется.
Если соответствующий CTL или ссылка на соответствующий CTL не существует, добавляется новый CTL. |
[out, optional] ppCtlContext
Указатель на указатель на декодированную структуру CTL_CONTEXT . Может иметь значение NULL , указывающее, что вызывающему приложению не требуется копия добавленного или существующего CTL. Если копия сделана, ее необходимо освободить с помощью CertFreeCTLContext.
Возвращаемое значение
Если функция выполняется успешно, возвращается значение TRUE.
Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.
Ниже приведены некоторые возможные коды ошибок.
Код возврата | Описание |
---|---|
|
CERT_STORE_ADD_NEW задано, и CTL уже существует в хранилище; или CERT_STORE_ADD_NEWER задано, и в хранилище есть CTL со временем ThisUpdate , превышающим или равным времени ThisUpdate для добавляемого CTL. |
|
Недопустимое значение перед ликвидации было указано в параметре dwAddDisposition или указан недопустимый тип кодирования. В настоящее время поддерживаются только типы кодировки X509_ASN_ENCODING и PKCS_7_ASN_ENCODING. |
В случае сбоя функции GetLastError может вернуть ошибку кодирования и декодирования абстрактного синтаксиса (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |