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


Функции шифрования

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

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

 

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

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

Функция Описание
CryptDeriveKey Важно:
Этот API не рекомендуется. Новое и существующее программное обеспечение должно начинаться с API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Создает ключ, производный от пароля.
CryptDeskkey Важно:
Этот 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 в CSP.
CryptSetKeyParam Важно:
Этот API не рекомендуется. Новое и существующее программное обеспечение должно начинаться с API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Задает параметры ключа.

 

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

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

Функция Описание
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 в будущих выпусках.
Создает пустой хэш-объект.
CryptDeskHash Важно:
Этот 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.

 

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

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

 

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

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

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

 

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

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

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

 

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

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

Функция Описание
CertEnumCertificateContextProperties Перечисляет свойства для указанного контекста сертификата.
CertEnumCRLContextProperties Перечисляет свойства для указанного контекста CRL.
CertEnumCTLContextProperties Перечисляет свойства для указанного контекста CTL.
CertGetCertificateContextProperty Извлекает свойства сертификата.
CertGetCRLContextProperty Извлекает свойства CRL.
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
  • Функции проверки цепочки сертификатов

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

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

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

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

 

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

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

Имя функции Описание
CertCreateCertificateChainEngine Создает для приложения новый недеделаный механизм цепочки.
CertCreateCTLEntryFromCertificateContextProperties Создает запись CTL, атрибуты которой являются свойствами контекста сертификата.
CertDuplicateCertificateChain Дублирует цепочку сертификатов, добавив счетчик ссылок цепочки и возвратив указатель на цепочку.
CertFindChainStore Находит первый или следующий контекст цепочки сертификатов в хранилище.
CertFreeCertificateChain Освобождает цепочку сертификатов, уменьшая количество ссылок.
CertFreeCertificateChainEngine Освобождает подсистему цепочки сертификатов, не являющихся недефесультными.
CertFreeCertificateChainList Освобождает массив указателей к контекстам цепочки.
CertGetCertificateChain Создает контекст цепочки, начиная с конечного сертификата, и возвращается к доверенному корневому сертификату , если это возможно.
CertIsValidCRLForCertificate Проверяет CRL, чтобы определить, будет ли он включать определенный сертификат, если этот сертификат был отозван.
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 Получает длину бита открытого и закрытого ключа из BLOB-объекта открытого ключа.
CertIsRDNAttrsInCertificateName Сравнивает атрибуты в имени сертификата с указанным CERT_RDN, чтобы определить, включены ли все атрибуты.
CertIsStrongHashToSign Определяет, можно ли использовать указанный хэш-алгоритм и открытый ключ в сертификате подписи для строгого подписывания.
CertVerifyCRLRevocation Проверяет, что сертификат субъекта не находится в списке отзыва сертификатов (CRL).
CertVerifyCRLTimeValidity Проверяет срок действия списка отзыва сертификатов.
CertVerifyRevocation Проверяет, что сертификат субъекта не находится в списке отзыва сертификатов.
CertVerifyTimeValidity Проверяет срок действия сертификата.
CertVerifyValidityNesting Проверяет, что срок действия субъекта вложен в срок действия издателя.
CryptExportPKCS8 Эта функция заменена функцией CryptExportPKCS8Ex.
CryptExportPKCS8Ex Экспорт закрытого ключа в формате PKCS #8.
CryptExportPublicKeyInfo Экспортирует сведения о открытом ключе, связанные с соответствующим закрытым ключом поставщика.
CryptExportPublicKeyInfoEx Экспортирует сведения о открытом ключе, связанные с соответствующим закрытым ключом поставщика. Эта функция отличается от CryptExportPublicKeyInfo, что пользователь может указать алгоритм открытого ключа, тем самым переопределяя значение по умолчанию, предоставленное поставщиком служб CSP.
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 Проверяет подпись сертификата субъекта или CRL с помощью сведений о открытом ключе.
CryptVerifyCertificateSignatureEx Расширенная версия CryptVerifyCertificateSignature.
GetEncSChannel Хранит зашифрованное содержимое библиотеки DLL Schannel в памяти.
pCryptSIPGetCaps Реализуется SIP для создания отчетов о возможностях.

 

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

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

