КриптоПро CSP 3.0

127018, Москва, Улица Образцова, 38
Телефон: (095) 933 1168
Факс: (095) 933 1168
http://www.CryptoPro.ru
E-mail: info@CryptoPro.ru

Средство Криптографической Защиты Информации

КриптоПро CSP

Версия 3.0

Руководство программиста

ЖТЯИ.00015-01 90 03

Программный интерфейс КриптоПро CAPILite

© OOO "Крипто-Про", 2000-2004. Все права защищены.
Авторские права на средство криптографической защиты информации КриптоПро CSP и эксплуатационную документацию зарегистрированы в Российском агентстве по патентам и товарным знакам (Роспатент). Свидетельство об официальной регистрации программ для ЭВМ № 2001610275 от 14 марта 2001 года.
Документ входит в комплект поставки программного обеспечения КриптоПРО CSP, и на него распространяются все условия лицензионного соглашения. Без специального письменного разрешения OOO "Крипто-Про" документ или его часть в электронном или печатном виде не могут быть скопированы и переданы третьим лицам с коммерческой целью.


Введение

КриптоПро CSP 3.0

ЖТЯИ.00015-01 90 03

© OOO "Крипто-Про" 2000-2004

Средство
Криптографической
Защиты
Информации

КриптоПро CAPILite

Программный интерфейс КриптоПро CAPILite

Программный интерфейс CAPILite является аналогом криптографического интерфейса Microsoft CryptoAPI, реализованный с целью облегчения интеграции криптографических функций СКЗИ КриптоПро CSP в приложения на Unix платформах и возможности использования единого кода

Данный интерфейс позволяет использовать высокоуровневые функции для создания криптографических сообщений (шифрование, ЭЦП), построения и верификации цепочек сертификатов, генерации ключей, обработки данных сообщений и сертификатов

CAPILite резлизован для следующих операционных систем:

  • Solaris 9 Update 4;
  • FreeBSD 5;
  • Red Hat Linux 7, 9.

Архитектура CAPILite

Aрхитектура CAPILite включает пять основных функциональных групп:

Базовые криптографические функции:

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

Функции кодирования/декодирования

Данные функции предназначены для преобразование (кодирования) из внутреннего представления объектов, используемых в CryptoAPI, во внешнее представление и обратно. В качестве внешнего представления объектов используется формат ASN.1 (Abstracy Syntax Notation One), определенный серией рекомендаций X.680.
К этой же группе функций можно отнести набор функций, позволяющих расширить функциональность CryptoAPI, путем реализации и регистрации собственных типов объектов.

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

Эта группа функций предназначена для хранения и обработки сертификатов в различных типах справочников. Причем в качестве справочника могут использоваться самые различные типы хранилищ: от простого файла до LDAP.

Высокоуровневые функции обработки криптографических сообщений

Данная группа функций (Simplified Message Functions) в первую очередь предназначена для использования в прикладном ПО. С помощью этих функций можно:

  • Зашифровать/расшифровать сообщение от одного пользователя к другому.
  • Подписать данные.
  • Проверить подпись данных.

Эти функции (так же как и функции низкого уровня) оперируют сертификатами открытых ключей X.509 для адресации отправителя/получателя данных. В качестве формата данных, формируемых функциями, используется формат PKCS#7 (RFC2315) или CMS (RFC2630).

Низкоуровневые функции обработки криптографических сообщений

Данная группа функция (Low Level Message Functions) предназначена для аналогичных целей, что и группа высокоуровневых функций, но обладает большей функциональностью. Вместе с тем большая функциональность потребует от прикладного программиста более детальных знаний в области прикладной криптографии.

Аннотация

Краткое описание КриптоПро CSP.

Архитектура

Архитектура криптографических функций операционной системы Windows.

Руководство программиста

Описание функций, структур, переменных КриптоПро CSP.

Обратная связь

Связь с разработчиком.
Поддержка.
Конференция.


Функции обработки списка отозванных сертификатов (СОС)

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

Функции | Описание
CertAddCRLContextToStore | Функция CertAddCRLContextToStore добавляет контекст СОС в хранилище сертификатов.
CertAddEncodedCRLToStore | Функция CertAddEncodedCRLToStore преобразует закодированный СОС в контекст СОС и затем добавляет контекст в хранилище сертификатов.
CertFreeCRLContext | Функция CertFreeCRLContext освобождает контекст СОС.
CertCreateCRLContext | Функция CertCreateCRLContext создает контекст СОС из закодированного СОС. Созданный контекст не помещается в хранилище сертификатов.
CertDuplicateCRLContext | Функция CertDuplicateCRLContext дублирует контекст СОС, увеличивая счетчик ссылок на единицу.
CertFindCRLInStore | Функция CertFindCRLInStore находит первый или следующий контекст COC в хранилище сертификатов, удовлетворяющий некоторому критерию поиска.
CertDeleteCRLFromStore | Функция CertDeleteCRLFromStore удаляет COC из хранилища сертификатов.
CertGetCRLFromStore | Функция CertGetCRLFromStore получает первый или следующий контекст СОС для определенного издателя сертификата из хранилища сертификатов.
Крипто-Про CAPILite Версия: 3.0 Сборка 3293


CertAddCRLContextToStore

Функция CertAddCRLContextToStore добавляет контекст СОС в хранилище сертификатов.

Аналогична описанию в CryptoAPI, за исключением того, что для dwAddDisposition поддерживаются только следующие значения: CERT_STORE_ADD_NEW, CERT_STORE_ADD_REPLACE_EXISTING, CERT_STORE_ADD_ALWAYS

WINCRYPT32API BOOL WINAPI CertAddCRLContextToStore(
  IN HCERTSTORE hCertStore,
  IN PCCRL_CONTEXT pCertContext,
  IN DWORD dwAddDisposition,
  OUT OPTIONAL PCCRL_CONTEXT * ppStoreContext
);

См. также:

Функции обработки списка отозванных сертификатов (СОС) , CertAddEncodedCRLToStore, CertDuplicateCRLContext, CertSetCRLContextProperty, CertAddCRLContextToStore в MS CryptoAPI 2.0 World Wide Web link


CertAddEncodedCRLToStore

Функция CertAddEncodedCRLToStore создает контекст СОС из закодированного СОС и добавляет его в хранилище сертификатов. Функция создает копию контекста СОС перед добавлением его в хранилище.

Аналогична описанию в CryptoAPI.

WINCRYPT32API BOOL WINAPI CertAddEncodedCRLToStore(
  IN HCERTSTORE hCertStore,
  IN DWORD dwCertEncodingType,
  IN const BYTE * pbCrlEncoded,
  IN DWORD cbCrlEncoded,
  IN DWORD dwAddDisposition,
  OUT OPTIONAL PCCRL_CONTEXT * ppCrlContext
);

См. также:

Функции обработки списка отозванных сертификатов (СОС) , CertAddCRLContextToStore, CertAddEncodedCRLToStore в MS CryptoAPI 2.0 World Wide Web link


CertFreeCRLContext

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

WINCRYPT32API BOOL WINAPI CertFreeCRLContext(
  IN PCCRL_CONTEXT pCrlContext
);

См. также:

Функции обработки списка отозванных сертификатов (СОС) , CertFreeCertificateContext, CertFreeCRLContext в MS CryptoAPI 2.0 World Wide Web link


CertCreateCRLContext

Функция CertCreateCRLContext создает контекст СОС из закодированного СОС. Созданный контекст не помещается в хранилище сертификатов. В созданном контексте функция размещает копию закодированного СОС.

Аналогична описанию в CryptoAPI.

WINCRYPT32API PCCRL_CONTEXT WINAPI CertCreateCRLContext(
  IN DWORD dwCertEncodingType,
  IN const BYTE * pbCRLEncoded,
  IN DWORD cbCRLEncoded
);

См. также:

Функции обработки списка отозванных сертификатов (СОС) , CertCreateCertificateContext, CertDuplicateCRLContext, CertFreeCRLContext, CertGetCRLContextProperty, CertSetCRLContextProperty, CertCreateCRLContext в MS CryptoAPI 2.0 World Wide Web link


CertDuplicateCRLContext

Функция CertDuplicateCRLContext дублирует контекст CОС, увеличивая счетчик ссылок на CОС на единицу.

Вместо увеличения счетчика ссылок, контекст клонируется.

WINCRYPT32API PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(
  IN PCCRL_CONTEXT pCrlContext
);

См. также:

Функции обработки списка отозванных сертификатов (СОС) , CertDuplicateCRLContext в MS CryptoAPI 2.0 World Wide Web link


CertFindCRLInStore

Функция CertFindCRLInStore находит первый или следующий контекст COC в хранилище сертификатов, который соответствует критерию поиска, определяемому параметром dwFindType и связанным с ним pvFindPara . Эта функция может быть использована в цикле для того, чтобы найти все COC в хранилище сертификатов, удовлетворяющие заданному критерию поиска.

