Функция CertAddCertificateContextToStore (wincrypt.h)
Функция CertAddCertificateContextToStore добавляет контекст сертификата в хранилище сертификатов.
Синтаксис
BOOL CertAddCertificateContextToStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pCertContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCERT_CONTEXT *ppStoreContext
);
Параметры
[in] hCertStore
Дескриптор хранилища сертификатов.
[in] pCertContext
Указатель на структуру CERT_CONTEXT , добавляемую в хранилище.
[in] dwAddDisposition
Указывает действие, которое необходимо выполнить, если соответствующий сертификат или ссылка на соответствующий сертификат уже существует в хранилище. В настоящее время определены значения ликвидации и их использование следующим образом.
Значение | Значение |
---|---|
|
Функция не проверка для существующего соответствующего сертификата или ссылки на соответствующий сертификат. В хранилище всегда добавляется новый сертификат. Это может привести к дублированию в магазине. |
|
Если соответствующий сертификат или ссылка на соответствующий сертификат существует, операция завершается сбоем. GetLastError возвращает код CRYPT_E_EXISTS. |
|
Если соответствующий сертификат или ссылка на соответствующий сертификат существует, а время NotBefore существующего контекста равно или больше времени NotBefore для добавления нового контекста, операция завершается сбоем и GetLastError возвращает код CRYPT_E_EXISTS.
Если время NotBefore существующего контекста меньше времени NotBefore для добавления нового контекста, существующий сертификат или ссылка удаляется, а новый сертификат создается и добавляется в хранилище. Если соответствующий сертификат или ссылка на соответствующий сертификат не существует, добавляется новая ссылка. При сравнении списков отзыва сертификатов (CRL) или списка доверия сертификатов используется время ThisUpdate. |
|
Если соответствующий сертификат или ссылка на соответствующий сертификат существует, а время NotBefore существующего контекста равно или больше времени NotBefore для добавления нового контекста, операция завершается сбоем и GetLastError возвращает код CRYPT_E_EXISTS.
Если время NotBefore существующего контекста меньше времени NotBefore для добавления нового контекста, существующий контекст удаляется перед созданием и добавлением нового контекста. Новый добавленный контекст наследует свойства от существующего сертификата. При сравнении CCL или CCL используется время ThisUpdate. |
|
Если ссылка на соответствующий сертификат существует, существующий сертификат или ссылка удаляется, а новый сертификат создается и добавляется в хранилище. Если соответствующий сертификат или ссылка на соответствующий сертификат не существует, добавляется новая ссылка. |
|
Если соответствующий сертификат существует в хранилище, существующий контекст не заменяется. Существующий контекст наследует свойства от нового сертификата. |
|
Если соответствующий сертификат или ссылка на соответствующий сертификат существует, используется существующий сертификат или ссылка и добавляются свойства из нового сертификата. Функция не завершается сбоем, но не добавляет новый контекст. Если значение pCertContext не равно NULL, существующий контекст дублируется.
Если соответствующий сертификат или ссылка на соответствующий сертификат не существует, добавляется новый сертификат. |
[out, optional] ppStoreContext
Указатель на указатель на копию сертификата, добавленного в хранилище.
Параметр ppStoreContext может иметь значение NULL, указывая, что вызывающей приложению не требуется копия добавленного сертификата. Если копия сделана, ее необходимо освободить с помощью CertFreeCertificateContext.
Возвращаемое значение
Если функция выполняется успешно, возвращается значение TRUE.
Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError. Ниже приведены некоторые возможные коды ошибок.
Код возврата | Описание |
---|---|
|
Это значение возвращается, если задано CERT_STORE_ADD_NEW и сертификат уже существует в хранилище или если задано CERT_STORE_ADD_NEWER и сертификат существует в хранилище с датой NotBefore , большей или равной даты NotBefore в добавляемом сертификате. |
|
Недопустимое значение ликвидации было указано в параметре dwAddDisposition . |
В эту функцию можно распространить ошибки из вызываемых функций CertAddEncodedCertificateToStore и CertSetCertificateContextProperty.
Комментарии
Контекст сертификата не дублируется с помощью CertDuplicateCertificateContext. Вместо этого функция создает новую копию контекста и добавляет ее в хранилище.
Помимо закодированного сертификата , CertDuplicateCertificateContext также копирует свойства контекста, за исключением свойств CERT_KEY_PROV_HANDLE_PROP_ID и CERT_KEY_CONTEXT_PROP_ID.
Чтобы удалить контекст сертификата из хранилища сертификатов, используйте функцию CertDeleteCertificateFromStore .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |
См. также раздел
CertAddEncodedCertificateToStore