Криптографические функции
Функции шифрования классифицируются в соответствии с использованием следующим образом:
- Функции CryptXML
- Функции подписывателя
- Базовые функции шифрования
- Функции хранилища сертификатов и сертификатов
- Функции MakeCert
- Функции проверки сертификатов
- Функции сообщений
- Вспомогательные функции
- Функции резервного копирования и восстановления служб сертификатов
- Функции обратного вызова
- Функции определения каталога
- Функции работы с каталогами
- Функции WinTrust
- Функции указателя объектов
Функции CryptXML
Криптографические XML-функции предоставляют API для создания и представления цифровых подписей с помощью xml-форматированных данных. Сведения о xml-форматированных сигнатурах см. в спецификации синтаксиса и обработки XML-Signature по адресу https://go.microsoft.com/fwlink/p/?linkid=139649.
Функция | Описание: |
---|---|
A_SHAFinal | Вычисляет окончательный хэш данных, введенных функцией MD5Update. |
A_SHAInit | Инициирует хэширование потока данных. |
A_SHAUpdate | Добавляет данные в указанный хэш-объект. |
CryptXmlCreateReference | Создает ссылку на XML-сигнатуру. |
CryptXmlAddObject | Добавляет элемент Object в сигнатуру в контексте документа, открытом для кодирования. |
CryptXmlClose | Закрывает дескриптор криптографического XML-объекта. |
CryptXmlDigestReference | Используется приложением для дайджеста разрешенной ссылки. Эта функция применяет преобразования перед обновлением дайджеста. |
CryptXmlDllCloseDigest | Освобождает CRYPT_XML_DIGEST, выделяемую функцией CryptXmlDllCreateDigest . |
CryptXmlDllCreateDigest | Создает дайджест-объект для указанного метода. |
CryptXmlDllCreateKey | Анализирует элемент KeyValue и создает API шифрования: дескриптор ключа BCrypt следующего поколения (CNG) для проверки подписи. |
CryptXmlDllDigestData | Помещает данные в дайджест. |
CryptXmlDllEncodeAlgorithm | Кодирует элементы SignatureMethod или DigestMethod для гибких алгоритмов с параметрами по умолчанию. |
CryptXmlDllEncodeKeyValue | Кодирует элемент KeyValue . |
CryptXmlDllFinalizeDigest | Извлекает значение дайджеста. |
CryptXmlDllGetAlgorithmInfo | Декодирует алгоритм XML и возвращает сведения об этом алгоритме. |
CryptXmlDllGetInterface | Извлекает указатель на функции криптографического расширения для указанного алгоритма. |
CryptXmlDllSignData | Подписывает данные. |
CryptXmlDllVerifySignature | Проверяет подпись. |
CryptXmlEncode | Кодирует данные подписи с помощью предоставленной функции обратного вызова модуля записи XML. |
CryptXmlGetAlgorithmInfo | Декодирует структуру CRYPT_XML_ALGORITHM и возвращает сведения об алгоритме. |
CryptXmlGetDocContext | Возвращает контекст документа, заданный предоставленным дескриптором. |
CryptXmlGetReference | Возвращает элемент Reference , заданный предоставленным дескриптором. |
CryptXmlGetSignature | Возвращает элемент сигнатуры XML. |
CryptXmlGetStatus | Возвращает CRYPT_XML_STATUS структуру, содержащую сведения о состоянии объекта, указанного заданным дескриптором. |
CryptXmlGetTransforms | Возвращает сведения о подсистеме цепочки преобразований по умолчанию. |
CryptXmlImportPublicKey | Импортирует открытый ключ, заданный предоставленным дескриптором. |
CryptXmlOpenToEncode | Открывает цифровую подпись XML для кодирования и возвращает дескриптор открытого элемента Signature . Дескриптор инкапсулирует контекст документа с одной структурой CRYPT_XML_SIGNATURE и остается открытым до вызова функции CryptXmlClose . |
CryptXmlOpenToDecode | Открывает цифровую подпись XML для декодирования и возвращает дескриптор контекста документа, инкапсулирующего структуру CRYPT_XML_SIGNATURE . Контекст документа может содержать один или несколько элементов Signature . |
CryptXmlSetHMACSecret | Задает секрет HMAC для дескриптора перед вызовом функции CryptXmlSign или CryptXmlVerify . |
CryptXmlSign | Создает криптографическую подпись элемента SignedInfo . |
CryptXmlVerifySignature | Выполняет проверку криптографической подписи элемента SignedInfo . |
PFN_CRYPT_XML_WRITE_CALLBACK | Создает преобразование для указанного поставщика данных. |
PFN_CRYPT_XML_CREATE_TRANSFORM | Записывает криптографические XML-данные. |
PFN_CRYPT_XML_DATA_PROVIDER_READ | Считывает криптографические XML-данные. |
PFN_CRYPT_XML_DATA_PROVIDER_CLOSE | Освобождает поставщик данных КРИПТОГРАФИЧЕСКОГО XML. |
PFN_CRYPT_XML_ENUM_ALG_INFO | Перечисляет предопределенные и зарегистрированные CRYPT_XML_ALGORITHM_INFO записи. |
Функции подписывания
Предоставляет функции для подписывания и метки времени.
Функция | Описание: |
---|---|
SignerFreeSignerContext | Освобождает структуру SIGNER_CONTEXT , выделенную предыдущим вызовом функции SignerSignEx . |
SignError | Вызывает функцию GetLastError и преобразует код возврата в HRESULT. |
SignerSign | Подписывает указанный файл. |
SignerSignEx | Подписывает указанный файл и возвращает указатель на подписанные данные. |
SignerSignEx2 | Знаки и метки времени указывают указанный файл, что позволяет использовать несколько вложенных сигнатур. |
SignerTimeStamp | Метки времени, указанные субъекты. Эта функция поддерживает метку времени Authenticode. Чтобы выполнить метку времени X.509 Public Key Infrastructure (RFC 3161), используйте функцию SignerTimeStampEx2 . |
SignerTimeStampEx | Метки времени указанной темы и при необходимости возвращает указатель на структуру SIGNER_CONTEXT , содержащую указатель на БОЛЬШОЙ ДВОИЧНЫй объект. Эта функция поддерживает метку времени Authenticode. Чтобы выполнить метку времени X.509 Public Key Infrastructure (RFC 3161), используйте функцию SignerTimeStampEx2 . |
SignerTimeStampEx2 | Метки времени указанной темы и при необходимости возвращает указатель на структуру SIGNER_CONTEXT , содержащую указатель на БОЛЬШОЙ ДВОИЧНЫй объект. Эту функцию можно использовать для выполнения инфраструктуры открытых ключей X.509, совместимой с RFC 3161, меток времени. |
SignerTimeStampEx3 | Метки времени указанной темы и поддерживают установку меток времени для нескольких подписей. |
Базовые функции шифрования
Базовые криптографические функции предоставляют наиболее гибкие средства разработки приложений шифрования. Весь обмен данными с поставщиком служб шифрования (CSP) осуществляется через эти функции.
CSP — это независимый модуль, выполняющий все криптографические операции. Для каждого приложения, использующего криптографические функции, требуется по крайней мере один CSP. Иногда одно приложение может использовать несколько поставщиков служб CSP.
Если используется несколько поставщиков служб CSP, его можно указать в вызовах криптографической функции CryptoAPI. Один поставщик CSP, поставщик шифрования Microsoft Base, объединяется с CryptoAPI. Этот поставщик CSP используется в качестве поставщика по умолчанию многими функциями CryptoAPI, если другой поставщик CSP не указан.
Каждая служба CSP предоставляет другую реализацию криптографической поддержки, предоставляемой CryptoAPI. Некоторые предоставляют более надежные алгоритмы шифрования; другие содержат аппаратные компоненты, такие как смарт-карты. Кроме того, некоторые поставщики облачных служб могут иногда взаимодействовать напрямую с пользователями, например, когда цифровые подписи выполняются с помощью закрытого ключа подписи пользователя.
Базовые криптографические функции находятся в следующих широких группах:
- Функции поставщика услуг
- Функции создания ключей и Exchange
- Функции кодирования и декодирования объектов
- Функции шифрования и расшифровки данных
- Функции хэш-и цифровой подписи
Функции поставщика услуг
Приложения используют следующие функции службы для подключения и отключения поставщика служб шифрования (CSP).
Функция | Описание: |
---|---|
CryptAcquireContext | [! Важно] Получает дескриптор для контейнера ключей текущего пользователя в определенном поставщике служб конфигурации. |
CryptContextAddRef | [! Важно] Увеличивает число ссылок на дескрипторHCRYPTPROV . |
CryptEnumProviders | [! Важно] Перечисляет поставщики на компьютере. |
CryptEnumProviderTypes | [! Важно] Перечисляет типы поставщиков, поддерживаемых на компьютере. |
CryptGetDefaultProvider | [! Важно] Определяет поставщик служб конфигурации по умолчанию для текущего пользователя или компьютера для указанного типа поставщика. |
CryptGetProvParam | [! Важно] Извлекает параметры, управляющие операциями CSP. |
CryptInstallDefaultContext | [! Важно] Устанавливает ранее полученный контекст HCRYPTPROV для использования в качестве контекста по умолчанию. |
CryptReleaseContext | [! Важно] Освобождает дескриптор, полученный функцией CryptAcquireContext . |
CryptSetProvider и CryptSetProviderEx | [! Важно] Указывает поставщик служб конфигурации по умолчанию пользователя для определенного типа CSP. |
CryptSetProvParam | [! Важно] Указывает атрибуты CSP. |
CryptUninstallDefaultContext | [! Важно] Удаляет контекст по умолчанию, установленный CryptInstallDefaultContext. |
FreeCryptProvFromCertEx | Освобождает дескриптор либо поставщику служб шифрования (CSP), либо в API шифрования: ключ следующего поколения (CNG). |
Функции создания ключей и Exchange
Функции создания ключей и обмена ими обмениваются ключами с другими пользователями и создают, настраивают и уничтожают криптографические ключи.
Функция | Описание: |
---|---|
CryptDeriveKey | [! Важно] Создает ключ, производный от пароля. |
CryptDekey | [! Важно] Уничтожает ключ. |
CryptDuplicateKey | [! Важно] Создает точную копию ключа, включая состояние ключа. |
CryptExportKey | [! Важно] Передает ключ из CSP в ключевой BLOB-объект в пространстве памяти приложения. |
CryptGenKey | [! Важно] Создает случайный ключ. |
CryptGenRandom | [! Важно] Создает случайные данные. |
CryptGetKeyParam | [! Важно] Извлекает параметры ключа. |
CryptGetUserKey | [! Важно] Получает дескриптор для ключа или ключа подписи. |
CryptImportKey | [! Важно] Передает ключ из ключевого BLOB-объекта в поставщик служб конфигурации. |
CryptSetKeyParam | [! Важно] Задает параметры ключа. |
Функции кодирования и декодирования объектов
Это обобщенные функции кодирования и декодирования. Они используются для кодирования и декодирования сертификатов, списков отзыва сертификатов (CCL), запросов сертификатов и расширений сертификатов.
Функция | Описание: |
---|---|
CryptDecodeObject | Декодирует структуру типа lpszStructType. |
CryptDecodeObjectEx | Декодирует структуру типа lpszStructType. CryptDecodeObjectEx поддерживает параметр выделения памяти одним проходом. |
CryptEncodeObject | Кодирует структуру типа lpszStructType. |
CryptEncodeObjectEx | Кодирует структуру типа lpszStructType. CryptEncodeObjectEx поддерживает параметр выделения памяти одним проходом. |
Функции шифрования и расшифровки данных
Следующие функции поддерживают операции шифрования и расшифровки. Перед вызовом шифрования CryptEncrypt и CryptDecrypt требуется криптографический ключ . Для этого используется функция CryptGenKey, CryptDeriveKey или CryptImportKey . Алгоритм шифрования указывается при создании ключа. CryptSetKeyParam может задавать дополнительные параметры шифрования.
Функция | Описание: |
---|---|
CryptDecrypt | [! Важно] Расшифровывает раздел шифра с помощью указанного ключа шифрования. |
CryptEncrypt | [! Важно] Шифрует раздел открытого текста с помощью указанного ключа шифрования. |
CryptProtectData | Выполняет шифрование данных в структуре DATA_BLOB . |
CryptProtectMemory | Шифрует память для защиты конфиденциальной информации. |
CryptUnprotectData | Выполняет расшифровку и проверку целостности данных в DATA_BLOB. |
CryptUnprotectMemory | Расшифровывает память, зашифрованную с помощью CryptProtectMemory. |
Функции хэш-и цифровой подписи
Эти функции вычисляют хэши данных, а также создают и проверяют цифровые подписи. Хэши также называются хэшами сообщений.
Функция | Описание: |
---|---|
CryptCreateHash | [! Важно] Создает пустой хэш-объект. |
CryptDecryptDecryptHash | [! Важно] Уничтожает хэш-объект. |
CryptDuplicateHash | Дублирует хэш-объект. |
CryptGetHashParam | Извлекает параметр хэш-объекта. |
CryptHashData | [! Важно] Хэширует блок данных, добавляя его в указанный хэш-объект. |
CryptHashSessionKey | [! Важно] Хэширует ключ сеанса, добавляя его в указанный хэш-объект. |
CryptSetHashParam | [! Важно] Задает параметр хэш-объекта. |
CryptSignHash | [! Важно] Подписывает указанный хэш-объект. |
CryptUIWizDigitalSign | Отображает мастер, который цифрово подписывает документ или BLOB-объект. |
CryptUIWizFreeDigitalSignContext | Освобождает указатель на структуру CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT . |
CryptVerifySignature | [! Важно] Проверяет цифровую подпись, учитывая дескриптор хэш-объекта. |
PFNCFILTERPROC | Фильтрует сертификаты, отображаемые в мастере цифровой подписи, отображаемые функцией CryptUIWizDigitalSign . |
Функции хранилища сертификатов и сертификатов
Функции хранилища сертификатов и сертификатов управляют использованием, хранением и извлечением сертификатов, списками отзыва сертификатов (CCL) и списками доверия сертификатов (CTLs). Эти функции делятся на следующие группы:
- Функции хранилища сертификатов
- Функции обслуживания хранилища сертификатов и сертификатов
- Функции сертификата
- Функции списка отзыва сертификатов
- Функции списка доверия сертификатов
- Расширенные функции свойств
- Функции MakeCert
Функции хранилища сертификатов
С течением времени сайт пользователя может собирать множество сертификатов. Как правило, сайт имеет сертификаты для пользователя сайта, а также другие сертификаты, описывающие этих лиц и сущностей, с которыми взаимодействует пользователь. Для каждой сущности может быть несколько сертификатов. Для каждого отдельного сертификата должна существовать цепочка проверки сертификатов, которые предоставляют конечный путь к доверенному корневому сертификату. Хранилища сертификатов и связанные с ними функции предоставляют функциональные возможности для хранения, извлечения, перечисления, проверки и использования сведений, хранящихся в сертификатах.
Функция | Описание: |
---|---|
CertAddStoreToCollection | Добавляет одноуровневое хранилище сертификатов в хранилище сертификатов коллекции. |
CertCloseStore | Закрывает дескриптор хранилища сертификатов. |
CertControlStore | Позволяет приложению получать уведомления, если существует разница между содержимым кэшированного хранилища и содержимым хранилища, сохраняемого в хранилище. Она также обеспечивает десинхронизацию кэшированного хранилища( при необходимости) и предоставляет средства фиксации изменений, внесенных в кэшированное хранилище в сохраненное хранилище. |
CertDuplicateStore | Дублирует дескриптор хранилища путем увеличения количества ссылок. |
CertEnumPhysicalStore | Перечисляет физические хранилища для указанного системного хранилища. |
CertEnumSystemStore | Перечисляет все доступные системные хранилища. |
CertEnumSystemStoreLocation | Перечисляет все расположения с доступным системным хранилищем. |
CertGetStoreProperty | Возвращает свойство хранилища. |
CertOpenStore | Открывает хранилище сертификатов с использованием указанного типа поставщика хранилища. |
CertOpenSystemStore | Открывает системное хранилище сертификатов на основе протокола подсистемы. |
CertRegisterPhysicalStore | Добавляет физическое хранилище в коллекцию системного хранилища реестра. |
CertRegisterSystemStore | Регистрирует системное хранилище. |
CertRemoveStoreFromCollection | Удаляет одноуровневое хранилище сертификатов из хранилища коллекций. |
CertSaveStore | Сохраняет хранилище сертификатов. |
CertSetStoreProperty | Задает свойство магазина. |
CertUnregisterPhysicalStore | Удаляет физическое хранилище из указанной коллекции системного хранилища. |
CertUnregisterSystemStore | Отменяет регистрацию указанного системного хранилища. |
CryptUIWizExport | Представляет мастер, который экспортирует сертификат, список доверия сертификатов (CTL), список отзыва сертификатов (CRL) или хранилище сертификатов. |
CryptUIWizImport | Представляет мастер, который импортирует сертификат, список доверия сертификатов (CTL), список отзыва сертификатов (CRL) или хранилище сертификатов. |
Функции обслуживания хранилища сертификатов и сертификатов
CryptoAPI предоставляет набор общих функций обслуживания сертификата и хранилища сертификатов.
Функция | Описание: |
---|---|
CertAddSerializedElementToStore | Добавляет сериализованный сертификат или элемент CRL в хранилище. |
CertCreateContext | Создает указанный контекст из закодированных байтов. Новый контекст не помещается в хранилище. |
CertEnumSubjectInSortedCTL | Перечисляет TrustedSubjects в отсортированный контекст CTL. |
CertFindSubjectInCTL | Находит указанную тему в CTL. |
CertFindSubjectInSortedCTL | Находит указанный субъект в отсортированного CTL. |
OpenPersonalTrustDBDialog и OpenPersonalTrustDBDialogEx | Отображает диалоговое окно "Сертификаты ". |
Функции сертификата
Большинство функций сертификатов имеют связанные функции для обработки списков отзыва сертификатов и списков CCL. Дополнительные сведения о связанных функциях списка отзыва сертификатов и списка отзыва сертификатов см. в разделе "Функции списка отзыва сертификатов" и "Функции списка доверия сертификатов".
Функция | Описание: |
---|---|
CertAddCertificateContextToStore | Добавляет контекст сертификата в хранилище сертификатов. |
CertAddCertificateLinkToStore | Добавляет ссылку в хранилище сертификатов в контекст сертификата в другом хранилище. |
CertAddEncodedCertificateToStore | Преобразует закодированный сертификат в контекст сертификата, а затем добавляет контекст в хранилище сертификатов. |
CertAddRefServerOcspResponse | Увеличивает число ссылок для дескриптора HCERT_SERVER_OCSP_RESPONSE . |
CertAddRefServerOcspResponseContext | Увеличивает число ссылок для структуры CERT_SERVER_OCSP_RESPONSE_CONTEXT . |
CertCloseServerOcspResponse | Закрывает дескриптор ответа сервера состояния сертификата в сети (OCSP). |
CertCreateCertificateContext | Создает контекст сертификата из закодированного сертификата. Созданный контекст не помещается в хранилище сертификатов. |
CertCreateSelfSignCertificate | создает самозаверяющий сертификат; |
CertDeleteCertificateFromStore | Удаляет сертификат из хранилища сертификатов. |
CertDuplicateCertificateContext | Дублирует контекст сертификата путем увеличения числа ссылок. |
CertEnumCertificatesInStore | Перечисляет контексты сертификатов в хранилище сертификатов. |
CertFindCertificateInStore | Находит первый или следующий контекст сертификата в хранилище сертификатов, который соответствует критерию поиска. |
CertFreeCertificateContext | Освобождает контекст сертификата. |
CertGetIssuerCertificateFromStore | Возвращает контекст сертификата из хранилища сертификатов для первого или следующего издателя указанного сертификата субъекта. |
CertGetServerOcspResponseContext | Извлекает неблокирующий контекст ответа протокола OCSP для указанного дескриптора. |
CertGetSubjectCertificateFromStore | Возвращает из хранилища сертификатов контекст сертификата субъекта, который однозначно определяется издателем и серийным номером. |
CertGetValidUsages | Возвращает массив использования, состоящий из пересечения допустимых значений использования для всех сертификатов в массиве сертификатов. |
CertOpenServerOcspResponse | Открывает дескриптор ответа протокола OCSP, связанного с цепочкой сертификатов сервера. |
CertRetrieveLogoOrBiometricInfo | Выполняет получение URL-адреса логотипа или биометрической информации, указанной в расширении сертификата szOID_LOGOTYPE_EXT или szOID_BIOMETRIC_EXT . |
CertSelectCertificate | Представляет диалоговое окно, позволяющее пользователю выбирать сертификаты из набора сертификатов, которые соответствуют заданным критериям. |
CertSelectCertificateChains | Извлекает цепочки сертификатов на основе указанных критериев выбора. |
CertSelectionGetSerializedBlob | Вспомогательная функция, используемая для получения сериализованного BLOB-объекта сертификата из структуры CERT_SELECTUI_INPUT . |
CertSerializeCertificateStoreElement | Сериализует закодированный сертификат контекста сертификата и закодированное представление его свойств. |
CertVerifySubjectCertificateContext | Выполняет включенные проверки сертификата субъекта с помощью издателя. |
CryptUIDlgCertMgr | Отображает диалоговое окно, позволяющее пользователю управлять сертификатами. |
CryptUIDlgSelectCertificate | Отображает диалоговое окно, позволяющее пользователю выбрать сертификат. |
CryptUIDlgSelectCertificateFromStore | Отображает диалоговое окно, позволяющее выбрать сертификат из указанного хранилища. |
CryptUIDlgViewCertificate | Представляет диалоговое окно, в котором отображается указанный сертификат. |
CryptUIDlgViewContext | Отображает сертификат, список отзыва сертификатов или список отзыва сертификатов. |
CryptUIDlgViewSignerInfo | Отображает диалоговое окно, содержащее сведения о подписывшем сообщении. |
GetFriendlyNameOfCert | Извлекает отображаемое имя сертификата. |
RKeyCloseKeyService | Закрывает дескриптор службы ключей. |
RKeyOpenKeyService | Открывает дескриптор службы ключей на удаленном компьютере. |
RKeyPFXInstall | Устанавливает сертификат на удаленном компьютере. |
Функции списка отзыва сертификатов
Эти функции управляют хранением и извлечением списков отзыва сертификатов (CCL).
Функция | Описание: |
---|---|
CertAddCRLContextToStore | Добавляет контекст списка отзыва сертификатов в хранилище сертификатов. |
CertAddCRLLinkToStore | Добавляет ссылку в хранилище в контекст списка отзыва сертификатов в другом хранилище. |
CertAddEncodedCRLToStore | Преобразует закодированный список отзыва сертификатов в контекст списка отзыва сертификатов, а затем добавляет контекст в хранилище сертификатов. |
CertCreateCRLContext | Создает контекст списка отзыва сертификатов из закодированного списка отзыва сертификатов. Созданный контекст не помещается в хранилище сертификатов. |
CertDeleteCRLFromStore | Удаляет список отзыва сертификатов из хранилища сертификатов. |
CertDuplicateCRLContext | Дублирует контекст списка отзыва сертификатов путем увеличения количества ссылок. |
CertEnumCRLsInStore | Перечисляет контексты списка отзыва сертификатов в хранилище. |
CertFindCertificateInCRL | Выполняет поиск указанного сертификата в списке отзыва сертификатов (CRL). |
CertFindCRLInStore | Находит первый или следующий контекст списка отзыва сертификатов в хранилище сертификатов, соответствующий конкретному критерию. |
CertFreeCRLContext | Освобождает контекст списка отзыва сертификатов. |
CertGetCRLFromStore | Возвращает первый или следующий контекст списка отзыва сертификатов из хранилища сертификатов для указанного сертификата издателя. |
CertSerializeCRLStoreElement | Сериализует закодированный CRL контекста CRL и его свойства. |
Функции списка доверия сертификатов
Эти функции управляют хранением и извлечением списков доверия сертификатов (CTL).
Функция | Описание: |
---|---|
CertAddCTLContextToStore | Добавляет контекст CTL в хранилище сертификатов. |
CertAddCTLLinkToStore | Добавляет ссылку в хранилище в контекст списка отзыва сертификатов в другом хранилище. |
CertAddEncodedCTLToStore | Преобразует закодированный список CTL в контекст CTL, а затем добавляет контекст в хранилище сертификатов. |
CertCreateCTLContext | Создает контекст CTL из закодированного списка доверия сертификатов. Созданный контекст не помещается в хранилище сертификатов. |
CertDeleteCTLFromStore | Удаляет CTL из хранилища сертификатов. |
CertDuplicateCTLContext | Дублирует контекст CTL путем увеличения количества ссылок. |
CertEnumCTLsInStore | Перечисляет контексты CTL в хранилище сертификатов. |
CertFindCTLInStore | Находит первый или следующий контекст CTL в хранилище сертификатов, соответствующий определенным критериям. |
CertFreeCTLContext | Освобождает контекст CTL. |
CertModifyCertificatesToTrust | Изменяет набор сертификатов в CTL для заданной цели. |
CertSerializeCTLStoreElement | Сериализует кодированный CTL контекста CTL и его свойства. |
Расширенные функции свойств
Следующие функции работают с расширенными свойствами сертификатов, списков отзыва сертификатов и списков сертификатов.
Функция | Описание: |
---|---|
CertEnumCertificateContextProperties | Перечисляет свойства для указанного контекста сертификата. |
CertEnumCRLContextProperties | Перечисляет свойства для указанного контекста списка отзыва сертификатов. |
CertEnumCTLContextProperties | Перечисляет свойства для указанного контекста CTL. |
CertGetCertificateContextProperty | Извлекает свойства сертификата. |
CertGetCRLContextProperty | Извлекает свойства списка отзыва сертификатов. |
CertGetCTLContextProperty | Извлекает свойства CTL. |
CertSetCertificateContextProperty | Задает свойства сертификата. |
CertSetCRLContextProperty | Задает свойства списка отзыва сертификатов. |
CertSetCTLContextProperty | Задает свойства CTL. |
Функции MakeCert
Следующие функции поддерживают средство MakeCert .
Функция | Описание: |
---|---|
FreeCryptProvFromCert | Освобождает дескриптор поставщику служб шифрования (CSP) и при необходимости удаляет временный контейнер, созданный функцией GetCryptProvFromCert . |
GetCryptProvFromCert | Возвращает дескриптор CSP и спецификацию ключа для контекста сертификата. |
PvkFreeCryptProv | Освобождает дескриптор CSP и при необходимости удаляет временный контейнер, созданный функцией PvkGetCryptProv . |
PvkGetCryptProv | Возвращает дескриптор CSP на основе имени файла закрытого ключа или имени контейнера ключей. |
PvkPrivateKeyAcquireContextFromMemory | Создает временный контейнер в CSP и загружает закрытый ключ из памяти в контейнер. |
PvkPrivateKeySave | Сохраняет закрытый ключ и соответствующий открытый ключ в указанный файл. |
SignError | Вызывает GetLastError и преобразует код возврата в HRESULT. |
Функции проверки сертификатов
Сертификаты проверяются с помощью списков сертификатов или цепочек сертификатов. Функции предоставляются для обоих из них:
- Функции проверки с помощью списков сертификатов
- Функции проверки цепочки сертификатов
Функции проверки с помощью списков сертификатов
Эти функции используют списки ctls в процессе проверки. Дополнительные функции для работы с списками сертификатов можно найти в функциях списка доверия сертификатов и расширенных функциях свойств.
Следующие функции используют CCL непосредственно для проверки.
Функция | Описание: |
---|---|
CertVerifyCTLUsage | Проверяет использование CTL. |
CryptMsgEncodeAndSignCTL | Кодирует и подписывает CTL в виде сообщения. |
CryptMsgGetAndVerifySigner | Извлекает и проверяет список CTL из сообщения. |
CryptMsgSignCTL | Подписывает сообщение, содержащее CTL. |
Функции проверки цепочки сертификатов
Цепочки сертификатов создаются для предоставления сведений о доверии отдельных сертификатов.
Имя функции | Описание |
---|---|
CertCreateCertificateChainEngine | Создает для приложения новый подсистему неразделяемой цепочки. |
CertCreateCTLEntryFromCertificateContextProperties | Создает запись CTL, атрибуты которой являются свойствами контекста сертификата. |
CertDuplicateCertificateChain | Дублирует цепочку сертификатов путем увеличения количества ссылок цепочки и возврата указателя на цепочку. |
CertFindChainStore | Находит первый или следующий контекст цепочки сертификатов в хранилище. |
CertFreeCertificateChain | Освобождает цепочку сертификатов, уменьшая количество ссылок. |
CertFreeCertificateChainEngine | Освобождает подсистему цепочки сертификатов без защиты. |
CertFreeCertificateChainList | Освобождает массив указателей к контекстам цепочки. |
CertGetCertificateChain | Создает контекст цепочки, начиная с конечного сертификата, и возвращается к доверенному корневому сертификату, если это возможно. |
CertIsValidCRLForCertificate | Проверяет список отзыва сертификатов, чтобы определить, будет ли он включать определенный сертификат, если этот сертификат был отозван. |
CertSetCertificateContextPropertiesFromCTLEntry | Задает свойства контекста сертификата с помощью атрибутов в записи CTL. |
CertVerifyCertificateChainPolicy | Проверяет цепочку сертификатов, чтобы проверить его допустимость, включая соответствие любым указанным критериям политики допустимости. |
Функции сообщений
Функции сообщений CryptoAPI состоят из двух групп функций: низкоуровневых функций сообщений и упрощенных функций сообщений.
Низкоуровневые функции сообщений создают и работают непосредственно с сообщениями PKCS #7. Эти функции кодируют данные PKCS #7 для передачи и декодирования полученных данных PKCS #7. Они также расшифровывают и проверяют подписи полученных сообщений. Общие сведения о стандартных и низкоуровневых сообщениях PKCS #7 см. в разделе "Сообщения низкого уровня".
Упрощенные функции сообщений находятся на более высоком уровне и переносят несколько низкоуровневых функций сообщений и функций сертификатов в отдельные функции, которые выполняют определенную задачу определенным образом. Эти функции сокращают количество вызовов функций, необходимых для выполнения задачи, тем самым упрощая использование CryptoAPI. Общие сведения об упрощенных сообщениях см. в разделе "Упрощенные сообщения".
- Низкоуровневые функции сообщений
- Упрощенные функции сообщений
Низкоуровневые функции сообщений
Функции низкоуровневых сообщений предоставляют функции, необходимые для кодирования данных для передачи и декодирования полученных сообщений PKCS #7. Функции также предоставляются для расшифровки и проверки подписей полученных сообщений. Использование этих низкоуровневых функций сообщений в большинстве приложений не рекомендуется. Для большинства приложений рекомендуется использовать упрощенные функции сообщений, которые переносят несколько низкоуровневых функций сообщений в один вызов функции.
Функция | Описание: |
---|---|
CryptMsgCalculateEncodedLength | Вычисляет длину зашифрованного криптографического сообщения. |
CryptMsgClose | Закрывает дескриптор криптографического сообщения. |
CryptMsgControl | Выполняет специальную функцию управления после окончательного CryptMsgUpdate зашифрованного или декодированного криптографического сообщения. |
CryptMsgCountersign | Счетчики подписи уже существующей подписи в сообщении. |
CryptMsgCountersignEncoded | Счетчики уже существующей сигнатуры (закодированные SignerInfo, как определено PKCS #7). |
CryptMsgDuplicate | Дублирует дескриптор криптографического сообщения путем увеличения количества ссылок. Счетчик ссылок отслеживает время существования сообщения. |
CryptMsgGetParam | Получает параметр после кодирования или декодирования криптографического сообщения. |
CryptMsgOpenToDecode | Открывает криптографическое сообщение для декодирования. |
CryptMsgOpenToEncode | Открывает криптографическое сообщение для кодирования. |
CryptMsgUpdate | Обновляет содержимое криптографического сообщения. |
CryptMsgVerifyCountersignatureEncoded | Проверяет контрназначение с точки зрения структуры SignerInfo (как определено PKCS #7). |
CryptMsgVerifyCountersignatureEncodedEx | Проверяет, содержит ли параметр pbSignerInfoCounterSignature зашифрованный хэшзашифрованного поля encryptedDigest структуры параметров pbSignerInfo . |
Упрощенные функции сообщений
упрощенные функции сообщений переносить функции сообщений низкого уровня в одну функцию для выполнения указанной задачи.
Функция | Описание: |
---|---|
CryptDecodeMessage | Декодирует криптографическое сообщение. |
CryptDecryptAndVerifyMessageSignature | Расшифровывает указанное сообщение и проверяет подписыватель. |
CryptDecryptMessage | Расшифровывает указанное сообщение. |
CryptEncryptMessage | Шифрует сообщение для получателя или получателей. |
CryptGetMessageCertificates | Возвращает хранилище сертификатов , содержащее сертификаты и списки отзыва сертификатов. |
CryptGetMessageSignerCount | Возвращает количество подписывателей в подписанном сообщении. |
CryptHashMessage | Создает хэш сообщения. |
CryptSignAndEncryptMessage | Подписывает сообщение, а затем шифрует его для получателя или получателя. |
CryptSignMessageWithKey | Подписывает сообщение с помощью закрытого ключа CSP, указанного в параметрах функции. |
CryptSignMessage | Подписывает сообщение. |
CryptVerifyDetachedMessageHash | Проверяет хэшированное сообщение, содержащее отсоединяемый хэш. |
CryptVerifyDetachedMessageSignature | Проверяет подписанное сообщение, содержащее отсоединяемую подпись или подписи. |
CryptVerifyMessageHash | Проверяет хэшированные сообщения. |
CryptVerifyMessageSignature | Проверяет подписанное сообщение. |
CryptVerifyMessageSignatureWithKey | Проверяет подпись подписанного сообщения с помощью указанной информации открытого ключа. |
Вспомогательные функции
Вспомогательные функции группируются следующим образом:
- Функции Управление данными
- Функции преобразования данных
- Расширенные функции использования ключей
- Функции идентификатора ключа
- Функции поддержки OID
- Функции извлечения удаленных объектов
- Функции PFX
Функции Управление данными
Следующие функции CryptoAPI управляют данными и сертификатами.
Функция | Описание: |
---|---|
CertCompareCertificate | Сравнивает два сертификата, чтобы определить, совпадают ли они. |
CertCompareCertificateName | Сравнивает два имени сертификатов, чтобы определить, совпадают ли они. |
CertCompareIntegerBlob | Сравнивает два целочисленных БОЛЬШИХ двоичных объекта. |
CertComparePublicKeyInfo | Сравнивает два открытых ключа , чтобы определить, совпадают ли они. |
CertFindAttribute | Находит первый атрибут, идентифицируемый идентификатором объекта (OID). |
CertFindExtension | Находит первое расширение, определяемое его идентификатором OID. |
CertFindRDNAttr | Находит первый атрибут RDN , определенный его OID в списке имен относительных различающихся имен. |
CertGetIntendedKeyUsage | Получает требуемые байты использования ключа из сертификата. |
CertGetPublicKeyLength | Получает длину бита открытого и закрытого ключа из БОЛЬШОго двоичного объекта открытого ключа. |
CertIsRDNAttrsInCertificateName | Сравнивает атрибуты в имени сертификата с указанным CERT_RDN , чтобы определить, включены ли все атрибуты. |
CertIsStrongHashToSign | Определяет, можно ли использовать указанный хэш-алгоритм и открытый ключ в сертификате подписи для выполнения строгой подписи. |
CertVerifyCRLRevocation | Проверяет, что сертификат субъекта отсутствует в списке отзыва сертификатов (CRL). |
CertVerifyCRLTimeValidity | Проверяет срок действия списка отзыва сертификатов. |
CertVerifyRevocation | Проверяет, что сертификат субъекта отсутствует в списке отзыва сертификатов. |
CertVerifyTimeValidity | Проверяет срок действия сертификата. |
CertVerifyValidityNesting | Проверяет, вложен ли срок действия субъекта в срок действия издателя. |
CryptExportPKCS8 | Эта функция заменена функцией CryptExportPKCS8Ex . |
CryptExportPKCS8Ex | Экспорт закрытого ключа в формате PKCS #8. |
CryptExportPublicKeyInfo | Экспортирует сведения об открытом ключе, связанные с соответствующим закрытым ключом поставщика. |
CryptExportPublicKeyInfoEx | Экспортирует сведения об открытом ключе, связанные с соответствующим закрытым ключом поставщика. Эта функция отличается от CryptExportPublicKeyInfo в том, что пользователь может указать алгоритм открытого ключа, тем самым переопределяя значение по умолчанию, предоставленное поставщиком служб конфигурации. |
CryptExportPublicKeyInfoFromBCryptKeyHandle | Экспортирует сведения об открытом ключе, связанные с соответствующим закрытым ключом поставщика. |
CryptFindCertificateKeyProvInfo | Перечисляет поставщиков шифрования и их контейнеры ключей , чтобы найти закрытый ключ, соответствующий открытому ключу сертификата. |
CryptFindLocalizedName | Находит локализованное имя для указанного имени, например, находит локализованное имя для имени хранилища корневой системы. |
CryptHashCertificate | [! Важно] Хэширует закодированное содержимое. |
CryptHashCertificate2 | Хэширует блок данных с помощью API шифрования: поставщик хэша следующего поколения (CNG). |
CryptHashPublicKeyInfo | [! Важно] Вычисляет хэш сведений о закодированном открытом ключе. |
CryptHashToBeSigned | [! Важно] Вычисляет хэш "подписываемых" данных в закодированном подписанном содержимом (CERT_SIGNED_CONTENT_INFO). |
CryptImportPKCS8 | [! Важно] Импортирует закрытый ключ в формате PKCS 8 в поставщик служб шифрования (CSP). |
CryptImportPublicKeyInfo | [! Важно] Преобразует и импортирует сведения об открытом ключе в поставщик и возвращает дескриптор открытого ключа. |
CryptImportPublicKeyInfoEx | [! Важно] Преобразует и импортирует сведения об открытом ключе в поставщик и возвращает дескриптор открытого ключа. Дополнительные параметры (над параметрами, заданными параметром CryptImportPublicKeyInfo), которые можно использовать для переопределения значений по умолчанию, предоставляются для дополнения CERT_PUBLIC_KEY_INFO. |
CryptImportPublicKeyInfoEx2 | Импортирует открытый ключ в асимметричный поставщик CNG. |
CryptMemAlloc | Выделяет память для буфера. Эта память используется всеми функциями Crypt32.lib, возвращающими выделенные буферы. |
CryptMemFree | Освобождает память, выделенную CryptMemAlloc или CryptMemRealloc. |
CryptMemRealloc | Освобождает память, выделенную в настоящее время для буфера, и выделяет память для нового буфера. |
CryptQueryObject | [! Важно] Извлекает сведения о содержимом BLOB-объекта или файла. |
CryptSignAndEncodeCertificate | Кодирует сведения о подписании, подписывает эти закодированные данные и кодирует полученные подписанные, закодированные сведения. |
CryptSignCertificate | Подписывает сведения "подписываться" в закодированном подписанном содержимом. |
CryptSIPAddProvider | Добавляет пакет интерфейса субъекта (SIP). |
CryptSIPCreateIndirectData | Возвращает SIP_INDIRECT_DATA структуру, содержащую хэш предоставленной SIP_SUBJECTINFO структуры, алгоритм дайджеста и атрибут кодировки. Хэш можно использовать в качестве косвенной ссылки на данные. |
CryptSIPGetCaps | Извлекает возможности SIP. |
CryptSIPGetSignedDataMsg | Извлекает сигнатуру Authenticode из файла. |
CryptSIPLoad | Загружает библиотеку динамической компоновки, реализующую пакет интерфейса субъекта, и назначает соответствующие функции экспорта библиотеки структуре SIP_DISPATCH_INFO . |
CryptSIPPutSignedDataMsg | Сохраняет подпись Authenticode в целевом файле. |
CryptSIPRemoveProvider | Удаляет SIP, добавленный предыдущим вызовом функции CryptSIPAddProvider . |
CryptSIPRemoveSignedDataMsg | Удаляет указанную сигнатуру Authenticode. |
CryptSIPRetrieveSubjectGuid | Извлекает GUID на основе сведений заголовка в указанном файле. |
CryptSIPRetrieveSubjectGuidForCatalogFile | Извлекает GUID субъекта, связанный с указанным файлом. |
CryptSIPVerifyIndirectData | Проверяет непрямые хэшированные данные по указанному субъекту. |
CryptUpdateProtectedState | Переносит главные ключи текущего пользователя после изменения идентификатора безопасности (SID). |
CryptVerifyCertificateSignature | Проверяет подпись сертификата субъекта или списка отзыва сертификатов с помощью сведений об открытом ключе. |
CryptVerifyCertificateSignatureEx | Расширенная версия CryptVerifyCertificateSignature. |
GetEncSChannel | Хранит зашифрованное содержимое библиотеки DLL Schannel в памяти. |
pCryptSIPGetCaps | Реализуется SIP для создания отчетов о возможностях. |
Функции преобразования данных
Следующие функции CryptoAPI преобразуют элементы структуры сертификатов в различные формы.
Функция | Описание: |
---|---|
CertAlgIdToOID | Преобразует идентификатор алгоритма CryptoAPI (ALG_ID) в строку идентификатора объекта (OID) абстрактного нотации синтаксиса (ASN.1). |
CertGetNameString | Получает имя субъекта или издателя из сертификата и преобразует его в строку символов, завершаемую null. |
CertNameToStr | Преобразует большой двоичный объект имени сертификата в строку, завершаемую нулевым завершением. |
CertOIDToAlgId | Преобразует строку идентификатора объекта ASN.1 в идентификатор алгоритма CSP. |
CertRDNValueToStr | Преобразует значение имени в строку, завершаемую значением NULL. |
CertStrToName | Преобразует строку x.500 , завершаемую null, в закодированное имя сертификата. |
CryptBinaryToString | Преобразует двоичную последовательность в форматированную строку. |
CryptFormatObject | Форматирует закодированные данные и возвращает строку Юникода. |
CryptStringToBinary | Преобразует форматированную строку в двоичную последовательность. |
Расширенные функции использования ключей
Следующие функции занимаются расширением расширенного использования ключа (EKU) и расширенным свойством EKU сертификатов. Расширение EKU и расширенное свойство указывают и ограничивают допустимое использование сертификата. Расширения являются частью самого сертификата. Они задаются издателем сертификата и доступны только для чтения. Расширенные свойства сертификата — это значения, связанные с сертификатом, который можно задать в приложении.
Функция | Описание: |
---|---|
CertAddEnhancedKeyUsageIdentifier | Добавляет идентификатор использования в свойство EKU сертификата. |
CertGetEnhancedKeyUsage | Получает сведения о расширении или свойстве EKU из сертификата. |
CertRemoveEnhancedKeyUsageIdentifier | Удаляет идентификатор использования из расширенного свойства EKU сертификата. |
CertSetEnhancedKeyUsage | Задает свойство EKU для сертификата. |
Функции идентификатора ключа
Функции идентификаторов ключей позволяют пользователю создавать, задавать, извлекать или находить идентификатор ключа или его свойства.
Идентификатор ключа — это уникальный идентификатор пары открытого и закрытого ключей. Это может быть любой уникальный идентификатор, но обычно это хэш SHA1 в 20 байтах закодированной CERT_PUBLIC_KEY_INFO структуры. Идентификатор ключа можно получить с помощью CERT_KEY_IDENTIFIER_PROP_ID сертификата. Идентификатор ключа позволяет использовать такую пару ключей для шифрования или расшифровки сообщений без использования сертификата.
Идентификаторы ключей не связаны с списками отзыва сертификатов или списками сертификатов.
Идентификатор ключа может иметь те же свойства, что и контекст сертификата. Дополнительные сведения см. в разделе CertCreateContext.
Функция | Описание: |
---|---|
CryptCreateKeyIdentifierFromCSP | [! Важно] Создает идентификатор ключа из большого двоичного объекта открытого ключа CSP. |
CryptEnumKeyIdentifierProperties | Перечисляет идентификаторы ключей и их свойства. |
CryptGetKeyIdentifierProperty | [! Важно] Получает определенное свойство из указанного идентификатора ключа. |
CryptSetKeyIdentifierProperty | [! Важно] Задает свойство заданного идентификатора ключа. |
Функции поддержки OID
Эти функции обеспечивают поддержку идентификатора объекта (OID). Эти функции устанавливают, регистрируют и отправляются в функции OID и кодирования, относящиеся к типу.
Следующие функции CryptoAPI используют следующие функции поддержки OID:
- CryptEncodeObject
- CryptEncodeObjectEx
- CryptDecodeObject
- CryptDecodeObjectEx
- CertVerifyRevocation
- CertOpenStore
Общие сведения об этом процессе см. в разделе "Расширение функциональных возможностей CryptoAPI".
Следующие функции работают с OID.
Функция | Описание: |
---|---|
CryptEnumOIDFunction | Перечисляет зарегистрированные функции OID, определяемые их типом кодирования, именем функции и OID. |
CryptEnumOIDInfo | Перечисляет зарегистрированные сведения об OID, определяемые группой, и вызывает pfnEnumOIDInfo для совпадений. |
CryptFindOIDInfo | Использует указанный ключ и группу для поиска сведений об OID. |
CryptFreeOIDFunctionAddress | Освобождает число дескрипторов, которое было добавлено и возвращено CryptGetOIDFunctionAddress или CryptGetDefaultOIDFunctionAddress. |
CryptGetDefaultOIDDllList | Получает список зарегистрированных записей DLL по умолчанию для указанного набора функций и типа кодирования. |
CryptGetDefaultOIDFunctionAddress | Получает первую или следующую установленную функцию по умолчанию или загружает библиотеку DLL, содержащую функцию по умолчанию. |
CryptGetOIDFunctionAddress | Выполняет поиск в списке установленных функций для типа кодирования и соответствия OID. Если совпадение не найдено, реестр ищет совпадение. |
CryptGetOIDFunctionValue | Получает значение для указанного типа кодирования, имени функции, OID и имени значения. |
CryptInitOIDFunctionSet | Инициализирует и возвращает дескриптор набора функций OID, определяемого указанным именем функции. |
CryptInstallOIDFunctionAddress | Устанавливает набор вызываемых адресов функций OID. |
CryptRegisterDefaultOIDFunction | Регистрирует библиотеку DLL, содержащую функцию по умолчанию, вызываемую для указанного типа кодирования и имени функции. |
CryptRegisterOIDFunction | Регистрирует библиотеку DLL, содержащую функцию, вызываемую для указанного типа кодирования, имени функции и OID. |
CryptRegisterOIDInfo | Регистрирует сведения об OID, указанные в структуре CRYPT_OID_INFO , сохраняя их в реестре. |
CryptSetOIDFunctionValue | Задает значение для указанного типа кодирования, имени функции, OID и имени значения. |
CryptUnregisterDefaultOIDFunction | Удаляет регистрацию библиотеки DLL, содержащей функцию по умолчанию, вызываемую для указанного типа кодирования и имени функции. |
CryptUnregisterOIDFunction | Удаляет регистрацию библиотеки DLL, содержащей функцию, вызываемую для указанного типа кодирования, имени функции и OID. |
CryptUnregisterOIDInfo | Удаляет регистрацию для указанных сведений об OID. |
Функции извлечения удаленных объектов
Следующие функции позволяют пользователю получить объект инфраструктуры открытых ключей (PKI), получить URL-адрес сертификата, CTL или CRL или извлечь URL-адрес из объекта.
Функция | Описание: |
---|---|
CryptGetObjectUrl | Получает URL-адрес удаленного объекта из сертификата, списка отзыва сертификатов или списка отзыва сертификатов. |
CryptRetrieveObjectByUrl | Извлекает объект PKI из расположения, заданного URL-адресом. |
Функции PFX
Следующие функции поддерживают большие двоичные объекты Exchange персональных данных (PFX).
Функция | Описание: |
---|---|
PFXExportCertStore | Экспортирует из упоминаемого сертификата хранилище сертификатов и, если они доступны, связанные с ними закрытые ключи. |
PFXExportCertStoreEx | Экспортирует из упоминаемого сертификата хранилище сертификатов и, если они доступны, связанные с ними закрытые ключи. |
PFXImportCertStore | Импортирует BLOB-объект PFX и возвращает дескриптор хранилища, содержащего сертификаты и все связанные закрытые ключи. |
PFXIsPFXBlob | Пытается декодировать внешний слой BLOB в виде пакета PFX. |
PFXVerifyPassword | Пытается декодировать внешний слой BLOB в виде пакета PFX и расшифровать его с заданным паролем. |
Функции резервного копирования и восстановления служб сертификатов
Службы сертификатов включают функции для резервного копирования и восстановления базы данных служб сертификатов. Эти функции резервного копирования и восстановления служб сертификатов содержатся в Certadm.dll. В отличие от других элементов API, связанных со службами сертификатов, эти функции не инкапсулируются в объект, который можно использовать для вызова методов класса. Вместо этого API резервного копирования и восстановления вызываются путем загрузки библиотеки Certadm.dll в память путем вызова LoadLibrary , а затем определения адреса функций путем вызова GetProcAddress. Завершив вызов функций резервного копирования и восстановления служб сертификатов, вызовите FreeLibrary для освобождения Certadm.dll ресурсов из памяти.
Примечание
Функции резервного копирования и восстановления, предоставляемые Certadm.dll, не выполняют резервное копирование или восстановление закрытых ключей службы сертификатов. Сведения о резервном копировании закрытых ключей служб сертификатов см. в разделе "Резервное копирование и восстановление закрытого ключа служб сертификатов".
Чтобы вызвать функции резервного копирования и восстановления, необходимо иметь права резервного копирования и восстановления. Дополнительные сведения см. в разделе "Настройка привилегий резервного копирования и восстановления".
Примечание
Если coInitializeEx ранее вызывался в том же потоке, который использовался для вызова API резервного копирования и восстановления служб сертификатов, флаг COINIT_APARTMENTTHREADED должен быть передан в CoInitializeEx. То есть при использовании одного потока невозможно вызвать API резервного копирования и восстановления служб сертификатов, если поток ранее передал флаг COINIT_MULTITHREADED в вызове CoInitializeEx.
API резервного копирования служб сертификатов определяются в Certbcli.h. Однако при создании программы используйте Certsrv.h в качестве файла включения.
Следующие API экспортируются Certadm.dll.
Функция | Описание: |
---|---|
CertSrvBackupClose | Закрывает открытый файл. |
CertSrvBackupEnd | Завершает сеанс резервного копирования. |
CertSrvBackupFree | Освобождает буфер, выделенный API резервного копирования и восстановления. |
CertSrvBackupGetBackupLogs | Возвращает список файлов журнала, которые необходимо создать резервную копию. |
CertSrvBackupGetDatabaseNames | Возвращает список файлов базы данных, которые необходимо создать резервную копию. |
CertSrvBackupGetDynamicFileList | Извлекает список динамических имен файлов служб сертификатов, которые необходимо создать резервную копию для заданного контекста резервного копирования. |
CertSrvBackupOpenFile | Открывает файл в процессе подготовки к резервному копированию. |
CertSrvBackupPrepare | Подготавливает базу данных для оперативного резервного копирования. |
CertSrvBackupRead | Считывает содержимое открытого файла. |
CertSrvBackupTruncateLogs | Усечение файлов журнала. |
CertSrvIsServerOnline | Определяет, подключен ли сервер служб сертификатов (активно работает). |
CertSrvRestoreEnd | Завершает сеанс восстановления. |
CertSrvRestoreGetDatabaseLocations | Извлекает расположения базы данных (используется для сценариев резервного копирования и восстановления). |
CertSrvRestorePrepare | Начинает сеанс восстановления. |
CertSrvRestoreRegister | Регистрирует операцию восстановления. |
CertSrvRestoreRegisterComplete | Завершает ранее зарегистрированную операцию восстановления. |
CertSrvRestoreRegisterThroughFile | Регистрирует операцию восстановления. |
CertSrvServerControl | Отправляет команду управления в экземпляр служб сертификатов. |
Функции обратного вызова
Функции обратного вызова в этом разделе используются для регистрации или установки поставщиков хранилища сертификатов , определенных приложением, и для предоставления связанных функций с помощью функций обратного вызова. Функции обратного вызова реализуются приложением и вызываются функциями CryptoAPI . Функции обратного вызова позволяют приложению управлять данными, отчасти так, как функции CryptoAPI управляют данными.
Функция обратного вызова | Использование |
---|---|
CertChainFindByIssuerCallback | Определяемая приложением функция обратного вызова, которая позволяет приложению фильтровать сертификаты, которые могут быть добавлены в цепочку сертификатов. |
CertDllOpenStoreProv | Определяет функцию открытия поставщика магазина. |
CertEnumPhysicalStoreCallback | Функция обратного вызова, используемая функцией CertEnumPhysicalStore для форматирования и представления сведений о каждом физическом хранилище. |
CertEnumSystemStoreCallback | Функция обратного вызова, используемая функцией CertEnumSystemStore для форматирования и представления сведений о каждом физическом хранилище. |
CertEnumSystemStoreLocationCallback | Функция обратного вызова, используемая функцией CertEnumSystemStoreLocation для форматирования и представления сведений о каждом физическом хранилище. |
CertStoreProvCloseCallback | Определяет, что происходит, когда число ссылок открытого хранилища становится нулевым. |
CertStoreProvControl | Позволяет приложению получать уведомления при наличии разницы между содержимым кэшированного хранилища и содержимым этого хранилища по мере сохранения в хранилище. |
CertStoreProvDeleteCertCallback | Определяет действия, выполняемые перед удалением сертификата из хранилища сертификатов. |
CertStoreProvDeleteCRLCallback | Определяет действия, выполняемые перед удалением списка отзыва сертификатов (CRL) из хранилища сертификатов. |
CertStoreProvDeleteCTL | Определяет, можно ли удалить CTL. |
CertStoreProvFindCert | Находит первый или следующий сертификат в хранилище, которое соответствует указанным критериям. |
CertStoreProvFindCRL | Находит первый или следующий список отзыва сертификатов в хранилище, которое соответствует указанным критериям. |
CertStoreProvFindCTL | Находит первый или следующий CTL в хранилище, которое соответствует указанным критериям. |
CertStoreProvFreeFindCert | Освобождает ранее найденный контекст сертификата. |
CertStoreProvFreeFindCRL | Освобождает ранее найденный контекст списка отзыва сертификатов. |
CertStoreProvFreeFindCTL | Освобождает ранее найденный контекст CTL. |
CertStoreProvGetCertProperty | Извлекает указанное свойство сертификата. |
CertStoreProvGetCRLProperty | Извлекает указанное свойство списка отзыва сертификатов. |
CertStoreProvGetCTLProperty | Извлекает указанное свойство CTL. |
CertStoreProvReadCertCallback | В настоящее время не используется, но может быть экспортирован в будущие поставщики служб конфигурации. |
CertStoreProvReadCRLCallback | В настоящее время не используется, но может быть экспортирован в будущие поставщики служб конфигурации. |
CertStoreProvReadCTL | Считывает копию контекста CTL поставщика и, если она существует, создайте новый контекст CTL. |
CertStoreProvSetCertPropertyCallback | Определяет действия, выполняемые перед вызовом CertSetCertificateContextProperty или CertGetCertificateContextProperty. |
CertStoreProvSetCRLPropertyCallback | Определяет действия, выполняемые перед вызовом CertSetCRLContextProperty или CertGetCRLContextProperty. |
CertStoreProvSetCTLProperty | Определяет, можно ли задать свойство для CTL. |
CertStoreProvWriteCertCallback | Определяет действия, которые необходимо предпринять перед добавлением сертификата в хранилище. |
CertStoreProvWriteCRLCallback | Определяет действия, которые необходимо предпринять перед добавлением списка отзыва сертификатов в хранилище. |
CertStoreProvWriteCTL | Определяет, можно ли добавить CTL в хранилище. |
CRYPT_ENUM_KEYID_PROP | Функция обратного вызова, используемая функцией CryptEnumKeyIdentifierProperties . |
CRYPT_ENUM_OID_FUNCTION | Функция обратного вызова, используемая функцией CryptEnumOIDFunction . |
CRYPT_ENUM_OID_INFO | Функция обратного вызова, используемая функцией CryptEnumOIDInfo . |
CryptGetSignerCertificateCallback | Функция обратного вызова, используемая со структурой CRYPT_VERIFY_MESSAGE_PARA для получения и проверки сертификата подписывющего сообщения. |
PCRYPT_DECRYPT_PRIVATE_KEY_FUNC | Функция обратного вызова, используемая функцией CryptImportPKCS8 . |
PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC | Функция обратного вызова, используемая при создании структуры CRYPT_ENCRYPTED_PRIVATE_KEY_INFO . |
PCRYPT_RESOLVE_HCRYPTPROV_FUNC | Функция обратного вызова, используемая функцией CryptImportPKCS8 . |
PFN_CDF_PARSE_ERROR_CALLBACK | Определяемая пользователем функция, вызываемая для ошибок функции определения каталога при анализе файла определения каталога (CDF). |
PFN_CERT_CREATE_CONTEXT_SORT_FUNC | Вызывается для каждой отсортированной записи контекста при создании контекста. |
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY | Устанавливаемая функция идентификатора объекта CNG для импорта уже расшифрованного ключа шифрования содержимого (CEK). |
PFN_CMSG_CNG_IMPORT_KEY_AGREE | Импортирует ключ шифрования содержимого для получателя транспорта ключа конвертированного сообщения. |
PFN_CMSG_CNG_IMPORT_KEY_TRANS | Устанавливаемая функция CNG OID для импорта и расшифровки ключа-транспортного получателя, зашифрованного ключа шифрования содержимого (CEK). |
PFN_CMSG_EXPORT_KEY_AGREE | Шифрует и экспортирует ключ шифрования содержимого для получателя соглашения о ключе конвертированного сообщения. |
PFN_CMSG_EXPORT_KEY_TRANS | Шифрует и экспортирует ключ шифрования содержимого для получателя транспорта ключа конвертированного сообщения. |
PFN_CMSG_EXPORT_MAIL_LIST | Шифрует и экспортирует ключ шифрования содержимого для получателя списка рассылки конвертированного сообщения. |
PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY | Создает симметричный ключ , используемый для шифрования содержимого для конвертированного сообщения. |
PFN_CMSG_IMPORT_KEY_AGREE | Импортирует ключ шифрования содержимого для получателя транспорта ключа конвертированного сообщения. |
PFN_CMSG_IMPORT_KEY_TRANS | Импортирует ключ шифрования содержимого для получателя транспорта ключа конвертированного сообщения. |
PFN_CMSG_IMPORT_MAIL_LIST | Импортирует ключ шифрования содержимого для получателя транспорта ключа конвертированного сообщения. |
PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC | Вызывается CryptExportPublicKeyInfoEx для экспорта большого двоичного объекта открытого ключа и его кодирования. |
PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC | Вызывается для декодирования и возврата идентификатора хэш-алгоритма и при необходимости параметров сигнатуры. |
PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC | Вызывается для подписывания и кодирования вычисляемого хэша. |
PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC | Вызывается для расшифровки закодированной подписи и сравнения ее с вычисленным хэшом. |
PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC | Вызывается CryptImportPublicKeyInfoEx2 для декодирования идентификатора алгоритма открытого ключа , загрузки поставщика алгоритма и импорта пары ключей. |
PFNCCERTDISPLAYPROC | Определяемая пользователем функция обратного вызова, которая позволяет вызывающей функции CryptUIDlgSelectCertificate обрабатывать отображение сертификатов, которые пользователь выбирает для просмотра. |
PFNCMFILTERPROC | Фильтрует каждый сертификат, чтобы определить, будет ли он отображаться в диалоговом окне выбора сертификата, отображаемом функцией CertSelectCertificate . |
PFNCMHOOKPROC | Вызывается перед обработкой сообщений диалоговым окном выбора сертификата, созданным функцией CertSelectCertificate . |
Функции определения каталога
Эти функции используются для создания каталога. Все эти функции вызываются MakeCat.
Функция | Описание: |
---|---|
CryptCATCDFClose | Закрывает файл определения каталога и освобождает память для соответствующей структуры CRYPTCATCDF . |
CryptCATCDFEnumAttributesWithCDFTag | Перечисляет атрибуты файлов-членов в разделе CatalogFiles CDF. |
CryptCATCDFEnumCatAttributes | Перечисляет атрибуты уровня каталога в разделе CatalogHeader CDF. |
CryptCATCDFEnumMembersByCDFTagEx | Перечисляет отдельные члены файлов в разделе CatalogFiles CDF. |
CryptCATCDFOpen | Открывает существующий CDF для чтения и инициализации структуры CRYPTCATCDF . |
Функции работы с каталогами
Эти функции используются для управления каталогом.
Функция | Описание: |
---|---|
CryptCATAdminAcquireContext | Получает дескриптор в контексте администратора каталога. Этот дескриптор можно использовать при последующих вызовах функций CryptCATAdminAddCatalog, CryptCATAdminEnumCatalogFromHash и CryptCATAdminRemoveCatalog . |
CryptCATAdminAcquireContext2 | Получает дескриптор контекста администратора каталога для заданного хэш-алгоритма и политики хэширования. |
CryptCATAdminAddCatalog | Добавляет каталог в базу данных каталога. |
CryptCATAdminCalcHashFromFileHandle | Вычисляет хэш для файла. |
CryptCATAdminCalcHashFromFileHandle2 | Вычисляет хэш для файла с помощью указанного алгоритма. |
CryptCATAdminEnumCatalogFromHash | Перечисляет каталоги, содержащие указанный хэш. |
CryptCATAdminReleaseCatalogContext | Освобождает дескриптор контекста каталога, ранее возвращенного функцией CryptCATAdminAddCatalog . |
CryptCATAdminReleaseContext | Освобождает дескриптор, ранее назначенный функцией CryptCATAdminAcquireContext . |
CryptCATAdminRemoveCatalog | Удаляет файл каталога и удаляет запись этого каталога из базы данных каталога Windows. |
CryptCATAdminResolveCatalogPath | Извлекает полный путь указанного каталога. |
CryptCATCatalogInfoFromContext | Извлекает сведения каталога из указанного контекста каталога. |
CryptCATClose | Закрывает дескриптор каталога, открытый ранее функцией CryptCATOpen . |
CryptCATEnumerateAttr | Перечисляет атрибуты, связанные с членом каталога. |
CryptCATEnumerateCatAttr | Перечисляет атрибуты, связанные с каталогом. |
CryptCATEnumerateMember | Перечисляет элементы каталога. |
CryptCATGetAttrInfo | Извлекает сведения об атрибуте члена каталога. |
CryptCATGetMemberInfo | Извлекает сведения о членах из PKCS #7 каталога. Помимо получения сведений об элементе для указанного ссылочного тега, эта функция открывает контекст элемента. |
CryptCATOpen | Открывает каталог и возвращает дескриптор контекста в открытый каталог. |
IsCatalogFile | Извлекает логическое значение, указывающее, является ли указанный файл файлом каталога. |
Функции WinTrust
Для выполнения различных операций доверия используются следующие функции.
Функция | Описание: |
---|---|
WintrustAddActionID | Добавляет действие поставщика доверия в систему пользователя. |
WintrustGetRegPolicyFlags | Извлекает флаги политики для поставщика политик. |
WintrustAddDefaultForUsage | Указывает идентификатор использования по умолчанию и сведения о обратном вызове для поставщика. |
WintrustGetDefaultForUsage | Извлекает идентификатор использования по умолчанию и сведения о обратном вызове. |
WintrustLoadFunctionPointers | Загружает точки входа функции для указанного GUID действия. |
WintrustRemoveActionID | Удаляет действие, добавленное функцией WintrustAddActionID . |
WintrustSetDefaultIncludePEPageHashes | Задает параметр по умолчанию, определяющий, включаются ли хэши страниц при создании непрямых данных пакета интерфейса субъекта (SIP) для переносимых исполняемых файлов. |
WintrustSetRegPolicyFlags | Задает флаги политики для поставщика политик. |
WinVerifyTrust | Выполняет действие проверки доверия для указанного объекта. |
WinVerifyTrustEx | Выполняет действие проверки доверия для указанного объекта и принимает указатель на структуру WINTRUST_DATA. |
WTHelperCertCheckValidSignature | Проверяет, является ли подпись допустимой. |
WTHelperCertFindIssuerCertificate | Находит сертификат издателя из указанных хранилищ сертификатов, соответствующих указанному сертификату субъекта. |
WTHelperCertIsSelfSigned | Проверяет, является ли сертификат самозаверяющий. |
WTHelperGetFileHash | Проверяет подпись подписанного файла и получает хэш-значение и идентификатор алгоритма для файла. |
WTHelperGetProvCertFromChain | Извлекает сертификат поставщика доверия из цепочки сертификатов. |
WTHelperGetProvPrivateDataFromChain | Получает CRYPT_PROVIDER_PRIVDATA структуру из цепочки с помощью идентификатора поставщика. |
WTHelperGetProvSignerFromChain | Извлекает подписыватель или счетчик по индексу из цепочки. |
WTHelperProvDataFromStateData | Извлекает сведения о поставщике доверия из указанного дескриптора. |
Функции указателя объектов
Следующие функции обратного вызова могут быть реализованы пользовательским поставщиком, который должен вызываться пакетом безопасности Secure Channel (Schannel) для получения сертификатов.
Функция | Описание: |
---|---|
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH | Указывает, что объект изменился. |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET | Извлекает объект. |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE | Освобождает поставщик. |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD | Освобождает пароль, используемый для шифрования массива байтов PFX. |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE | Освобождает объект, возвращенный поставщиком. |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER | Освобождает память для идентификатора объекта. |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE | Инициализирует этот поставщик. |