Аналогична описанию в CryptoAPI. Поддерживаются следующие dwFindType: CRL_FIND_ANY, CRL_FIND_ISSUED_BY, CRL_FIND_EXISTING.

WINCRYPT32API PCCRL_CONTEXT WINAPI CertFindCRLInStore(
  IN HCERTSTORE hCertStore,
  IN DWORD dwCertEncodingType,
  IN DWORD dwFindFlags,
  IN DWORD dwFindType,
  IN const void * pvFindPara,
  IN PCCRL_CONTEXT pPrevCrlContext
);

См. также:

Функции обработки списка отозванных сертификатов (СОС) , CertAddCRLContextToStore, CertDeleteCRLFromStore, CertDuplicateCRLContext, CertFreeCRLContext, CertFindCRLInStore в MS CryptoAPI 2.0 World Wide Web link


CertDeleteCRLFromStore

Функция CertDeleteCertificateFromStore удаляет определенный контекст COC из хранилища сертификатов.

Аналогична описанию в CryptoAPI

WINCRYPT32API BOOL WINAPI CertDeleteCRLFromStore(
  IN PCCRL_CONTEXT pCrlContext
);

См. также:

Функции обработки списка отозванных сертификатов (СОС) , CertFreeCRLContext, CertDeleteCRLFromStore в MS CryptoAPI 2.0 World Wide Web link


CertGetCRLFromStore

Функция CertGetCRLFromStore получает первый или следующий контекст СОС для определенного издателя сертификата из хранилища сертификатов. Эта функция также осуществляет возможную проверку СОС.

WINCRYPT32API PCCRL_CONTEXT WINAPI CertGetCRLFromStore(
  IN HCERTSTORE hCertStore,
  IN OPTIONAL PCCERT_CONTEXT pIssuerContext,
  IN PCCRL_CONTEXT pPrevCrlContext,
  IN OUT DWORD * pdwFlags
);

См. также:

Функции обработки списка отозванных сертификатов (СОС) , CertCreateCertificateContext, CertDuplicateCRLContext, CertFreeCRLContext, CertGetCRLContextProperty, CertGetCRLFromStore в MS CryptoAPI 2.0 World Wide Web link


Функции обработки расширенных свойств

Эти функции работают с расширенными свойствами сертификатов и списков отозванных сертификатов.

Функции | Описание
CertGetCRLContextProperty | Функция CertGetCRLContextProperty получает свойства СОС.
CertSetCRLContextProperty | Функция CertSetCRLContextProperty устанавливает свойства СОС.
CertGetCertificateContextProperty | Функция CertGetCertificateContextProperty получает свойства сертификата.
CertSetCertificateContextProperty | Функция CertSetCertificateContextProperty устанавливает свойства сертификата.


CertGetCRLContextProperty

Функция CertGetCRLContextProperty получает расширенные свойства определенного контекста СОС.

Аналогична описанию в CryptoAPI.

WINCRYPT32API BOOL WINAPI CertGetCRLContextProperty(
  IN PCCRL_CONTEXT pCrlContext,
  IN DWORD dwPropId,
  OUT void * pvData,
  IN OUT DWORD * pcbData
);

См. также:

Функции обработки расширенных свойств , CertGetCertificateContextProperty, CertGetCRLContextProperty в MS CryptoAPI 2.0 World Wide Web link


CertSetCRLContextProperty

Функция CertSetCRLContextProperty устанавливает расширенные свойства определенного контекста СОС.

Аналогична описанию в CryptoAPI.

WINCRYPT32API BOOL WINAPI CertSetCRLContextProperty(
  IN PCCRL_CONTEXT pCrlContext,
  IN DWORD dwPropId,
  IN DWORD dwFlags,
  IN const void * pvData
);

См. также:

Функции обработки расширенных свойств , CertGetCRLContextProperty, CertSetCertificateContextProperty, CertSetCRLContextProperty в MS CryptoAPI 2.0 World Wide Web link


CertGetCertificateContextProperty

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

Аналогична описанию в CryptoAPI. Поддерживаются только следующие параметры: CERT_MD5_HASH_PROP_ID, CERT_SHA1_HASH_PROP_ID, CERT_SIGNATURE_HASH_PROP_ID, CERT_KEY_IDENTIFIER_PROP_ID, CERT_KEY_PROV_INFO_PROP_ID, CERT_DESCRIPTION_PROP_ID, CERT_ENHKEY_USAGE_PROP_ID, CERT_FRIENDLY_NAME_PROP_ID

WINCRYPT32API BOOL WINAPI CertGetCertificateContextProperty(
  IN PCCERT_CONTEXT pCertContext,
  IN DWORD dwPropId,
  OUT void * pvData,
  IN OUT DWORD * pcbData
);

См. также:

Функции обработки расширенных свойств , CertCreateCertificateContext, CertSetCertificateContextProperty, CertGetCertificateContextProperty в MS CryptoAPI 2.0 World Wide Web link


CertSetCertificateContextProperty

Функция CertSetCertificateContextProperty устанавливает расширенные свойства для определенного контекста сертификата.

Аналогична описанию в CryptoAPI, поддерживаются только параметры, имеющие тип CRYPT_DATA_BLOB и параметр CERT_KEY_PROV_INFO_PROP_ID.

WINCRYPT32API BOOL WINAPI CertSetCertificateContextProperty(
  IN PCCERT_CONTEXT pCertContext,
  IN DWORD dwPropId,
  IN DWORD dwFlags,
  IN const void * pvData
);

См. также:

Функции обработки расширенных свойств , CertGetCertificateContextProperty, CertSetCRLContextProperty, CertSetCertificateContextProperty в MS CryptoAPI 2.0 World Wide Web link


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

Эти функции работают с сертификатами. Многие из этих функций связаны с Функции обработки списка отозванных сертификатов (СОС) .

Функции | Описание
CertAddCertificateContextToStore | Функция CertAddCertificateContextToStore добавляет контекст сертификата в хранилище сертификатов.
CertAddEncodedCertificateToStore | Функция CertAddEncodedCertificateToStore преобразует закодированный сертификат в контекст сертификата и затем добавляет контекст в хранилище сертификатов.
CertFreeCertificateContext | Функция CertFreeCertificateContext освобождает контекст сертификата.
CertCreateCertificateContext | Функция CertCreateCertificateContext создает контекст сертификата из закодированного сертификата. Созданный контекст не помещается в хранилище сертификатов.
CertDuplicateCertificateContext | Функция CertDuplicateCertificateContext дублирует контекст сертифика, увеличивая счетчик ссылок на единицу.
CertFindCertificateInStore | Функция CertFindCertificateInStore находит первый или следующий контекст сертификата в хранилище сертификатов, удовлетворяющий некоторому критерию поиска.
CertDeleteCertificateFromStore | Функция CertDeleteCertificateFromStore удаляет сертификат из хранилища сертификатов.
CertGetSubjectCertificateFromStore | Функция CertGetSubjectCertificateFromStore получает контекст сертификата из хранилища сертифика, однозначно определяемый его издателем и серийным номером.


CertAddCertificateContextToStore

Функция CertAddCertificateContextToStore добавляет контекст сертификата в хранилище сертификатов.

Аналогична описанию в CryptoAPI, за исключением того, что для dwAddDisposition поддерживаются только следующие значения: CERT_STORE_ADD_NEW, CERT_STORE_ADD_REPLACE_EXISTING, CERT_STORE_ADD_ALWAYS

WINCRYPT32API BOOL WINAPI CertAddCertificateContextToStore(
  IN HCERTSTORE hCertStore,
  IN PCCERT_CONTEXT pCertContext,
  IN DWORD dwAddDisposition,
  OUT OPTIONAL PCCERT_CONTEXT * ppStoreContext
);

См. также:

Функции обработки сертификатов , CertAddEncodedCertificateToStore, CertSetCertificateContextProperty, CertAddCertificateContextToStore в MS CryptoAPI 2.0 World Wide Web link


CertAddEncodedCertificateToStore

Функция CertAddEncodedCertificateToStore создает контекст сертификата из закодированного сертификата и добавляет его в хранилище сертификатов. Созданный контекст не содержит никаких расширенных свойств.

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

Аналогична описанию в CryptoAPI.

WINCRYPT32API BOOL WINAPI CertAddEncodedCertificateToStore(
  IN HCERTSTORE hCertStore,
  IN DWORD dwCertEncodingType,
  IN const BYTE * pbCertEncoded,
  IN DWORD cbCertEncoded,
  IN DWORD dwAddDisposition,
  OUT OPTIONAL PCCERT_CONTEXT * ppCertContext
);

См. также:

Функции обработки сертификатов , CertAddCertificateContextToStore, CertAddEncodedCertificateToStore в MS CryptoAPI 2.0 World Wide Web link


CertFreeCertificateContext

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

WINCRYPT32API BOOL WINAPI CertFreeCertificateContext(
  IN PCCERT_CONTEXT pCertContext
);

См. также:

Функции обработки сертификатов , CertFreeCRLContext, CertFreeCertificateContext в MS CryptoAPI 2.0 World Wide Web link


