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


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

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

Функции 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 и создает дескриптор ключа BCrypt следующего поколения (CNG) API шифрования для проверки подписи.
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 (RFC 3161), используйте функцию SignerTimeStampEx2 .
SignerTimeStampEx Метка времени указанного субъекта и при необходимости возвращает указатель на структуру SIGNER_CONTEXT , содержащую указатель на большой двоичный объект. Эта функция поддерживает метку времени Authenticode. Чтобы выполнить метку времени инфраструктуры открытых ключей X.509 (RFC 3161), используйте функцию SignerTimeStampEx2 .
SignerTimeStampEx2 Метка времени указанного субъекта и при необходимости возвращает указатель на структуру SIGNER_CONTEXT , содержащую указатель на большой двоичный объект. Эту функцию можно использовать для выполнения инфраструктуры открытых ключей X.509, совместимой с RFC 3161, меток времени.
SignerTimeStampEx3 Метки времени для указанного субъекта и поддерживают установку меток времени для нескольких подписей.

 

Базовые функции шифрования

Базовые криптографические функции предоставляют наиболее гибкие средства разработки приложений для шифрования. Весь обмен данными с поставщиком служб шифрования (CSP) осуществляется через эти функции.

CSP — это независимый модуль, который выполняет все криптографические операции. Для каждого приложения, использующего криптографические функции, требуется по крайней мере один CSP. Одно приложение может иногда использовать несколько поставщиков служб CSP.

Если используется несколько CSP, можно указать его в вызовах криптографических функций CryptoAPI. Один поставщик служб CSP, базовый поставщик служб шифрования Майкрософт, входит в комплект с CryptoAPI. Этот CSP используется в качестве поставщика по умолчанию многими функциями CryptoAPI, если другие CSP не указаны.

Каждый CSP предоставляет различную реализацию криптографической поддержки, предоставляемой CryptoAPI. Некоторые предоставляют более надежные алгоритмы шифрования; другие содержат аппаратные компоненты, такие как смарт-карты. Кроме того, некоторые поставщики служб конфигурации могут иногда напрямую взаимодействовать с пользователями, например при выполнении цифровых подписей с помощью закрытого ключа подписи пользователя.

Базовые криптографические функции находятся в следующих широких группах:

  • Функции поставщика услуг
  • Функции создания ключей и обмена
  • Функции кодирования и декодирования объектов
  • Функции шифрования и расшифровки данных
  • Функции хэша и цифровой подписи

Функции поставщика услуг

Приложения используют следующие функции службы для подключения и отключения поставщика служб шифрования (CSP).

Функция Описание
CryptAcquireContext Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Получает дескриптор для контейнера ключей текущего пользователя в рамках определенного CSP.
CryptContextAddRef Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Увеличивает число ссылок на дескриптор HCRYPTPROV .
CryptEnumProviders Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Перечисляет поставщиков на компьютере.
CryptEnumProviderTypes Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Перечисляет типы поставщиков, поддерживаемые на компьютере.
CryptGetDefaultProvider Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Определяет CSP по умолчанию для текущего пользователя или компьютера для указанного типа поставщика.
CryptGetProvParam Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Извлекает параметры, управляющие операциями CSP.
CryptInstallDefaultContext Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Устанавливает ранее полученный контекст HCRYPTPROV для использования в качестве контекста по умолчанию.
CryptReleaseContext Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Освобождает дескриптор, полученный функцией CryptAcquireContext .
CryptSetProvider и CryptSetProviderEx Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Указывает поставщика служб CSP по умолчанию для определенного типа CSP.
CryptSetProvParam Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Задает атрибуты CSP.
CryptUninstallDefaultContext Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Удаляет контекст по умолчанию, ранее установленный CryptInstallDefaultContext.
FreeCryptProvFromCertEx Освобождает дескриптор поставщику служб шифрования (CSP) или ключу API шифрования следующего поколения (CNG).

 

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

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

Функция Описание
CryptDeriveKey Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Создает ключ, производный от пароля.
CryptDecryptKey Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Уничтожает ключ.
CryptDuplicateKey Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Создает точную копию ключа, включая состояние ключа.
CryptExportKey Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Передает ключ из CSP в большой двоичный объект ключа в пространстве памяти приложения.
CryptGenKey Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Создает случайный ключ.
CryptGenRandom Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Создает случайные данные.
CryptGetKeyParam Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Извлекает параметры ключа.
CryptGetUserKey Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Получает дескриптор для ключа обмена ключами или ключа подписи.
CryptImportKey Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Передает ключ из ключевого BLOB-объекта в CSP.
CryptSetKeyParam Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Задает параметры ключа.

 

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

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

