Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Alex19801  
#1 Оставлено : 24 июня 2017 г. 23:28:56(UTC)
Alex19801

Статус: Участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Femi  
#2 Оставлено : 27 июня 2017 г. 13:53:55(UTC)
Наталья Мовчан

Статус: Padawan

Группы: Администраторы
Зарегистрирован: 02.12.2010(UTC)
Сообщений: 1,381
Женщина
Российская Федерация
Откуда: Москва

Сказала «Спасибо»: 11 раз
Поблагодарили: 69 раз в 47 постах
Добрый день.
http://www.cryptopro.ru/ocsp/ocsp.srf не является службой штампов времени.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Alex19801  
#3 Оставлено : 27 июня 2017 г. 15:54:31(UTC)
Alex19801

Статус: Участник

Группы: Участники
Зарегистрирован: 31.03.2016(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Автор: Femi Перейти к цитате
Добрый день.
http://www.cryptopro.ru/ocsp/ocsp.srf не является службой штампов времени.


Добрый день, установил http://www.cryptopro.ru/tsp/tsp.srf но это не помогло.
У меня нет TSP клиента, отключил этот параметр, но при подписании все равно ошибка
Цитата:
Дополнительные сведения: Данные настройки для этого продукта повреждены. Обратитесь в службу поддержки.
Offline Alex19801  
#4 Оставлено : 28 июня 2017 г. 17:27:06(UTC)
Alex19801

Статус: Участник

Группы: Участники
Зарегистрирован: 31.03.2016(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Так секунду, главное это строка
oSigner.Certificate = Certificate
она идет практически в самом начале кода.
Этот пример взят с сайта Криптопро http://cpdn.cryptopro.ru...escomsamplesigndata.html
Есть те кто работает с CAdESCOM.CPSigner в VS + VB как вы думаете?
CPSigner представляет интерфейсы CAPICOM.Signer
http://cpdn.cryptopro.ru..._m_1_1_i_c_p_signer.html
а в CAPICOM.Signer свойство Certificate = Read/write
https://msdn.microsoft.c...us/library/aa387730.aspx
Offline Alex19801  
#5 Оставлено : 5 июля 2017 г. 20:27:14(UTC)
Alex19801

Статус: Участник

Группы: Участники
Зарегистрирован: 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
Offline Alex19801  
#6 Оставлено : 6 июля 2017 г. 0:16:59(UTC)
Alex19801

Статус: Участник

Группы: Участники
Зарегистрирован: 31.03.2016(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Попробовал подключить через пространство имен
Dim CPSigner : CPSigner = New CAdESCOM.CPSigner()
но CPSigner это тоже самое что и
oSigner = CreateObject("CAdESCOM.CPSigner")
обидно Brick wall
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.