CertCreateCertificateContext

Функция CertCreateCertificateContext создает контекст сертификата из закодированного сертификата. Созданный контекст не помещается в хранилище сертификатов. В созданном контексте функция размещает копию закодированного сертификата.

Аналогична описанию в CryptoAPI.

WINCRYPT32API PCCERT_CONTEXT WINAPI CertCreateCertificateContext(
  IN DWORD dwCertEncodingType,
  IN const BYTE * pbCertEncoded,
  IN DWORD cbCertEncoded
);

См. также:

Функции обработки сертификатов , CertCreateCRLContext, CertDuplicateCertificateContext, CertFreeCertificateContext, CertGetCertificateContextProperty, CertSetCertificateContextProperty, CertCreateCertificateContext в MS CryptoAPI 2.0 World Wide Web link


CertDuplicateCertificateContext

Функция CertDuplicateCertificateContext дублирует контекст сертифика, увеличивая счетчик ссылок на единицу.

Вместо увеличения счетчика ссылок, контекст клонируется.

WINCRYPT32API PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(
  IN PCCERT_CONTEXT pCertContext
);

См. также:

Функции обработки сертификатов , CertDuplicateCRLContext, CertDuplicateCertificateContext в MS CryptoAPI 2.0 World Wide Web link


CertFindCertificateInStore

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

Аналогична описанию в CryptoAPI. Поддерживаются следующие dwFindType: CERT_FIND_ANY, CERT_FIND_MD5_HASH, CERT_FIND_SHA1_HASH, CERT_FIND_PROPERTY, CERT_FIND_PUBLIC_KEY, CERT_FIND_SUBJECT_NAME, CERT_FIND_ISSUER_NAME, CERT_FIND_SUBJECT_STR_A, CERT_FIND_ISSUER_STR_A, CERT_FIND_EXISTING.

WINCRYPT32API PCCERT_CONTEXT WINAPI CertFindCertificateInStore(
  IN HCERTSTORE hCertStore,
  IN DWORD dwCertEncodingType,
  IN DWORD dwFindFlags,
  IN DWORD dwFindType,
  IN const void * pvFindPara,
  IN PCCERT_CONTEXT pPrevCertContext
);

См. также:

Функции обработки сертификатов , CertAddCertificateContextToStore, CertDuplicateCertificateContext, #CertEnumCertificatesInStore, CertFreeCertificateContext, CertGetCertificateChain, CertFindCertificateInStore в MS CryptoAPI 2.0 World Wide Web link


CertDeleteCertificateFromStore

Функция CertDeleteCertificateFromStore удаляет определенный контекст сертификата из хранилища сертификатов.

Аналогична описанию в CryptoAPI

WINCRYPT32API BOOL WINAPI CertDeleteCertificateFromStore(
  IN PCCERT_CONTEXT pCertContext
);

См. также:

Функции обработки сертификатов , CertDeleteCRLFromStore, CertFreeCertificateContext, CertDeleteCertificateFromStore в MS CryptoAPI 2.0 World Wide Web link


CertGetSubjectCertificateFromStore

Функция CertGetSubjectCertificateFromStore получает контекст сертификата из хранилища сертифика, однозначно определяемый его издателем и серийным номером

WINCRYPT32API PCCERT_CONTEXT WINAPI CertGetSubjectCertificateFromStore(
  IN HCERTSTORE hCertStore,
  IN DWORD dwCertEncodingType,
  IN PCERT_INFO pCertId
);

См. также:

Функции обработки сертификатов , CertDuplicateCertificateContext, CertFreeCertificateContext, CertGetSubjectCertificateFromStore в MS CryptoAPI 2.0 World Wide Web link


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

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

Функции | Описание
CertGetCertificateChain | Функция CertGetCertificateChain строит цепочку сертификатов, начиная с последнего сертификата, в обратном направлении до доверенного корневого сертификата, если это возможно.
CertFreeCertificateChain | Функция CertFreeCertificateChain освобождает цепочку сертификатов путем уменьшения счетчика ссылок.
CertVerifyCertificateChainPolicy | Функция CertVerifyCertificateChainPolicy проверяет цепочку сертификатов на достоверность, включая соответствие ее некоторому критерию истинности.


CertGetCertificateChain

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

Аналогична описанию в CryptoAPI, за исключением того, что возвращается только лучшая цепочка (cChain <= 1)

WINCRYPT32API BOOL WINAPI CertGetCertificateChain(
  IN OPTIONAL HCERTCHAINENGINE hChainEngine,
  IN PCCERT_CONTEXT pCertContext,
  IN OPTIONAL LPFILETIME pTime,
  IN OPTIONAL HCERTSTORE hAdditionalStore,
  IN PCERT_CHAIN_PARA pChainPara,
  IN DWORD dwFlags,
  IN LPVOID pvReserved,
  OUT PCCERT_CHAIN_CONTEXT * ppChainContext
);

См. также:

Функции проверки цепочки сертификатов , CertFreeCertificateChain, CertGetCertificateChain в MS CryptoAPI 2.0 World Wide Web link


CertFreeCertificateChain

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

Аналогична описанию в CryptoAPI

WINCRYPT32API VOID WINAPI CertFreeCertificateChain(
  IN PCCERT_CHAIN_CONTEXT pChainContext
);

См. также:

Функции проверки цепочки сертификатов , CertGetCertificateChain, CertFreeCertificateChain в MS CryptoAPI 2.0 World Wide Web link


CertVerifyCertificateChainPolicy

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

Аналогична описанию в CryptoAPI, за исключением того, что проверяется только статус цепочки. pszPolicyOID игнорируется, pPolicyPara->pvExtraPolicyPara игнорируется.

WINCRYPT32API BOOL WINAPI CertVerifyCertificateChainPolicy(
  IN LPCSTR pszPolicyOID,
  IN PCCERT_CHAIN_CONTEXT pChainContext,
  IN PCERT_CHAIN_POLICY_PARA pPolicyPara,
  IN OUT PCERT_CHAIN_POLICY_STATUS pPolicyStatus
);

См. также:

Функции проверки цепочки сертификатов , CertVerifyCertificateChainPolicy в MS CryptoAPI 2.0 World Wide Web link


Функции расширенного использования ключа

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

Функции | Описание
CertGetEnhancedKeyUsage | Функция CertGetEnhancedKeyUsage получает информацию о расширенном использовании ключа из соответствующего расширения или из свойств сертификата.


CertGetEnhancedKeyUsage

Функция CertGetEnhancedKeyUsage получает информацию о расширенном использовании ключа из соответствующего расширения или из расширенных свойств сертификата. Расширенное использование ключа служит признаком правомерного использования сертификата.

Аналогична описанию в CryptoAPI, за исключением того, что dwFlags считается равным CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG

WINCRYPT32API BOOL WINAPI CertGetEnhancedKeyUsage(
  IN PCCERT_CONTEXT pCertContext,
  IN DWORD dwFlags,
  OUT PCERT_ENHKEY_USAGE pUsage,
  IN OUT DWORD * pcbUsage
);

См. также:

Функции расширенного использования ключа , CertGetEnhancedKeyUsage в MS CryptoAPI 2.0 World Wide Web link


Функции генерации и обмена ключа

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

Функции | Описание
CryptAcquireCertificatePrivateKey | Функция CryptAcquireCertificatePrivateKey получает дескриптор HCRYPTPROV и параметр dwKeySpec для определенного контекста сертификата.
CryptGenKey | Функция CryptGenKey создает случайный ключ.
CryptDeriveKey | Функция CryptDeriveKey создает ключ, получая его из пароля.
CryptDestroyKey | Функция CryptDestroyKey уничтожает ключ.
CryptSetKeyParam | Функция CryptSetKeyParam определяется параметры ключа.
CryptGetKeyParam | Функция CryptGetKeyParam получает параметры ключа.
CryptGenRandom | Функция CryptGenRandom генерит случайные данные.
CryptGetUserKey | Функция CryptGetUserKey получает ключ замены или ключ подписи.
CryptExportKey | Функция CryptExportKey пересылает ключ из CSP в ключевой BLOB пространства памяти приложения.
CryptImportKey | Функция CryptImportKey пересылает ключ из ключевого BLOB в CSP.
CryptDuplicateKey | Функция CryptDuplicateKey создает точную копию ключа и его состояния.


CryptAcquireCertificatePrivateKey

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

Если дескриптор CSP и ключевой контейнер, содержащие закрытый ключ пользователя, являются доступными, то можно использовать функцию CryptGetUserKey.

Аналогична описанию в CryptoAPI, за исключением того, что не поддерживается кеширование контекста.

WINCRYPT32API BOOL WINAPI CryptAcquireCertificatePrivateKey(
  IN PCCERT_CONTEXT pCert,
  IN DWORD dwFlags,
  IN void * pvReserved,
  OUT HCRYPTPROV * phCryptProv,
  OUT OPTIONAL DWORD * pdwKeySpec,
  OUT OPTIONAL BOOL * pfCallerFreeProv
);

