Криптографические функции

Функции шифрования классифицируются в соответствии с использованием следующим образом:

Функции 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
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Получает дескриптор для контейнера ключей текущего пользователя в определенном поставщике служб конфигурации.
CryptContextAddRef
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Увеличивает число ссылок на дескрипторHCRYPTPROV .
CryptEnumProviders
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Перечисляет поставщики на компьютере.
CryptEnumProviderTypes
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Перечисляет типы поставщиков, поддерживаемых на компьютере.
CryptGetDefaultProvider
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Определяет поставщик служб конфигурации по умолчанию для текущего пользователя или компьютера для указанного типа поставщика.
CryptGetProvParam
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Извлекает параметры, управляющие операциями CSP.
CryptInstallDefaultContext
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Устанавливает ранее полученный контекст HCRYPTPROV для использования в качестве контекста по умолчанию.
CryptReleaseContext
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Освобождает дескриптор, полученный функцией CryptAcquireContext .
CryptSetProvider и CryptSetProviderEx
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Указывает поставщик служб конфигурации по умолчанию пользователя для определенного типа CSP.
CryptSetProvParam
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Указывает атрибуты CSP.
CryptUninstallDefaultContext
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Удаляет контекст по умолчанию, установленный CryptInstallDefaultContext.
FreeCryptProvFromCertEx Освобождает дескриптор либо поставщику служб шифрования (CSP), либо в API шифрования: ключ следующего поколения (CNG).

 

Функции создания ключей и Exchange

Функции создания ключей и обмена ими обмениваются ключами с другими пользователями и создают, настраивают и уничтожают криптографические ключи.

Функция Описание:
CryptDeriveKey
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Создает ключ, производный от пароля.
CryptDekey
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Уничтожает ключ.
CryptDuplicateKey
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Создает точную копию ключа, включая состояние ключа.
CryptExportKey
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Передает ключ из CSP в ключевой BLOB-объект в пространстве памяти приложения.
CryptGenKey
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Создает случайный ключ.
CryptGenRandom
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Создает случайные данные.
CryptGetKeyParam
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Извлекает параметры ключа.
CryptGetUserKey
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Получает дескриптор для ключа или ключа подписи.
CryptImportKey
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Передает ключ из ключевого BLOB-объекта в поставщик служб конфигурации.
CryptSetKeyParam
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Задает параметры ключа.

 

Функции кодирования и декодирования объектов

Это обобщенные функции кодирования и декодирования. Они используются для кодирования и декодирования сертификатов, списков отзыва сертификатов (CCL), запросов сертификатов и расширений сертификатов.

Функция Описание:
CryptDecodeObject Декодирует структуру типа lpszStructType.
CryptDecodeObjectEx Декодирует структуру типа lpszStructType. CryptDecodeObjectEx поддерживает параметр выделения памяти одним проходом.
CryptEncodeObject Кодирует структуру типа lpszStructType.
CryptEncodeObjectEx Кодирует структуру типа lpszStructType. CryptEncodeObjectEx поддерживает параметр выделения памяти одним проходом.

 

Функции шифрования и расшифровки данных

Следующие функции поддерживают операции шифрования и расшифровки. Перед вызовом шифрования CryptEncrypt и CryptDecrypt требуется криптографический ключ . Для этого используется функция CryptGenKey, CryptDeriveKey или CryptImportKey . Алгоритм шифрования указывается при создании ключа. CryptSetKeyParam может задавать дополнительные параметры шифрования.

Функция Описание:
CryptDecrypt
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Расшифровывает раздел шифра с помощью указанного ключа шифрования.
CryptEncrypt
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Шифрует раздел открытого текста с помощью указанного ключа шифрования.
CryptProtectData Выполняет шифрование данных в структуре DATA_BLOB .
CryptProtectMemory Шифрует память для защиты конфиденциальной информации.
CryptUnprotectData Выполняет расшифровку и проверку целостности данных в DATA_BLOB.
CryptUnprotectMemory Расшифровывает память, зашифрованную с помощью CryptProtectMemory.

 

Функции хэш-и цифровой подписи

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

Функция Описание:
CryptCreateHash
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Создает пустой хэш-объект.
CryptDecryptDecryptHash
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Уничтожает хэш-объект.
CryptDuplicateHash Дублирует хэш-объект.
CryptGetHashParam Извлекает параметр хэш-объекта.
CryptHashData
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Хэширует блок данных, добавляя его в указанный хэш-объект.
CryptHashSessionKey
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Хэширует ключ сеанса, добавляя его в указанный хэш-объект.
CryptSetHashParam
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Задает параметр хэш-объекта.
CryptSignHash
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Подписывает указанный хэш-объект.
CryptUIWizDigitalSign Отображает мастер, который цифрово подписывает документ или BLOB-объект.
CryptUIWizFreeDigitalSignContext Освобождает указатель на структуру CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT .
CryptVerifySignature
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Проверяет цифровую подпись, учитывая дескриптор хэш-объекта.
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
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Хэширует закодированное содержимое.
CryptHashCertificate2 Хэширует блок данных с помощью API шифрования: поставщик хэша следующего поколения (CNG).
CryptHashPublicKeyInfo
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Вычисляет хэш сведений о закодированном открытом ключе.
CryptHashToBeSigned
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Вычисляет хэш "подписываемых" данных в закодированном подписанном содержимом (CERT_SIGNED_CONTENT_INFO).
CryptImportPKCS8
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Импортирует закрытый ключ в формате PKCS 8 в поставщик служб шифрования (CSP).
CryptImportPublicKeyInfo
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Преобразует и импортирует сведения об открытом ключе в поставщик и возвращает дескриптор открытого ключа.
CryptImportPublicKeyInfoEx
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Преобразует и импортирует сведения об открытом ключе в поставщик и возвращает дескриптор открытого ключа. Дополнительные параметры (над параметрами, заданными параметром CryptImportPublicKeyInfo), которые можно использовать для переопределения значений по умолчанию, предоставляются для дополнения CERT_PUBLIC_KEY_INFO.
CryptImportPublicKeyInfoEx2 Импортирует открытый ключ в асимметричный поставщик CNG.
CryptMemAlloc Выделяет память для буфера. Эта память используется всеми функциями Crypt32.lib, возвращающими выделенные буферы.
CryptMemFree Освобождает память, выделенную CryptMemAlloc или CryptMemRealloc.
CryptMemRealloc Освобождает память, выделенную в настоящее время для буфера, и выделяет память для нового буфера.
CryptQueryObject
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Извлекает сведения о содержимом 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
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Создает идентификатор ключа из большого двоичного объекта открытого ключа CSP.
CryptEnumKeyIdentifierProperties Перечисляет идентификаторы ключей и их свойства.
CryptGetKeyIdentifierProperty
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Получает определенное свойство из указанного идентификатора ключа.
CryptSetKeyIdentifierProperty
[! Важно]
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.

Задает свойство заданного идентификатора ключа.

 

Функции поддержки OID

Эти функции обеспечивают поддержку идентификатора объекта (OID). Эти функции устанавливают, регистрируют и отправляются в функции OID и кодирования, относящиеся к типу.

Следующие функции CryptoAPI используют следующие функции поддержки OID:

Общие сведения об этом процессе см. в разделе "Расширение функциональных возможностей 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 Инициализирует этот поставщик.