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


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

Функция CertAddCTLContextToStore добавляет контекст списка доверия сертификатов (CTL) в хранилище сертификатов.

Синтаксис

BOOL CertAddCTLContextToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            PCCTL_CONTEXT pCtlContext,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCTL_CONTEXT *ppStoreContext
);

Параметры

[in] hCertStore

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

[in] pCtlContext

Указатель на структуру CTL_CONTEXT , добавляемую в хранилище.

[in] dwAddDisposition

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

Значение Значение
CERT_STORE_ADD_ALWAYS
Не проверка для существующего соответствующего CTL или ссылки на соответствующий CTL. Новый CTL всегда добавляется в хранилище. Это может привести к дублированию в магазине.
CERT_STORE_ADD_NEW
Если соответствующий CTL или ссылка на соответствующий CTL существует, операция завершается сбоем. GetLastError возвращает код CRYPT_E_EXISTS.
CERT_STORE_ADD_NEWER
Если соответствующий 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_INHERIT_PROPERTIES
Действие такое же, как и для CERT_STORE_ADD_NEWER, за исключением того, что при замене старого CTL свойства старого CTL включаются в замещающий CTL.
CERT_STORE_ADD_REPLACE_EXISTING
Если соответствующий CTL или ссылка на соответствующий CTL существует, существующий CTL или ссылка удаляются, а новый CTL создается и добавляется в хранилище. Если соответствующий CTL или ссылка на соответствующий CTL не существует, он добавляется.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Если соответствующий CTL существует в хранилище, этот существующий контекст удаляется перед созданием и добавлением нового контекста. Добавленный контекст наследует свойства от существующего CTL.
CERT_STORE_ADD_USE_EXISTING
Если соответствующий CTL или ссылка на соответствующий CTL существует, используется существующий CTL и добавляются свойства из нового CTL. Функция не завершается сбоем, но новый CTL не добавляется. Если ppCertContext не имеет значение NULL, существующий контекст дублируется.

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

[out, optional] ppStoreContext

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

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

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

Если функция завершается сбоем, возвращается значение FALSE. В эту функцию можно распространить ошибки из вызываемых функций CertAddEncodedCRLToStore и CertSetCRLContextProperty .

Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError. Ниже приведены некоторые возможные коды ошибок.

Код возврата Описание
CRYPT_E_EXISTS
Эта ошибка возвращается, если задано CERT_STORE_ADD_NEW и CTL существует в хранилище или если задано CERT_STORE_ADD_NEWER и CTL существует в хранилище с датой ThisUpdate больше или равна дате ThisUpdate в добавляемом CTL.
E_INVALIDARG
Недопустимая диспозиция добавлена с помощью параметра dwAddDisposition .

Комментарии

Контекст CTL не дублируется с помощью CertDuplicateCTLContext. Вместо этого создается новая копия, которая добавляется в хранилище. Помимо закодированного CTL, копируются свойства контекста.

Чтобы удалить контекст CTL из хранилища сертификатов, используйте функцию CertDeleteCTLFromStore .

Требования

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

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

CertAddEncodedCTLToStore

CertSetCTLContextProperty

Функции списка доверия сертификатов