См. также:

Функции генерации и обмена ключа , CryptReleaseContext, CertSetCertificateContextProperty, CryptAcquireCertificatePrivateKey в MS CryptoAPI 2.0 World Wide Web link


CryptGenKey

Функция CryptGenKey случайным образом генерит криптографический сессионный ключ или ключевую пару закрытый ключ/открытый ключ. Дескриптор ключа или ключевой пары возвращается при помощи параметра phKey . Затем этот дескриптор может быть использован любой CryptoAPI функцией, для которой необходим дескриптор ключа.

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

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptGenKey(
  HCRYPTPROV hProv,
  ALG_ID Algid,
  DWORD dwFlags,
  HCRYPTKEY * phKey
);

См. также:

Функции генерации и обмена ключа , CryptAcquireContextA, CryptDestroyKey, CryptExportKey, CryptGetKeyParam, CryptImportKey, CryptSetKeyParam, CryptGenKey в MS CryptoAPI 2.0 World Wide Web link


CryptDeriveKey

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

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

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

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptDeriveKey(
  HCRYPTPROV hProv,
  ALG_ID Algid,
  HCRYPTHASH hBaseData,
  DWORD dwFlags,
  HCRYPTKEY * phKey
);

См. также:

Функции генерации и обмена ключа , CryptAcquireContextA, CryptCreateHash, CryptDestroyHash, CryptDestroyKey, CryptExportKey, CryptGenKey, CryptGetKeyParam, CryptHashData, CryptHashSessionKey, CryptSetKeyParam, CryptDeriveKey в MS CryptoAPI 2.0 World Wide Web link


CryptDestroyKey

Функция CryptDestroyKey уничтожает дескриптор, ссылающийся на параметр hKey . После уничтожения дескриптора ключа, он становится недействительным и не может быть использован повторно.

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

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptDestroyKey(
  HCRYPTKEY hKey
);

См. также:

Функции генерации и обмена ключа , CryptDeriveKey, CryptGenKey, CryptGetUserKey, CryptImportKey, CryptDestroyKey в MS CryptoAPI 2.0 World Wide Web link


CryptSetKeyParam

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

!!! - The Microsoft Base Cryptographic Provider does not permit setting values for key exchange or signature keys; however, custom providers can define values that can be set for its keys. Перевести, как это реализовано у нас.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptSetKeyParam(
  HCRYPTKEY hKey,
  DWORD dwParam,
  CONST BYTE * pbData,
  DWORD dwFlags
);

См. также:

Функции генерации и обмена ключа , CryptGenKey, CryptGetKeyParam, CryptImportKey, CryptSetKeyParam в MS CryptoAPI 2.0 World Wide Web link


CryptGetKeyParam

Функция CryptGetKeyParam получает данные, которые управляют операциями ключа.

!!! - If the Microsoft Cryptographic Service Provider is used, the base symmetric keying material is not obtainable by this function or any other function. Перевести, как это реализовано у нас.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptGetKeyParam(
  HCRYPTKEY hKey,
  DWORD dwParam,
  BYTE * pbData,
  DWORD * pdwDataLen,
  DWORD dwFlags
);

См. также:

Функции генерации и обмена ключа , CryptSetKeyParam, CryptGetKeyParam в MS CryptoAPI 2.0 World Wide Web link


CryptGenRandom

CryptGenRandom заполняет буфер случайными криптографическими байтами.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptGenRandom(
  HCRYPTPROV hProv,
  DWORD dwLen,
  BYTE * pbBuffer
);

См. также:

Функции генерации и обмена ключа , CryptAcquireContextA, CryptGenKey, CryptSetKeyParam, CryptGenRandom в MS CryptoAPI 2.0 World Wide Web link


CryptGetUserKey

Функция CryptGetUserKey получает одну из двух пользовательских ключевых пар закрытый ключ/открытый ключ. Этой функцией может пользоваться только владелец ключевой пары закрытый ключ/открытый ключ, и только когда доступны дескриптор CSP и ассоциированный с ним ключевой контейнер. Если дескриптор CSP не доступен, но сертификат пользователя является доступным, можно воспользоваться функцией CryptAcquireCertificatePrivateKey.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptGetUserKey(
  HCRYPTPROV hProv,
  DWORD dwKeySpec,
  HCRYPTKEY * phUserKey
);

См. также:

Функции генерации и обмена ключа , CryptAcquireContextA, CryptDestroyKey, CryptGenKey, CryptGetUserKey в MS CryptoAPI 2.0 World Wide Web link


CryptExportKey

Функция CryptExportKey экспортирует криптографический ключ или ключевую пару из CSP закрытым способом.

Дескриптор экспортированного ключа передается функции, функция в свою очередь возвращает ключевой BLOB. Этот ключевой BLOB может быть послан по открытому каналу или сохранен в открытом хранилище информации. Эта функция может экспортировать SChannel сессионные ключи, обычные сессионные ключи, открытые ключи или ключевые пары закрытый ключ/открытый ключ. Ключевой BLOB не может быть использован для экспорта до тех пор, пока запланированный получатель пользуется функцией CryptImportKey на этом ключевом BLOB для импорта ключа или ключевой пары в свой CSP.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptExportKey(
  HCRYPTKEY hKey,
  HCRYPTKEY hExpKey,
  DWORD dwBlobType,
  DWORD dwFlags,
  BYTE * pbData,
  DWORD * pdwDataLen
);

См. также:

Функции генерации и обмена ключа , CryptImportKey, CryptExportKey в MS CryptoAPI 2.0 World Wide Web link


CryptImportKey

Функция CryptImportKey пересылает криптографический ключ из ключевого BLOB в CSP. Эта функция может быть использована для импорта SChannel сессионных ключей, обычных сессионных ключей, открытых ключей или ключевых пар закрытый ключ/открытый ключ. Для всего выше перечисленного, кроме открытых ключей, ключи или ключевые пары шифруются.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptImportKey(
  HCRYPTPROV hProv,
  CONST BYTE * pbData,
  DWORD dwDataLen,
  HCRYPTKEY hPubKey,
  DWORD dwFlags,
  HCRYPTKEY * phKey
);

См. также:

Функции генерации и обмена ключа , CryptAcquireContextA, CryptDestroyKey, CryptExportKey, CryptImportKey в MS CryptoAPI 2.0 World Wide Web link


CryptDuplicateKey

Функция CryptDuplicateKey создает точную копию ключа и его состояния.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptDuplicateKey(
  HCRYPTKEY hKey,
  DWORD * pdwReserved,
  DWORD dwFlags,
  HCRYPTKEY * phKey
);

См. также:

Функции генерации и обмена ключа , CryptDestroyKey, CryptSetKeyParam, CryptDuplicateKey в MS CryptoAPI 2.0 World Wide Web link


Функции работы с провайдером

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

Функции | Описание
CryptGetProviderDll | Функция CryptGetProviderDll получает путь до разделяемой библиотеки указанного провайдера.
CryptAcquireContextA | Функция CryptAcquireContextA получает дескриптор используемого в данный момент ключевого контейнера, находящегося в определенном CSP.
CryptAcquireContextW | Функция CryptAcquireContextW получает дескриптор используемого в данный момент ключевого контейнера, находящегося в определенном CSP.
CryptReleaseContext | Функция CryptReleaseContext удаляет дескриптор, получаемый функцией CryptAcquireContextA.
CryptSetProvParam | Функция CryptSetProvParam определяет атрибуты CSP.
CryptGetProvParam | Функция CryptGetProvParam получает атрибуты CSP.


CryptGetProviderDll

WINADVAPI BOOL WINAPI CryptGetProviderDll(
  LPCTSTR pszProvName,
  LPTSTR pszProvPath,
  DWORD * pcbProvPath
);

См. также:

Функции работы с провайдером


CryptAcquireContextA

Функция CryptAcquireContextA используется для получения дескриптора определенного ключевого контейнера, находящегося в определенном CSP. Возвращаемый дескриптор используется при вызове CryptoAPI функций, пользующихся выбранным CSP.

На первом шаге функция CryptAcquireContextA пытается найти CSP с характеристиками, описанными параметрами dwProvType и pszProvider . Если такой CSP найден, то функция в нем пытается найти ключевой контейнер с именем, совпадающим с именем, определенным параметром pszContainer . Для получения контекста и ключевого контейнера закрытого ключа, ассоциированного с открытым ключем сертификата, необходимо использовать функцию CryptAcquireCertificatePrivateKey.

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

Поддерживает только провайдеры типов PROV_GOST_94_DH и PROV_GOST_2001_DH. Принудительно устанавливает флаг CRYPT_SILENT.

WINADVAPI BOOL WINAPI CryptAcquireContextA(
  HCRYPTPROV * phProv,
  LPCSTR szContainer,
  LPCSTR szProvider,
  DWORD dwProvType,
  DWORD dwFlags
);

См. также:

Функции работы с провайдером , CryptGenKey, CryptGetProvParam, CryptReleaseContext, CryptAcquireContext в MS CryptoAPI 2.0 World Wide Web link