Функция Описание
CertAlgIdToOID Преобразует идентификатор алгоритма CryptoAPI (ALG_ID) в строку абстрактной нотации синтаксиса One (ASN.1) идентификатор объекта (OID).
CertGetNameString Получает имя субъекта или издателя из сертификата и преобразует его в строку символов, завершаемую null.
CertNameToStr Преобразует имя сертификата BLOB в строку с нулевой завершением.
CertOIDToAlgId Преобразует строку идентификатора объекта ASN.1 в идентификатор алгоритма CSP.
CertRDNValueToStr Преобразует значение имени в строку, завершаемую значением NULL.
CertStrToName Преобразует строку, завершаемую значением NULL, X.500 в закодированное имя сертификата.
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 сертификата. Идентификатор ключа позволяет использовать пару ключей для шифрования или расшифровки сообщений без использования сертификата.

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

Идентификатор ключа может иметь те же свойства, что и контекст сертификата. Дополнительные сведения см. в CertCreateContext.

Функция Описание
CryptCreateKeyIdentifierFromCSP Важно:
Этот API не рекомендуется. Новое и существующее программное обеспечение должно начинаться с API следующего поколения шифрования. Корпорация Майкрософт может удалить этот API в будущих выпусках.
Создает идентификатор ключа из открытого ключа BLOB-объекта 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-адрес удаленного объекта из сертификата, CTL или CRL.
CryptRetrieveObjectByUrl Извлекает объект PKI из расположения, указанного URL-адресом.

 

Функции PFX

Следующие функции поддерживают формат PFX БОЛЬШИХ двоичных объектов.

Функция Описание
PFXExportCertStore Экспортирует из указанного хранилища сертификатов сертификатов и, если они доступны, связанные закрытых ключей.
PFXExportCertStoreEx Экспортирует из хранилища сертификатов, на который ссылается ссылка, сертификаты и, если они доступны, связанные с ними закрытые ключи.
PFXImportCertStore Импортирует PFX BLOB и возвращает дескриптор хранилища, содержащего сертификаты и все связанные закрытые ключи.
PFXIsPFXBlob Пытается декодировать внешний слой БОЛЬШОго двоичного объекта в виде пакета 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 Освобождает ранее найденный контекст CRL.
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 Устанавливаемая функция(OID) идентификатора объекта 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 для экспорта BLOB-объекта открытого ключа и его кодирования.
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 Закрывает файл определения каталога и освобождает память для соответствующей структуры CRYPTCATC DF.
CryptCATCDFEnumAttributesWithCDFTag Перечисляет атрибуты файлов элементов в разделе CatalogFiles cdF.
CryptCATCDFEnumCatAttributes Перечисляет атрибуты уровня каталога в разделе CatalogHeader CDF.
CryptCATCDFEnumMembersByCDFTagEx Перечисляет отдельные члены файла в разделе CatalogFiles CDF.
CryptCATCDFOpen Открывает существующий CDF для чтения и инициализации структуры CRYPTCATCDF.

 

Функции каталога

Эти функции используются для управления каталогом.

Функция Описание
CryptCATAdminAcquireContext Получает дескриптор контекста администратора каталога. Этот дескриптор можно использовать при последующих вызовах CryptCATAdminAdminCatalog, CryptCATAdminEnminEnumCatalogFromHashи функций CryptCATAdminRemoveCatalog.
CryptCATAdminAcquireContext2 Получает дескриптор контекста администратора каталога для заданного хэш-алгоритма и хэш-политики.
CryptCATAdminAddCatalog Добавляет каталог в базу данных каталога.
CryptCATAdminCalcHashFromFileHandle Вычисляет хэш файла.
CryptCATAdminCalcHashFromFileHandle2 Вычисляет хэш файла с помощью указанного алгоритма.
CryptCATAdminEnumCatalogFromHash Перечисляет каталоги, содержащие указанный хэш.
CryptCATAdminReleaseCatalogContext Освобождает дескриптор контекста каталога, возвращаемого ранее функцией CryptCATAdminAddCata log.
CryptCATAdminReleaseContext Освобождает дескриптор, ранее назначенный функцией CryptCATAdminAcquireCon text.
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 Инициализирует поставщика.