Функция Описание
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 в будущих выпусках.
Создает пустой хэш-объект.
CryptDeographyHash Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Уничтожает хэш-объект.
CryptDuplicateHash Дублирует хэш-объект.
CryptGetHashParam Извлекает параметр хэш-объекта.
CryptHashData Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Хэширует блок данных, добавляя его в указанный хэш-объект.
CryptHashSessionKey Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Хэширует ключ сеанса, добавляя его к указанному хэш-объекту.
CryptSetHashParam Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Задает параметр хэш-объекта.
CryptSignHash Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Подписывает указанный хэш-объект.
CryptUIWizDigitalSign Отображает мастер цифровой подписи документа или большого двоичного объекта.
CryptUIWizFreeDigitalSignContext Освобождает указатель на структуру CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT .
CryptVerifySignature Внимание!
Это нерекомендуемый API. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Проверяет цифровую подпись, заданную дескриптором хэш-объекта.
PFNCFILTERPROC Фильтрует сертификаты, отображаемые в мастере цифровой подписи, отображаемой функцией CryptUIWizDigitalSign .

 

Функции хранилища сертификатов и сертификатов

Функции хранилища сертификатов и сертификатов управляют использованием, хранением и извлечением сертификатов, списками отзыва сертификатов (CRL) и списками доверия сертификатов (CCL). Эти функции делятся на следующие группы:

  • Функции хранилища сертификатов
  • Функции обслуживания хранилища сертификатов и сертификатов
  • Функции сертификата
  • Функции списка отзыва сертификатов
  • Функции списка доверия сертификатов
  • Расширенные функции свойств
  • Функции 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 Добавляет сериализованный сертификат или элемент списка отзыва сертификатов в хранилище.
CertCreateContext Создает указанный контекст из закодированных байтов. Новый контекст не помещается в хранилище.
CertEnumSubjectInSortedCTL Перечисляет TrustedSubjects в отсортированного контексте CTL.
CertFindSubjectInCTL Находит указанную тему в CTL.
CertFindSubjectInSortedCTL Находит указанную тему в отсортированный CTL.
OpenPersonalTrustDBDialog и OpenPersonalTrustDBDialogEx Отображает диалоговое окно Сертификаты .

 

Функции сертификата

Большинство функций сертификатов имеют связанные функции для работы с списками отзыва сертификатов и CCL. Дополнительные сведения о связанных функциях CRL и CTL см. в разделах Функции списка отзыва сертификатов и Функции списка доверия сертификатов.

Функция Описание
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 Вспомогательная функция, используемая для получения сериализованного большого двоичного объекта сертификата из структуры CERT_SELECTUI_INPUT .
CertSerializeCertificateStoreElement Сериализует закодированный сертификат контекста сертификата и закодированное представление его свойств.
CertVerifySubjectCertificateContext Выполняет включенные проверки сертификата субъекта с помощью издателя.
CryptUIDlgCertMgr Отображает диалоговое окно, позволяющее пользователю управлять сертификатами.
CryptUIDlgSelectCertificate Отображает диалоговое окно, позволяющее пользователю выбрать сертификат.
CryptUIDlgSelectCertificateFromStore Отображает диалоговое окно, позволяющее выбрать сертификат из указанного хранилища.
CryptUIDlgViewCertificate Представляет диалоговое окно с указанным сертификатом.
CryptUIDlgViewContext Отображает сертификат, список отзыва сертификатов или список отзыва сертификатов.
CryptUIDlgViewSignerInfo Отображает диалоговое окно, содержащее сведения о подписывшем сообщении.
GetFriendlyNameOfCert Извлекает отображаемое имя сертификата.
RKeyCloseKeyService Закрывает дескриптор службы ключей.
RKeyOpenKeyService Открывает дескриптор службы ключей на удаленном компьютере.
RKeyPFXInstall Устанавливает сертификат на удаленном компьютере.

 

Функции списка отзыва сертификатов

Эти функции управляют хранением и получением списков отзыва сертификатов (CRL).