CryptAcquireContextW

Функция CryptAcquireContextW является unicode версией функции CryptAcquireContextA.

Поддерживает только провайдеры типов PROV_GOST_94_DH и PROV_GOST_2001_DH. Принудительно устанавливает флаг CRYPT_SILENT.

WINADVAPI BOOL WINAPI CryptAcquireContextW(
  HCRYPTPROV * phProv,
  LPCWSTR pwszContainer,
  LPCWSTR pwszProvider,
  DWORD dwProvType,
  DWORD dwFlags
);

См. также:

Функции работы с провайдером , CryptGenKey, CryptGetProvParam, CryptReleaseContext, CryptAcquireContext в MS CryptoAPI 2.0 World Wide Web link


CryptReleaseContext

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

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

Аналогична описанию в CryptoAPI, но счетчик ссылок пока не поддерживается.

WINADVAPI BOOL WINAPI CryptReleaseContext(
  HCRYPTPROV hProv,
  DWORD dwFlags
);

См. также:

Функции работы с провайдером , CryptAcquireContextA, CryptDestroyKey, CryptDestroyHash, CryptReleaseContext в MS CryptoAPI 2.0 World Wide Web link


CryptSetProvParam

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

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptSetProvParam(
  HCRYPTPROV hProv,
  DWORD dwParam,
  CONST BYTE * pbData,
  DWORD dwFlags
);

См. также:

Функции работы с провайдером , CryptAcquireContextA, CryptGetProvParam, CryptSetKeyParam, CryptSetProvParam в MS CryptoAPI 2.0 World Wide Web link


CryptGetProvParam

Функция CryptGetProvParam получает параметры, управляющие операциями CSP.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptGetProvParam(
  HCRYPTPROV hProv,
  DWORD dwParam,
  BYTE * pbData,
  DWORD * pdwDataLen,
  DWORD dwFlags
);

См. также:

Функции работы с провайдером , CryptAcquireContextA, CryptCreateHash, CryptDeriveKey, CryptGenKey, CryptGetKeyParam, CryptSetProvParam, CryptGetProvParam в MS CryptoAPI 2.0 World Wide Web link


Функции обработки хеша и цифровой подписи

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

Функции | Описание
CryptSetHashParam | Функция CryptSetHashParam устанавливает параметр объекта функции хеширования.
CryptGetHashParam | Функция CryptGetHashParam получает параметр объекта функции хеширования.
CryptCreateHash | Функция CryptCreateHash создает пустой объект функции хеширования.
CryptHashData | Функция CryptHashData осуществляет хеширования блока данных, добавляя его в определенный объект функции хеширования.
CryptHashSessionKey | Функция CryptHashSessionKey осуществляет хеширования сессионного ключя, добавляя его в определенный объект функции хеширования.
CryptDestroyHash | Функция CryptDestroyHash уничтожает объект функции хеширования.
CryptSignHash | Функция CryptSignHash подписывает определенный объект функции хеширования.
CryptVerifySignature | Функция CryptVerifySignature проверяет электронно-цифровую подпись, заданную дескриптором объекта функции хеширования.
CryptDuplicateHash | Функция CryptDuplicateHash дублирует объект функции хеширования.


CryptSetHashParam

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

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptSetHashParam(
  HCRYPTHASH hHash,
  DWORD dwParam,
  CONST BYTE * pbData,
  DWORD dwFlags
);

См. также:

Функции обработки хеша и цифровой подписи , CryptCreateHash, CryptDestroyHash, CryptGetHashParam, CryptSetKeyParam, CryptSignHash, CryptSetHashParam в MS CryptoAPI 2.0 World Wide Web link


CryptGetHashParam

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

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptGetHashParam(
  HCRYPTHASH hHash,
  DWORD dwParam,
  BYTE * pbData,
  DWORD * pdwDataLen,
  DWORD dwFlags
);

См. также:

Функции обработки хеша и цифровой подписи , CryptCreateHash, CryptDestroyHash, CryptGetKeyParam, CryptHashData, CryptHashSessionKey, CryptSetHashParam, CryptGetHashParam в MS CryptoAPI 2.0 World Wide Web link


CryptCreateHash

Функция CryptCreateHash начинает хеширование потока данных. Она создает и возвращает вызвавшему ее приложению дескриптор объекта функции хеширования CSP. Этот дескриптор используется при дальнейших вызовах функций CryptHashData и CryptHashSessionKey при работе с сессионными ключами и другими потоками данных.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptCreateHash(
  HCRYPTPROV hProv,
  ALG_ID Algid,
  HCRYPTKEY hKey,
  DWORD dwFlags,
  HCRYPTHASH * phHash
);

См. также:

Функции обработки хеша и цифровой подписи , CryptAcquireContextA, CryptDeriveKey, CryptDestroyHash, CryptGetHashParam, CryptHashData, CryptHashSessionKey, CryptSetHashParam, CryptSignHash, CryptVerifySignature, CryptCreateHash в MS CryptoAPI 2.0 World Wide Web link


CryptHashData

Функция CryptHashData добавляет данные в определенный объект функции хеширования. Эта функция, а также функция CryptHashSessionKey могут быть вызваны несколько раз для вычисления хеша длинного или дискретного потока данных.

Перед вызовом этой функции необходимо вызвать функцию CryptCreateHash для создания дескриптора объекта функции хеширования.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptHashData(
  HCRYPTHASH hHash,
  CONST BYTE * pbData,
  DWORD dwDataLen,
  DWORD dwFlags
);

См. также:

Функции обработки хеша и цифровой подписи , CryptCreateHash, CryptHashSessionKey, CryptSignHash, CryptHashData в MS CryptoAPI 2.0 World Wide Web link


CryptHashSessionKey

Функция CryptHashSessionKey вычисляет криптографический хеш сессионного ключа. Эта функция может быть вызвана несколько раз с одиноковым дескриптором хеша для вычисления хеша нескольких ключей. Вызовы функции CryptHashSessionKey могут чередоваться с вызовами функции CryptHashData.

Перед вызовом этой функции необходимо вызвать функцию CryptCreateHash для создания дескриптора объекта функции хеширования.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptHashSessionKey(
  HCRYPTHASH hHash,
  HCRYPTKEY hKey,
  DWORD dwFlags
);

См. также:

Функции обработки хеша и цифровой подписи , CryptCreateHash, CryptGenKey, CryptHashData, CryptHashSessionKey в MS CryptoAPI 2.0 World Wide Web link


CryptDestroyHash

Функция CryptDestroyHash уничтожает объект функции хеширования, ссылающийся на параметр hHash . После того, как объект функции хеширования уничтожен, он не может польше использоваться.

Рекомендуется осуществлять удаление объектов функции хеширования после завершения их использования в в целях обеспечения секретности.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptDestroyHash(
  HCRYPTHASH hHash
);

См. также:

Функции обработки хеша и цифровой подписи , CryptCreateHash, CryptHashData, CryptSignHash, CryptDestroyHash в MS CryptoAPI 2.0 World Wide Web link


CryptSignHash

Функция CryptSignHash подписывает данные. Из-за того, что все алгоритмы электронно-цифровой подписи являются асимметричными, а поэтому медленными, CryptoAPI не разрешает подписывать данные напрямую. Вместо этого, данные сначала хешируются, а затем функция CryptSignHash используется для подписи хеша.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptSignHash(
  HCRYPTHASH hHash,
  DWORD dwKeySpec,
  LPCSTR szDescription,
  DWORD dwFlags,
  BYTE * pbSignature,
  DWORD * pdwSigLen
);

См. также:

Функции обработки хеша и цифровой подписи , CryptCreateHash, CryptDestroyHash, CryptHashData, CryptHashSessionKey, CryptVerifySignature, CryptSignHash в MS CryptoAPI 2.0 World Wide Web link


CryptVerifySignature

Функция CryptVerifySignature проверяет электронно-цифровую подпись объекта функции хеширования.

Перед вызовом этой функции необходимо вызвать функцию CryptCreateHash для создания дескриптора объекта функции хеширования. Затем необходимо вызвать функции CryptHashData и CryptHashSessionKey для добавления данных и сессионных ключей в объект функции хеширования.

После завершения работы функции CryptVerifySignature , может быть вызвана только функция CryptDestroyHash, использующая дескриптор hHash .

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptVerifySignature(
  HCRYPTHASH hHash,
  CONST BYTE * pbSignature,
  DWORD dwSigLen,
  HCRYPTKEY hPubKey,
  LPCSTR szDescription,
  DWORD dwFlags
);

См. также:

Функции обработки хеша и цифровой подписи , CryptCreateHash, CryptDestroyHash, CryptHashData, CryptHashSessionKey, CryptSignHash, CryptVerifySignature в MS CryptoAPI 2.0 World Wide Web link


CryptDuplicateHash

Функция CryptDuplicateHash создает точную копию хеша до точки, в которой выполнено дублирование. Продублированный хеш включает в себя состояние хеша.

