Использование CAPICOM
[CAPICOM — это 32-разрядный компонент, доступный для использования в следующих операционных системах: Windows Server 2008, Windows Vista и Windows XP. Вместо этого используйте платформа .NET Framework для реализации функций безопасности. Дополнительные сведения см. в статье Альтернативы использованию CAPICOM.]
В этом разделе содержатся сценарии, использующие процедуры CAPICOM.
Создание цифровых подписей и обволакивание сообщений с помощью CAPICOM выполняется с помощью шифрования инфраструктуры открытых ключей (PKI) и может выполняться только в том случае, если подписыватель или пользователь, расшифровывая конвертированное сообщение, имеет доступ к сертификату с доступным связанным закрытым ключом. Чтобы расшифровать конвертированное сообщение, сертификат с доступом к закрытому ключу должен находиться в хранилище MY.
Обсуждения и примеры сценариев на основе задач разделены на следующие разделы:
- Альтернативы использованию CAPICOM
- Подготовка к использованию CAPICOM
- Шифрование и расшифровка данных
- Подписывание данных и проверка цифровых подписей
- Использование хранилищ сертификатов
- Создание и получение сообщений о конвертированных данных
Подписывание документа
[CAPICOM — это 32-разрядный компонент, доступный для использования в следующих операционных системах: Windows Server 2008, Windows Vista и Windows XP. Вместо этого используйте платформа .NET Framework для реализации функций безопасности. Дополнительные сведения см. в разделе Альтернативы использованию CAPICOM.]
Стандартное использование подписи — подписывать текст и сохранять его в файл. Подписанный текст также можно отправить через Интернет. Подписанное сообщение имеет формат PKCS 7.
В этом примере подпись создается для отсоединяемого содержимого (если содержимое не входит в сигнатуру). Отсоединенную подпись чаще всего используют, если получатель подписи имеет копию точного подписанного текста. В приведенном ниже примере исходное сообщение и отсоединенная подпись записываются в отдельные файлы.
При любой ошибке CAPICOM возвращается отрицательное десятичное значение Err.Number . Дополнительные сведения см. в разделе CAPICOM_ERROR_CODE. Сведения о положительных десятичных значениях Err.Number см. в разделе Winerror.h.
При создании подписи используется закрытый ключ подписывателя. Подпись может быть создана только в том случае, если доступен сертификат подписавшего с соответствующим закрытым ключом. В этом примере метода Sign не указывается подписыватель. Если подписыватель не указан и сертификат в CAPICOM_MY_STORE не имеет связанного закрытого ключа, метод Sign завершается ошибкой. Если один и только один сертификат в CAPICOM_MY_STORE имеет связанный закрытый ключ, этот сертификат и его закрытый ключ используются для создания подписи. Если несколько сертификатов в хранилище CAPICOM_MY_STORE имеют связанный закрытый ключ, появится диалоговое окно, и пользователь может выбрать сертификат, который будет использоваться для создания подписи.
Когда веб-приложение использует метод Sign , всегда отображается запрос и требуется разрешение пользователя перед созданием подписи, которая использует закрытый ключ этого подписывавшего.
Sub Signfile(ByVal InputFileName As String, _ ByVal OutputFileName As String) On Error GoTo ErrorHandler Dim c As String Dim s As String Dim MyStore As New Store Dim Signobj As New SignedData Dim Signer As New Signer ' NOTE: the name 'Attribute' is not a unique name ' and must be preceded by 'CAPICOM.' Dim SigningTime As New CAPICOM.Attribute ' Open the MY store and retrieve the first certificate from the ' Store. The signing operation will only work if this ' certificate is valid and has access to the signer's private key. MyStore.Open CAPICOM_CURRENT_USER_STORE, "MY", _ CAPICOM_STORE_OPEN_READ_ONLY Signer.Certificate = MyStore.Certificates.Item(1) ' Open the input file and read the content to be signed from ' the file. Open App.Path & "\" & InputFileName For Input As #1 Input #1, c Close #1 ' Set the content to be signed. Signobj.Content = c ' Save the time the data was signed as a signer attribute. SigningTime.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME SigningTime.Value = Now Signer.AuthenticatedAttributes.Add SigningTime ' Sign the content using the signer's private key. ' The 'True' parameter indicates that the content signed is not ' included in the signature string. s = Signobj.Sign(Signer, True) Open App.Path & "\" & OutputFileName For Output As #2 Write #2, s Close #2 MsgBox ("Signature done - Saved to file" & OutputFileName) Set Signobj = Nothing Set MyStore = Nothing Set Signer = Nothing Set SigningTime = Nothing Exit Sub ErrorHandler: If Err.Number > 0 Then MsgBox ("Visual Basic error found:" & Err.Description) Else MsgBox ("CAPICOM error found : " & Err.Number) End If End Sub
Справочник по CAPICOM
[CAPICOM — это 32-разрядный компонент, доступный для использования в следующих операционных системах: Windows Server 2008, Windows Vista и Windows XP. Вместо этого используйте платформа .NET Framework для реализации функций безопасности. Дополнительные сведения см. в статье Альтернативы использованию CAPICOM.]
COM-клиент CAPICOM предоставляет службы, позволяющие разработчикам приложений добавлять в приложения безопасность на основе шифрования . CryptoAPI включает функции для проверки подлинности с помощью цифровых подписей, для обволакивающих сообщений, а также для шифрования и расшифровки данных.
Категория | Описание |
---|---|
Объекты хранилища сертификатов | Объекты, доступные для использования хранилищ сертификатов и сертификатов в этих хранилищах. |
Объекты цифровой подписи | Объекты, используемые для цифровой подписи данных и проверки цифровых подписей. |
Объекты данных в оболочке | Объекты, используемые для создания сообщений с запечатанными данными для обеспечения конфиденциальности и расшифровки данных в конвертированных сообщениях. |
Объекты шифрования данных | Объекты, используемые для шифрования данных и расшифровки зашифрованных данных. |
Вспомогательные объекты | Объекты, используемые для изменения поведения по умолчанию и управления сертификатами, хранилищами сертификатов и сообщениями пользовательского интерфейса. |
Интерфейсы взаимодействия | Интерфейсы, позволяющие производным от CryptoAPI работать вместе с CAPICOM 2.0. |
Типы перечисления | Типы перечисления, используемые с CAPICOM. |
Объекты хранилища сертификатов
Следующие объекты работают с хранилищами сертификатов и сертификатами в этих хранилищах. CAPICOM поддерживает использование хранилищ сертификатов текущего пользователя, локального компьютера, памяти и Active Directory.
Объект | Описание |
---|---|
Сертификат | Один цифровой сертификат. |
CertificatePolicies | Коллекция объектов PolicyInformation . |
Сертификаты | Коллекция объектов Certificate . |
CertificateStatus | Предоставляет сведения о состоянии сертификата. |
Цепи | Создает и проверяет цепочку проверки сертификатов на основе цифрового сертификата. |
ExtendedProperties | Представляет коллекцию объектов ExtendedProperty . |
ExtendedProperty | Представляет расширенное свойство Майкрософт. |
Расширение | Представляет одно расширение сертификата. |
Расширения | Представляет коллекцию объектов Extension . |
PrivateKey | Представляет закрытый ключ. |
PublicKey | Представляет открытый ключ в объекте Certificate . |
Магазин | Предоставляет свойства и методы для выбора, управления и использования хранилищ сертификатов и сертификатов в этих хранилищах. |
Шаблон | Представляет шаблон расширения сертификата. |
Объекты цифровой подписи
Следующие объекты экспортируются в данные цифровой подписи и для проверки цифровых подписей.
Объект | Описание |
---|---|
SignedCode | Предоставляет функциональные возможности для подписывания содержимого цифровой подписью Authenticode. |
SignedData | Объект, используемый для подписывания данных и проверки подписи на подписанных данных. |
Автор подписи | Сведения об одном подписании данных, включая сертификат подписывающего. |
Подписыватели | Коллекция объектов Signer . |
Объекты данных в оболочке
Следующие объекты экспортируются для создания сообщений с запечатанными данными для обеспечения конфиденциальности и расшифровки данных в конвертированных сообщениях.
Объект | Описание |
---|---|
EnvelopedData | Объекты, используемые для создания, отправки и получения запечатанных данных. Зашифрованные данные шифруются таким образом, что только предполагаемые получатели могут расшифровать их. |
Recipients | Коллекция объектов Certificate предполагаемых получателей конвертированного сообщения. |
Объекты шифрования данных
Следующий объект экспортируется для шифрования произвольных данных для обеспечения конфиденциальности и расшифровки зашифрованных данных.
Объект | Описание |
---|---|
EncryptedData | Объекты, используемые для шифрования данных. Зашифрованные данные в объекте EncryptedData можно расшифровать. |
Вспомогательные объекты
Следующие объекты экспортируются для изменения поведения других объектов по умолчанию, а также для управления сертификатами, хранилищами сертификатов и сообщениями.
Объект | Описание |
---|---|
Алгоритм | Задает алгоритм и длину ключа для использования в криптографических операциях. |
attribute | Предоставляет одну часть добавленных сведений о подписи, например время подписи. |
Атрибуты | Коллекция объектов Attribute . |
BasicConstraints | Предоставляет доступ только для чтения к основным ограничениям на использование сертификата. |
EKU | Предоставляет доступ к свойствам EKU сертификатов. |
EKU | Коллекция объектов EKU . |
EncodedData | Представляет блок закодированных данных. |
ExtendedKeyUsage | Предоставляет доступ только для чтения к свойствам расширенного использования ключа сертификатов. |
HashedData | Предоставляет функциональные возможности для применения хэш-алгоритма к строке. |
KeyUsage | Предоставляет доступ только для чтения к свойствам использования ключей сертификатов. |
OID | Представляет идентификатор объекта, используемый несколькими свойствами CAPICOM. |
Идентификаторы OID | Представляет коллекцию объектов OID . |
PolicyInformation | Предоставляет доступ к идентификаторам OID политики расширения. |
Квалификатор | Представляет указатель заявления о сертификации (CPS) или квалификатор уведомления пользователя. |
Квалификаторы | Представляет коллекцию квалификаторов. |
Параметры | Включает или отключает диалоговые окна для запроса удостоверения подписателя или отправителя, если это удостоверение не указано. |
Служебные программы | Предоставляет функциональные возможности для распространенных задач. |
Интерфейсы взаимодействия
Следующие интерфейсы позволяют производным от CryptoAPI работать вместе с CAPICOM 2.0.
Интерфейс | Описание |
---|---|
ICertContext | Предоставляет доступ к контексту объекта сертификата CAPICOM X.509v3. Этот контекст позволяет использовать сертификат CAPICOM в других производных от CryptoAPI. |
ICertStore | Предоставляет доступ к контексту объекта CAPICOM Store . Этот контекст позволяет использовать хранилище сертификатов CAPICOM в других производных от CryptoAPI. |
IChainContext | Предоставляет доступ к контексту объекта CAPICOM Chain . Этот контекст позволяет использовать цепочку доверия сертификатов CAPICOM в других производных от CryptoAPI. |
Типы перечисления
CAPICOM определяет следующие типы перечисления:
При подготовке материала использовались источники:
https://learn.microsoft.com/ru-ru/windows/win32/seccrypto/using-capicom
https://learn.microsoft.com/ru-ru/windows/win32/seccrypto/signing-a-document
https://learn.microsoft.com/ru-ru/windows/win32/seccrypto/capicom-reference