Функция Описание
CertAddCRLContextToStore Добавляет контекст списка отзыва сертификатов в хранилище сертификатов.
CertAddCRLLinkToStore Добавляет ссылку в хранилище в контекст списка отзыва сертификатов в другом хранилище.
CertAddEncodedCRLToStore Преобразует закодированный список отзыва сертификатов в контекст списка отзыва сертификатов, а затем добавляет контекст в хранилище сертификатов.
CertCreateCRLContext Создает контекст списка отзыва сертификатов на основе закодированного списка отзыва сертификатов. Созданный контекст не помещается в хранилище сертификатов.
CertDeleteCRLFromStore Удаляет список отзыва сертификатов из хранилища сертификатов.
CertDuplicateCRLContext Дублирует контекст списка отзыва сертификатов путем увеличения числа ссылок.
CertEnumCRLsInStore Перечисляет контексты списка отзыва сертификатов в хранилище.
CertFindCertificateInCRL Выполняет поиск указанного сертификата в списке отзыва сертификатов (CRL).
CertFindCRLInStore Находит первый или следующий контекст списка отзыва сертификатов в хранилище сертификатов, соответствующий определенному критерию.
CertFreeCRLContext Освобождает контекст списка отзыва сертификатов.
CertGetCRLFromStore Возвращает первый или следующий контекст списка отзыва сертификатов из хранилища сертификатов для указанного сертификата издателя.
CertSerializeCRLStoreElement Сериализует закодированные CRL-список списка отзыва сертификатов и его свойства.

 

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

Эти функции управляют хранением и получением списков доверия сертификатов (CCL).

Функция Описание
CertAddCTLContextToStore Добавляет контекст CTL в хранилище сертификатов.
CertAddCTLLinkToStore Добавляет ссылку в хранилище в контекст списка отзыва сертификатов в другом хранилище.
CertAddEncodedCTLToStore Преобразует закодированный CTL в контекст CTL, а затем добавляет контекст в хранилище сертификатов.
CertCreateCTLContext Создает контекст CTL из закодированного списка доверия сертификатов. Созданный контекст не помещается в хранилище сертификатов.
CertDeleteCTLFromStore Удаляет CTL из хранилища сертификатов.
CertDuplicateCTLContext Дублирует контекст CTL путем увеличения количества ссылок.
CertEnumCTLsInStore Перечисляет контексты CTL в хранилище сертификатов.
CertFindCTLInStore Находит первый или следующий контекст CTL в хранилище сертификатов, соответствующий определенным критериям.
CertFreeCTLContext Освобождает контекст CTL.
CertModifyCertificatesToTrust Изменяет набор сертификатов в CTL для определенной цели.
CertSerializeCTLStoreElement Сериализует закодированный CTL контекста CTL и его свойства.

 

Расширенные функции свойств

Следующие функции работают с расширенными свойствами сертификатов, списков отзыва сертификатов и списков CCL.

Функция Описание
CertEnumCertificateContextProperties Перечисляет свойства для указанного контекста сертификата.
CertEnumCRLContextProperties Перечисляет свойства для указанного контекста списка отзыва сертификатов.
CertEnumCTLContextProperties Перечисляет свойства для указанного контекста CTL.
CertGetCertificateContextProperty Извлекает свойства сертификата.
CertGetCRLContextProperty Извлекает свойства списка отзыва сертификатов.
CertGetCTLContextProperty Извлекает свойства CTL.
CertSetCertificateContextProperty Задает свойства сертификата.
CertSetCRLContextProperty Задает свойства списка отзыва сертификатов.
CertSetCTLContextProperty Задает свойства CTL.

 

Функции MakeCert

Следующие функции поддерживают средство MakeCert .

Функция Описание
FreeCryptProvFromCert Освобождает дескриптор для поставщика служб шифрования (CSP) и при необходимости удаляет временный контейнер, созданный функцией GetCryptProvFromCert .
GetCryptProvFromCert Получает дескриптор поставщика служб конфигурации и спецификацию ключа для контекста сертификата.
PvkFreeCryptProv Освобождает дескриптор CSP и при необходимости удаляет временный контейнер, созданный функцией PvkGetCryptProv .
PvkGetCryptProv Возвращает дескриптор CSP на основе имени файла закрытого ключа или контейнера ключей.
PvkPrivateKeyAcquireContextFromMemory Создает временный контейнер в CSP и загружает закрытый ключ из памяти в контейнер.
PvkPrivateKeySave Сохраняет закрытый ключ и соответствующий открытый ключ в указанном файле.
SignError Вызывает Метод GetLastError и преобразует код возврата в HRESULT.

 

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

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

  • Функции проверки с помощью списков CCL
  • Функции проверки цепочки сертификатов