Хеш может быть создан шаг за шагом. Функция CryptDuplicateHash может быть использована для создания различных хешей, содержимое которых разное, но начинается с одного и того же.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptDuplicateHash(
  HCRYPTHASH hHash,
  DWORD * pdwReserved,
  DWORD dwFlags,
  HCRYPTHASH * phHash
);

См. также:

Функции обработки хеша и цифровой подписи , CryptDestroyHash, CryptDuplicateHash в MS CryptoAPI 2.0 World Wide Web link


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

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

Функции | Описание
CryptEncrypt | Функция CryptEncrypt зашифровывает блок исходного текста, используя определенный ключ зашифрования.
CryptDecrypt | Функция CryptDecrypt расшифровывает блок зашифрованного текста, используя определенный ключ расшифрования.


CryptEncrypt

Функция CryptEncrypt зашифровывает данные. Алгоритм, необходимый для зашифрования данных, определяется ключем, удерживаемым модулем CSP, и ссылается на параметр hKey .

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptEncrypt(
  HCRYPTKEY hKey,
  HCRYPTHASH hHash,
  BOOL Final,
  DWORD dwFlags,
  BYTE * pbData,
  DWORD * pdwDataLen,
  DWORD dwBufLen
);

См. также:

Функции зашифрования и расшифрования данных. , CryptCreateHash, CryptDecrypt, CryptGenKey, CryptGetHashParam, CryptGetKeyParam, CryptImportKey, CryptMsgOpenToEncode, CryptSignHash, CryptEncrypt в MS CryptoAPI 2.0 World Wide Web link


CryptDecrypt

Функция CryptDecrypt расшифровывает данные, предварительно зашифрованные при помощи функции CryptEncrypt.

Аналогична описанию в CryptoAPI

WINADVAPI BOOL WINAPI CryptDecrypt(
  HCRYPTKEY hKey,
  HCRYPTHASH hHash,
  BOOL Final,
  DWORD dwFlags,
  BYTE * pbData,
  DWORD * pdwDataLen
);

См. также:

Функции зашифрования и расшифрования данных. , CryptCreateHash, CryptEncrypt, CryptGenKey, CryptGetHashParam, CryptGetKeyParam, CryptImportKey, CryptMsgOpenToEncode, CryptSignHash, CryptVerifySignature, CryptDecrypt в MS CryptoAPI 2.0 World Wide Web link


Функции поддержки идентификатора объекта.

Эти функции обеспечивают поддержку идентификатора объекта.

Функции | Описание
CryptFindOIDInfo | Функция CryptFindOIDInfo использует определенный ключ для поиска информации об идентификаторе объекта.


CryptFindOIDInfo

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

Добавление и удаление идентификатора объекта осуществляется редактированием файла config.ini.

Новые идентификаторы объекта помещаются в список зарегестрированных идентификаторов объекта либо до, либо после предопределенных включений. Из-за того, что функция CryptFindOIDInfo возвращает первое включение в список, согласованное с критерием поиска, только что зарегистрированный идентификатор объекта помещается перед перед предопределенным включением идентификатора объекта с некоторым ключем, заменяющим предопределенное включение.

Аналогична описанию в CryptoAPI Список зарегистрированных OIDов хранится в ключе настроек "\\config\\Cryptography\\OID\\EncodingType \\CryptDllFindOIDInfo\\". (Для ОС UNIX, \config\ хранится в файле /opt/CPROcsp/etc/config.ini)

WINCRYPT32API PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(
  IN DWORD dwKeyType,
  IN void * pvKey,
  IN DWORD dwGroupId
);

См. также:

Функции поддержки идентификатора объекта. , CryptFindOIDInfo в MS CryptoAPI 2.0 World Wide Web link


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

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

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

Функции | Описание
CertOpenStore | Функция CertOpenStore открывает хранилище сертификатов, используя заданный тип провайдера.
CertDuplicateStore | Функция CertDuplicateStore дублирует дескриптор хранилища, увеличивая счетчик ссылок на единицу.
CertOpenSystemStore | Функция CertOpenSystemStore открывает системное хранилище сертификатов, основываясь на протоколе подсистемы.
CertCloseStore | Функция CertCloseStore закрывает дескриптор хранилища.


CertOpenStore

Функция CertOpenStore открывает хранилище сертификатов, используя заданный тип провайдера. В то время, как эта функция может открывать хранилище сертификатов с наибольшим количеством целей, функция CertOpenSystemStore предназначена для открытия наиболее часто используемых хранилищ. CertOpenStore требуется для более сложных действий и особых случаев.

Аналогична описанию в CryptoAPI. Для параметра lpszStoreProvider поддерживются только значения CERT_STORE_PROV_SYSTEM и CERT_STORE_PROV_MEMORY. Для параметра dwFlags поддерживаются только флаги CERT_STORE_OPEN_EXISTING_FLAG, CERT_STORE_CREATE_NEW_FLAG, и CERT_STORE_READONLY_FLAG.

WINCRYPT32API HCERTSTORE WINAPI CertOpenStore(
  IN LPCSTR lpszStoreProvider,
  IN DWORD dwEncodingType,
  IN HCRYPTPROV hCryptProv,
  IN DWORD dwFlags,
  IN const void * pvPara
);

См. также:

Функции работы c хранилищем сертификатов , CertCloseStore, CertGetCertificateContextProperty, CertGetCRLContextProperty, CryptMsgOpenToDecode, CertOpenStore в MS CryptoAPI 2.0 World Wide Web link


CertDuplicateStore

Функция CertDuplicateStore дублирует дескриптор хранилища, увеличивая счетчик ссылок на хранилища на единицу.

Аналогична описанию в CryptoAPI,

WINCRYPT32API HCERTSTORE WINAPI CertDuplicateStore(
  IN HCERTSTORE hCertStore
);

См. также:

Функции работы c хранилищем сертификатов , CertDuplicateStore в MS CryptoAPI 2.0 World Wide Web link


CertOpenSystemStore

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

Аналогична описанию в CryptoAPI,

WINCRYPT32API HCERTSTORE WINAPI CertOpenSystemStore(
  IN HCRYPTPROV hProv,
  IN LPCTSTR pszSubsystemProtocol
);

См. также:

Функции работы c хранилищем сертификатов , CertAddEncodedCertificateToStore, CertCloseStore, CertGetCertificateContextProperty, CertGetCRLContextProperty, CertOpenStore, CertOpenSystemStore в MS CryptoAPI 2.0 World Wide Web link


CertCloseStore

Функция CertCloseStore закрывает дескриптор хранилища сертификатов и уменьшает счетчик ссылок на хранилища на единицу. Функцию CertCloseStore необходимо вызывать после каждого успешного вызова функций CertOpenStore и CertDuplicateStore.

Аналогична описанию в CryptoAPI, Поддерживается только dwFlags == CERT_CLOSE_STORE_FORCE_FLAG,

WINCRYPT32API BOOL WINAPI CertCloseStore(
  IN HCERTSTORE hCertStore,
  DWORD dwFlags
);

См. также:

Функции работы c хранилищем сертификатов , CertOpenStore, CertDuplicateStore, CertFreeCertificateContext, CertFreeCRLContext, CryptReleaseContext, CertCloseStore в MS CryptoAPI 2.0 World Wide Web link


Функции обработки данных

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

Функции | Описание
CryptImportPublicKeyInfoEx | Функция CryptImportPublicKeyInfoEx преобразовывает и импортирует информацию об открытом ключе в провайдер и возвращает дескриптор открытого ключа. Дополнительные параметры (те, которые не устанавливаются функцией CryptImportPublicKeyInfo ) могут быть использованы вместо значений по умолчанию и добавлены в CERT_PUBLIC_KEY_INFO.
CryptImportPublicKeyInfo | Функция CryptImportPublicKeyInfo преобразовывает и импортирует информацию об открытом ключе в провайдер и возвращает дескриптор открытого ключа.
CryptExportPublicKeyInfoEx | Функция CryptExportPublicKeyInfoEx экспортирует информацию об открытом ключе, связанную с соответствующим секретным ключем провайдера. Эта фукция отличается от функции CryptExportPublicKeyInfo тем, что пользователь может устанавливать алгоритм открытого ключа, изменяя значения по умолчанию, предусмотренные CSP.
CryptExportPublicKeyInfo | Функция CryptExportPublicKeyInfo экспортирует информацию об открытом ключе, ассоциированную с соответствующим секретным ключем провайдера.
CertCompareCertificate | Функция CertCompareCertificate сравнивает два сертификата для того, чтобы определить, являются ли они идентичными.
CertCompareIntegerBlob | Функция CertCompareIntegerBlob сравнивает два целочисленных BLOBа.


CryptImportPublicKeyInfoEx

Функция CryptImportPublicKeyInfoEx импортирует информацию об открытом ключе в CSP и возвращает дескриптор открытого ключа. Дополнительные параметры, используемые вместо параметров по умолчанию, могут быть добавлены в структуру CERT_PUBLIC_KEY_INFO.

