Статус: Участник
Группы: Участники
Зарегистрирован: 31.03.2016(UTC) Сообщений: 12 Сказал(а) «Спасибо»: 2 раз
|
Помогите пожалуйста разобраться. Не получается присвоить сертификат в поле oSigner = CreateObject("CAdESCOM.CPSigner") oSigner.Certificate = CertificateЦитата:Дополнительные сведения: Член группы не найден. (Исключение из HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) Если не присваивать сертификат, то появляется окно выбора сертификатов, но после выбора сертификата, опять появляется ошибка подписи. sSignedData = oSignedData.Sign(oSigner, False)Возможно http://www.cryptopro.ru/ocsp/ocsp.srf не работает с тестовыми сертификатами полученными через https://www.cryptopro.ru/certsrv/certrqma.aspНо как тогда запустить код ниже, если кроме тестового сертификата ничего нет? Если заменить CAdESCOM на CAPICOM, то подпись и шифрование проходит успешно, но только в том случае, если убрать строку oSigner.Certificate = Certificate Тогда открывается окно с выбором сертификата, после этого все подписывается и шифруется. Код:
Module Module1
'Option Explicit On
Const CAPICOM_CURRENT_USER_STORE = 2
Const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1
Const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6
Const CAPICOM_PROPID_KEY_PROV_INFO = 2
Function GetSignerCertificate(Thumbprint)
GetSignerCertificate = Nothing
Dim oCert
Dim oStore
Dim Certificates
oStore = CreateObject("CAdESCOM.Store")
oStore.Open(CAPICOM_CURRENT_USER_STORE)
Certificates = oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,
CAPICOM_PROPID_KEY_PROV_INFO)
For Each oCert In oStore.Certificates
If oCert.Thumbprint = Thumbprint Then 'SerialNumber
GetSignerCertificate = oCert
Exit For
End If
Next
End Function
Sub Main()
Dim oSigner
oSigner = CreateObject("CAdESCOM.CPSigner")
' Укажите правильный серийный номер сертификата.
Dim Thumbprint : Thumbprint = "F46D05ED009190AC35F85308371F2CFD73672917"
' Укажите правильный адрес службы штампов времени.
Dim sTSAAddress : sTSAAddress = "https://www.cryptopro.ru/ocsp/ocsp.srf"
Dim Certificate : Certificate = GetSignerCertificate(Thumbprint)
oSigner.Certificate = Certificate
oSigner.TSAAddress = sTSAAddress
Dim oSignedData
Dim oSettings
oSignedData = CreateObject("CAdESCOM.CadesSignedData")
oSignedData.Content = "Some very significant message"
Dim sSignedData
sSignedData = oSignedData.Sign(oSigner, False)
Console.WriteLine(sSignedData)
Console.ReadLine()
End Sub
End Module
На JavaScript все проходит нормально, текст шифруется и подписывается Код:
var oSigner = cadesplugin.CreateObject("CAdESCOM.CPSigner")
oSigner.Certificate = oCertificate
Отредактировано пользователем 24 июня 2017 г. 23:43:41(UTC)
| Причина: Не указана
|
|
|
|
Статус: Padawan
Группы: Администраторы
Зарегистрирован: 02.12.2010(UTC) Сообщений: 1,381 Откуда: Москва Сказала «Спасибо»: 11 раз Поблагодарили: 69 раз в 47 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 31.03.2016(UTC) Сообщений: 12 Сказал(а) «Спасибо»: 2 раз
|
Автор: Femi Добрый день, установил http://www.cryptopro.ru/tsp/tsp.srf но это не помогло. У меня нет TSP клиента, отключил этот параметр, но при подписании все равно ошибка Цитата:Дополнительные сведения: Данные настройки для этого продукта повреждены. Обратитесь в службу поддержки.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 31.03.2016(UTC) Сообщений: 12 Сказал(а) «Спасибо»: 2 раз
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 31.03.2016(UTC) Сообщений: 12 Сказал(а) «Спасибо»: 2 раз
|
В общем код верный, но в VS Basic 2015 это не работает полностью, CAdESCOM.CPSigner не дает редактировать поле Certificate. Есть теория о том что нужно правильно подключить http://cpdn.cryptopro.ru...des/cades-com-usage.htmlно погуглив не нашол как соеденить Basic с cadescom DllImport cadescom.dll нужно в ручную искать и подключать нужные функции. Или можно подключить все функции разом? Код:Imports System
Imports System.Runtime.InteropServices
Module Example
' Use DllImport to import the Win32 MessageBox function.
<DllImport("user32.dll", CharSet:=CharSet.Unicode)> _
Function MessageBox(ByVal hwnd As IntPtr, ByVal t As String, ByVal caption As String, ByVal t2 As UInt32) As Integer
End Function
Sub Main()
' Call the MessageBox function using platform invoke.
MessageBox(New IntPtr(0), "Hello World!", "Hello Dialog", 0)
End Sub
End Module
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 31.03.2016(UTC) Сообщений: 12 Сказал(а) «Спасибо»: 2 раз
|
Попробовал подключить через пространство имен Dim CPSigner : CPSigner = New CAdESCOM.CPSigner() но CPSigner это тоже самое что и oSigner = CreateObject("CAdESCOM.CPSigner") обидно
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close