Функции проверки с помощью списков CCL

Эти функции используют списки CCL в процессе проверки. Дополнительные функции для работы с списками сертификатов можно найти в разделе Функции списка доверия сертификатов и Расширенные функции свойств.

В следующих функциях для проверки используются списки CCL напрямую.

Функция Описание
CertVerifyCTLUsage Проверяет использование CTL.
CryptMsgEncodeAndSignCTL Кодирует и подписывает CTL как сообщение.
CryptMsgGetAndVerifySigner Извлекает и проверяет список CTL из сообщения.
CryptMsgSignCTL Подписывает сообщение, содержащее CTL.

 

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

Цепочки сертификатов создаются для предоставления сведений о доверии об отдельных сертификатах.

Имя функции Описание
CertCreateCertificateChainEngine Создает новую подсистему цепочки, не являющегося последовательной, для приложения.
CertCreateCTLEntryFromCertificateContextProperties Создает запись CTL, атрибуты которой являются свойствами контекста сертификата.
CertDuplicateCertificateChain Дублирует цепочку сертификатов путем увеличения числа ссылок цепочки и возврата указателя на цепочку.
CertFindChainInStore Находит первый или следующий контекст цепочки сертификатов в хранилище.
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 Сравнивает два целочисленных BLOB-объекта.
CertComparePublicKeyInfo Сравнивает два открытых ключа , чтобы определить, идентичны ли они.
CertFindAttribute Находит первый атрибут, идентифицируемый идентификатором объекта (OID).
CertFindExtension Находит первое расширение, определенное его идентификатором OID.
CertFindRDNAttr Находит первый атрибут RDN , идентифицируемый его идентификатором, в списке имен относительных различающихся имен.
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 в будущих выпусках.
Вычисляет хэш сведений "to be signed" в закодированном подписанном содержимом (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 в будущих выпусках.
Извлекает сведения о содержимом большого двоичного объекта или файла.
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 Переносит ключи master текущего пользователя после изменения идентификатора безопасности (SID) пользователя.
CryptVerifyCertificateSignature Проверяет подпись сертификата субъекта или списка отзыва сертификатов с помощью сведений об открытом ключе.
CryptVerifyCertificateSignatureEx Расширенная версия CryptVerifyCertificateSignature.
GetEncSChannel Сохраняет зашифрованное содержимое библиотеки DLL Schannel в памяти.
pCryptSIPGetCaps Реализуется SIP для создания отчетов о возможностях.

 

Функции преобразования данных

Следующие функции CryptoAPI преобразуют элементы структуры сертификата в различные формы.

Функция Описание
CertAlgIdToOID Преобразует идентификатор алгоритма CryptoAPI (ALG_ID) в строку идентификатора объекта (OID) абстрактной синтаксической нотации 1 (ASN.1).
CertGetNameString Получает имя субъекта или издателя из сертификата и преобразует его в символьную строку, завершаемую null.
CertNameToStr Преобразует большой двоичный объект с именем сертификата в строку с нулевым завершением.
CertOIDToAlgId Преобразует строку идентификатора объекта ASN.1 в идентификатор алгоритма CSP.
CertRDNValueToStr Преобразует значение имени в строку, завершаемую нулевым значением.
CertStrToName Преобразует строку X.500 , завершаемую null, в закодированное имя сертификата.
CryptBinaryToString Преобразует двоичную последовательность в форматированную строку.
CryptFormatObject Форматирует закодированные данные и возвращает строку Юникода.
CryptStringToBinary Преобразует форматированную строку в двоичную последовательность.

 

Расширенные функции использования ключей

Следующие функции имеют дело с расширением расширенного использования ключа (EKU) и расширенным свойством EKU сертификатов. Расширение EKU и расширенное свойство указывают и ограничивают допустимое использование сертификата. Расширения являются частью самого сертификата. Они задаются издателем сертификата и доступны только для чтения. Расширенные свойства сертификата — это значения, связанные с сертификатом, которые можно задать в приложении.

Функция Описание
CertAddEnhancedKeyUsageIdentifier Добавляет идентификатор использования в свойство EKU сертификата.
CertGetEnhancedKeyUsage Получает из сертификата сведения о расширении или свойстве EKU.
CertRemoveEnhancedKeyUsageIdentifier Удаляет идентификатор использования из расширенного свойства EKU сертификата.
CertSetEnhancedKeyUsage Задает свойство EKU для сертификата.

 

Функции идентификаторов ключей

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

Идентификатор ключа — это уникальный идентификатор пары открытого и закрытого ключей. Это может быть любой уникальный идентификатор, но обычно это 20-байтный хэш SHA1 закодированной CERT_PUBLIC_KEY_INFO структуры. Идентификатор ключа можно получить с помощью CERT_KEY_IDENTIFIER_PROP_ID сертификата. Идентификатор ключа позволяет использовать пару ключей для шифрования или расшифровки сообщений без использования сертификата.

Идентификаторы ключей не связаны с списками отзыва сертификатов и CCL.

Идентификатор ключа может иметь те же свойства, что и контекст сертификата. Дополнительные сведения см. в разделе 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 Перечисляет зарегистрированные сведения об идентификаторе идентификатора, определяемые их группой, и вызывает pfnEnumOIDInfo для совпадений.
CryptFindOIDInfo Использует указанный ключ и группу для поиска сведений об OID.
CryptFreeOIDFunctionAddress Освобождает число дескрипторов, которое было увеличено и возвращено CryptGetOIDFunctionAddress или CryptGetDefaultOIDFunctionAddress.
CryptGetDefaultOIDDllList Получает список зарегистрированных записей DLL по умолчанию для указанного набора функций и типа кодирования.
CryptGetDefaultOIDFunctionAddress Получает первую или следующую установленную функцию по умолчанию или загружает библиотеку DLL, содержащую функцию по умолчанию.
CryptGetOIDFunctionAddress Ищет в списке установленных функций тип кодирования и совпадение OID. Если совпадение там не найдено, в реестре выполняется поиск совпадения.
CryptGetOIDFunctionValue Получает значение для указанного типа кодирования, имени функции, идентификатора идентификатора и имени значения.
CryptInitOIDFunctionSet Инициализирует и возвращает дескриптор набора функций OID, определяемого указанным именем функции.
CryptInstallOIDFunctionAddress Устанавливает набор вызываемых адресов функций OID.
CryptRegisterDefaultOIDFunction Регистрирует библиотеку DLL, содержащую функцию по умолчанию для вызова для указанного типа кодирования и имени функции.
CryptRegisterOIDFunction Регистрирует библиотеку DLL, содержащую функцию для вызова для указанного типа кодирования, имени функции и идентификатора объекта.
CryptRegisterOIDInfo Регистрирует сведения об OID, указанные в структуре CRYPT_OID_INFO , сохраняя их в реестре.
CryptSetOIDFunctionValue Задает значение для указанного типа кодирования, имени функции, OID и имени значения.
CryptUnregisterDefaultOIDFunction Удаляет регистрацию библиотеки DLL, содержащей функцию по умолчанию, вызываемую для указанного типа кодирования и имени функции.
CryptUnregisterOIDFunction Удаляет регистрацию библиотеки DLL, содержащей функцию, вызываемую для указанного типа кодирования, имени функции и объекта OID.
CryptUnregisterOIDInfo Удаляет регистрацию для указанных сведений об OID.

 

Функции удаленного извлечения объектов

Следующие функции позволяют пользователю получить объект инфраструктуры открытых ключей (PKI), получить URL-адрес сертификата, CTL или CRL или извлечь URL-адрес из объекта.

Функция Описание
CryptGetObjectUrl Получает URL-адрес удаленного объекта из сертификата, CTL или списка отзыва сертификатов.
CryptRetrieveObjectByUrl Извлекает объект PKI из расположения, указанного URL-адресом.

 

Функции PFX

Следующие функции поддерживают большие двоичные объекты формата PFX.

Функция Описание
PFXExportCertStore Экспортирует из упоминаемого сертификата хранилище сертификатов и, если доступно, связанные с ними закрытые ключи.
PFXExportCertStoreEx Экспортирует из упоминаемого сертификата хранилище сертификатов и, если доступно, связанные с ними закрытые ключи.
PFXImportCertStore Импортирует большой двоичный объект PFX и возвращает дескриптор хранилища, содержащего сертификаты и все связанные закрытые ключи.
PFXIsPFXBlob Пытается декодировать внешний слой большого двоичного объекта в виде пакета PFX.
PFXVerifyPassword Пытается декодировать внешний слой большого двоичного объекта в виде пакета 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 (OID) для импорта уже расшифрованного ключа шифрования содержимого (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 Инициализирует этот поставщик.