Аналогична описанию в CryptoAPI

WINCRYPT32API BOOL WINAPI CryptImportPublicKeyInfoEx(
  IN HCRYPTPROV hCryptProv,
  IN DWORD dwCertEncodingType,
  IN PCERT_PUBLIC_KEY_INFO pInfo,
  IN ALG_ID aiKeyAlg,
  IN DWORD dwFlags,
  IN OPTIONAL void * pvAuxInfo,
  OUT HCRYPTKEY * phKey
);

См. также:

Функции обработки данных , CryptExportPublicKeyInfoEx, CryptImportPublicKeyInfoEx в MS CryptoAPI 2.0 World Wide Web link


CryptImportPublicKeyInfo

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

Аналогична описанию в CryptoAPI

WINCRYPT32API BOOL WINAPI CryptImportPublicKeyInfo(
  IN HCRYPTPROV hCryptProv,
  IN DWORD dwCertEncodingType,
  IN PCERT_PUBLIC_KEY_INFO pInfo,
  OUT HCRYPTKEY * phKey
);

См. также:

Функции обработки данных , CryptExportPublicKeyInfo, CryptImportPublicKeyInfo в MS CryptoAPI 2.0 World Wide Web link


CryptExportPublicKeyInfoEx

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

Аналогична описанию в CryptoAPI

WINCRYPT32API BOOL WINAPI CryptExportPublicKeyInfoEx(
  IN HCRYPTPROV hCryptProv,
  IN DWORD dwKeySpec,
  IN DWORD dwCertEncodingType,
  IN LPSTR pszPublicKeyObjId,
  IN DWORD dwFlags,
  IN OPTIONAL void * pvAuxInfo,
  OUT PCERT_PUBLIC_KEY_INFO pInfo,
  IN OUT DWORD * pcbInfo
);

См. также:

Функции обработки данных , CryptImportPublicKeyInfoEx, CryptExportPublicKeyInfoEx в MS CryptoAPI 2.0 World Wide Web link


CryptExportPublicKeyInfo

Функция CryptExportPublicKeyInfo экспортирует информацию об открытом ключе, ассоциированную с соответствующим секретным ключем провайдера. Функция CryptExportPublicKeyInfoEx является улучшенной версией этой функции.

Аналогична описанию в CryptoAPI

WINCRYPT32API BOOL WINAPI CryptExportPublicKeyInfo(
  IN HCRYPTPROV hCryptProv,
  IN DWORD dwKeySpec,
  IN DWORD dwCertEncodingType,
  OUT PCERT_PUBLIC_KEY_INFO pInfo,
  IN OUT DWORD * pcbInfo
);

См. также:

Функции обработки данных , CryptImportPublicKeyInfo, CryptExportPublicKeyInfo в MS CryptoAPI 2.0 World Wide Web link


CertCompareCertificate

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

WINCRYPT32API BOOL WINAPI CertCompareCertificate(
  IN DWORD dwCertEncodingType,
  IN PCERT_INFO pCertId1,
  IN PCERT_INFO pCertId2
);

См. также:

Функции обработки данных , CertCompareCertificate в MS CryptoAPI 2.0 World Wide Web link


CertCompareIntegerBlob

Функция CertCompareIntegerBlob сравнивает два целочисленных BLOBа для определения того, представляют ли они собой два равных числа. До начала сравнения самые старшие байты со значением 0х00 удаляются из положительного числа. Положительное число здесь означает, что самый старший бит в следующем ненулевом байте сброшен.

Самые старшие байты со значением 0хFF удаляются из отрицательного числа. Отрицательное число здесь означает, что самый старший бит в следующем байте, не содержащим значения 0хFF, установлен. Такие действия обеспечивают однозначное представление целого числа.

BOOL WINAPI CertCompareIntegerBlob(
  PCRYPT_INTEGER_BLOB pInt1,
  PCRYPT_INTEGER_BLOB pInt2
);

См. также:

Функции обработки данных , CertCompareIntegerBlob в MS CryptoAPI 2.0 World Wide Web link


Низкоуровневые функции обработки криптографических сообщений

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

Функции | Описание
CryptMsgCalculateEncodedLength | Функция CryptMsgCalculateEncodedLength вычисляет длину закодированного криптографического сообщения.
CryptMsgOpenToEncode | Функция CryptMsgOpenToEncode открывает криптографическое сообщение для закодирования.
CryptMsgOpenToDecode | Функция CryptMsgOpenToDecode открывает криптографическое сообщение для раскодирования.
CryptMsgUpdate | Функция CryptMsgUpdate обновляет текст криптографического сообщения.
CryptMsgGetParam | Функция CryptMsgGetParam получает параметр после закодирования или раскодирования криптографического сообщения.
CryptMsgControl | Функция CryptMsgControl выполняет определенную контрольную функцию после последнего вызова функции CryptMsgUpdate для закодированного или раскодированного криптографического сообщения.
CryptMsgClose | Функция CryptMsgClose закрывает дескриптор криптографичекого сообщения.
CryptMsgDuplicate | Функция CryptMsgDuplicate дублирует дескриптор криптографического сообщения путем увеличения счетчика ссылок. В счетчике ссылок имеется раздел, в котором хранится срок действия сообщения.


CryptMsgCalculateEncodedLength

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

WINCRYPT32API DWORD WINAPI CryptMsgCalculateEncodedLength(
  IN DWORD dwMsgEncodingType,
  IN DWORD dwFlags,
  IN DWORD dwMsgType,
  IN void const * pvMsgEncodeInfo,
  IN OPTIONAL LPSTR pszInnerContentObjID,
  IN DWORD cbData
);

См. также:

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgOpenToEncode, CryptMsgCalculateEncodedLength в MS CryptoAPI 2.0 World Wide Web link


CryptMsgOpenToEncode

Функция CryptMsgOpenToEncode открывает криптографическое сообщение для закодирования и возвращает дескриптор открытого сообщения. Сообщение остается открытым до вызова функции CryptMsgClose.

WINCRYPT32API HCRYPTMSG WINAPI CryptMsgOpenToEncode(
  IN DWORD dwMsgEncodingType,
  IN DWORD dwFlags,
  IN DWORD dwMsgType,
  IN void const * pvMsgEncodeInfo,
  IN OPTIONAL LPSTR pszInnerContentObjID,
  IN OPTIONAL PCMSG_STREAM_INFO pStreamInfo
);

См. также:

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgClose, CryptMsgUpdate, CryptMsgGetParam, CryptMsgOpenToDecode, CryptMsgOpenToEncode в MS CryptoAPI 2.0 World Wide Web link


CryptMsgOpenToDecode

Функция CryptMsgOpenToDecode открывает криптографическое сообщение для раскодирования и возвращает дескриптор открытого сообщения. Сообщение остается открытым до вызова функции CryptMsgClose.

WINCRYPT32API HCRYPTMSG WINAPI CryptMsgOpenToDecode(
  IN DWORD dwMsgEncodingType,
  IN DWORD dwFlags,
  IN DWORD dwMsgType,
  IN HCRYPTPROV hCryptProv,
  IN OPTIONAL PCERT_INFO pRecipientInfo,
  IN OPTIONAL PCMSG_STREAM_INFO pStreamInfo
);

См. также:

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgClose, CryptMsgUpdate, CryptMsgGetParam, CryptMsgOpenToEncode, CryptMsgOpenToDecode в MS CryptoAPI 2.0 World Wide Web link


CryptMsgUpdate

Функция CryptMsgUpdate пополняет текст криптографического сообщения. Использование этой функции позволяет строить криптографическое сообщение шаг за шагом путем повторных вызовов функции CryptMsgUpdate . Добавленный текст сообщения является либо закодированным, либо раскодированным в зависимости от того, было ли сообщение открыто функцией CryptMsgOpenToEncode или функцией CryptMsgOpenToDecode.

WINCRYPT32API BOOL WINAPI CryptMsgUpdate(
  IN HCRYPTMSG hCryptMsg,
  IN const BYTE * pbData,
  IN DWORD cbData,
  IN BOOL fFinal
);

См. также:

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgGetParam, CryptMsgOpenToEncode, CryptMsgOpenToDecode, CryptMsgUpdate в MS CryptoAPI 2.0 World Wide Web link


CryptMsgGetParam

Функция CryptMsgGetParam получает параметр сообщения после того, как криптографическое сообщение было раскодировано или закодировано. Эта функция вызывается после последнего вызова функции CryptMsgUpdate.

WINCRYPT32API BOOL WINAPI CryptMsgGetParam(
  IN HCRYPTMSG hCryptMsg,
  IN DWORD dwParamType,
  IN DWORD dwIndex,
  OUT void * pvData,
  IN OUT DWORD * pcbData
);

См. также:

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgUpdate, CryptMsgOpenToDecode, CryptMsgOpenToEncode, CryptMsgGetParam в MS CryptoAPI 2.0 World Wide Web link


CryptMsgControl

Функция CryptMsgControl выполняет контрольное действие после того, как сообщение было раскодировано последним вызовом функции CryptMsgUpdate. Контрольные операции, обеспеченные этой функцией, используются при расшифровании, проверке электронно-цифровой подписи и хеша, а также при добавлении и удалении сертификатов, СОС, подписей и недостоверных атрибутов.

WINCRYPT32API BOOL WINAPI CryptMsgControl(
  IN HCRYPTMSG hCryptMsg,
  IN DWORD dwFlags,
  IN DWORD dwCtrlType,
  IN void const * pvCtrlPara
);

См. также:

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgControl в MS CryptoAPI 2.0 World Wide Web link


CryptMsgClose

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

WINCRYPT32API BOOL WINAPI CryptMsgClose(
  IN HCRYPTMSG hCryptMsg
);

См. также:

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgOpenToEncode, CryptMsgOpenToDecode, CryptMsgClose в MS CryptoAPI 2.0 World Wide Web link


CryptMsgDuplicate

Функция CryptMsgDuplicate дублирует дескриптор криптографического сообщения путем увеличения счетчика ссылок.

WINCRYPT32API HCRYPTMSG WINAPI CryptMsgDuplicate(
  IN HCRYPTMSG hCryptMsg
);

См. также:

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgClose, CryptMsgDuplicate в MS CryptoAPI 2.0 World Wide Web link


Высокоуровневые функции обработки криптографических сообщений

Высокоуровневые функции обработки криптографических сообщений объединяют низкоуровневые CryptoAPI функции в одну функцию для выполнения определенной задачи.

Функции | Описание
CryptSignMessage | Функция CryptSignMessage подписывает сообщение.
CryptVerifyMessageSignature | Функция CryptVerifyMessageSignature проверяет подписанное сообщение.
CryptVerifyDetachedMessageSignature | Функция CryptVerifyDetachedMessageSignature проверяет подписанное сообщение, содержащее отсоединенную (detached) подпись или подписи.
CryptEncryptMessage | Функция CryptEncryptMessage зашифровывает сообщение для получателя или для получателей.
CryptDecryptMessage | Функция CryptDecryptMessage расшифровывает определенное сообщение.


CryptSignMessage

Функция CryptSignMessage создает хеш определенного содержания, подписывает хеш и затем производит закодирование и текста исходного сообщения, и подписанного хеша.

WINCRYPT32API BOOL WINAPI CryptSignMessage(
  IN PCRYPT_SIGN_MESSAGE_PARA pSignPara,
  IN BOOL fDetachedSignature,
  IN DWORD cToBeSigned,
  IN const BYTE * rgpbToBeSigned,
  IN DWORD rgcbToBeSigned,
  OUT BYTE * pbSignedBlob,
  IN OUT DWORD * pcbSignedBlob
);

См. также:

Высокоуровневые функции обработки криптографических сообщений , CryptVerifyMessageSignature, CryptSignMessage в MS CryptoAPI 2.0 World Wide Web link


CryptVerifyMessageSignature

Функция CryptVerifyMessageSignature проверяет электронно-цифровую подпись подписанного сообщения.

WINCRYPT32API BOOL WINAPI CryptVerifyMessageSignature(
  IN PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
  IN DWORD dwSignerIndex,
  IN const BYTE * pbSignedBlob,
  IN DWORD cbSignedBlob,
  OUT BYTE OPTIONAL * pbDecoded,
  IN OUT OPTIONAL DWORD * pcbDecoded,
  OUT OPTIONAL PCCERT_CONTEXT * ppSignerCert
);

См. также:

Высокоуровневые функции обработки криптографических сообщений , CryptVerifyDetachedMessageSignature, CryptSignMessage, CryptVerifyMessageSignature в MS CryptoAPI 2.0 World Wide Web link


CryptVerifyDetachedMessageSignature

Функция CryptVerifyDetachedMessageSignature проверяет подписанное сообщение, содержащее отсоединенную (detached) подпись или подписи.

WINCRYPT32API BOOL WINAPI CryptVerifyDetachedMessageSignature(
  IN PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
  IN DWORD dwSignerIndex,
  IN const BYTE * pbDetachedSignBlob,
  IN DWORD cbDetachedSignBlob,
  IN DWORD cToBeSigned,
  IN const BYTE * rgpbToBeSigned,
  IN DWORD rgcbToBeSigned,
  OUT OPTIONAL PCCERT_CONTEXT * ppSignerCert
);

См. также:

Высокоуровневые функции обработки криптографических сообщений , CryptVerifyMessageSignature, CryptVerifyDetachedMessageSignature в MS CryptoAPI 2.0 World Wide Web link


CryptEncryptMessage

Функция CryptEncryptMessage зашифровывает и производит закодирование сообщения.

WINCRYPT32API BOOL WINAPI CryptEncryptMessage(
  IN PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  IN DWORD cRecipientCert,
  IN PCCERT_CONTEXT rgpRecipientCert,
  IN const BYTE * pbToBeEncrypted,
  IN DWORD cbToBeEncrypted,
  OUT BYTE * pbEncryptedBlob,
  IN OUT DWORD * pcbEncryptedBlob
);

См. также:

Высокоуровневые функции обработки криптографических сообщений , CryptEncryptMessage в MS CryptoAPI 2.0 World Wide Web link


CryptDecryptMessage

Функция CryptDecryptMessage производит раскодирование и расшифрование сообщения.

WINCRYPT32API BOOL WINAPI CryptDecryptMessage(
  IN PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
  IN const BYTE * pbEncryptedBlob,
  IN DWORD cbEncryptedBlob,
  OUT OPTIONAL BYTE * pbDecrypted,
  IN OUT OPTIONAL DWORD * pcbDecrypted,
  OUT OPTIONAL PCCERT_CONTEXT * ppXchgCert
);

См. также:

Высокоуровневые функции обработки криптографических сообщений , CryptDecryptMessage в MS CryptoAPI 2.0 World Wide Web link


Функции поиска удаленного объекта

Эти функции позволяют пользователю получать объект инфрастуктуры открытых ключей по заданному URL.

Функции | Описание
CryptRetrieveObjectByUrlA | Функция CryptRetrieveObjectByUrlA получает объект инфрастуктуры открытых ключей по заданному URL.
CryptRetrieveObjectByUrlW | Функция CryptRetrieveObjectByUrlW получает объект инфрастуктуры открытых ключей по заданному URL.


CryptRetrieveObjectByUrlA

Функция CryptRetrieveObjectByUrlA получает объект инфрастуктуры открытых ключей по заданному URL.

Поддерживает значения pszObjectOid только CONTEXT_OID_CERTIFICATE и CONTEXT_OID_CRL. Из флагов поддерживаются только CRYPT_CACHE_ONLY_RETRIEVAL, CRYPT_WIRE_ONLY_RETRIEVAL, CRYPT_DONT_CACHE_RESULT, CRYPT_RETRIEVE_MULTIPLE_OBJECTS. Аргументы hAsyncRetrieve, pCredentials, pvVerify, pAuxInfo игнорируются.

WINCRYPT32API BOOL WINAPI CryptRetrieveObjectByUrlA(
  IN LPCSTR pszUrl,
  IN LPCSTR pszObjectOid,
  IN DWORD dwRetrievalFlags,
  IN DWORD dwTimeout,
  OUT LPVOID * ppvObject,
  IN HCRYPTASYNC hAsyncRetrieve,
  IN OPTIONAL PCRYPT_CREDENTIALS pCredentials,
  IN OPTIONAL LPVOID pvVerify,
  IN OPTIONAL PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
);

См. также:

Функции поиска удаленного объекта , CryptRetrieveObjectByUrl в MS CryptoAPI 2.0 World Wide Web link


CryptRetrieveObjectByUrlW

Функция CryptRetrieveObjectByUrlW является unicode версией функции CryptRetrieveObjectByUrlA.

Поддерживает значения pszObjectOid только CONTEXT_OID_CERTIFICATE и CONTEXT_OID_CRL. Из флагов поддерживаются только CRYPT_CACHE_ONLY_RETRIEVAL, CRYPT_WIRE_ONLY_RETRIEVAL, CRYPT_DONT_CACHE_RESULT, CRYPT_RETRIEVE_MULTIPLE_OBJECTS. Аргументы hAsyncRetrieve, pCredentials, pvVerify, pAuxInfo игнорируются.

WINCRYPT32API BOOL WINAPI CryptRetrieveObjectByUrlW(
  IN LPCWSTR pwszUrl,
  IN LPCSTR pszObjectOid,
  IN DWORD dwRetrievalFlags,
  IN DWORD dwTimeout,
  OUT LPVOID * ppvObject,
  IN HCRYPTASYNC hAsyncRetrieve,
  IN OPTIONAL PCRYPT_CREDENTIALS pCredentials,
  IN OPTIONAL LPVOID pvVerify,
  IN OPTIONAL PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
);

См. также:

Функции поиска удаленного объекта , CryptRetrieveObjectByUrl в MS CryptoAPI 2.0 World Wide Web link