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

Уведомление

Icon
Error

5 Страницы<1234>»
Опции
К последнему сообщению К первому непрочитанному
Offline mil  
#11 Оставлено : 17 июня 2008 г. 14:45:38(UTC)
mil

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

Группы: Участники
Зарегистрирован: 04.06.2008(UTC)
Сообщений: 23
Откуда: Москва

Добрый день.

Функция, GetSignerCertificate(...) приведенная в примере,
не типизирована. На свою беду, я предположил, что она возвращает CAPICOM.Certificate
был не прав.

Алексей Милюшков

Function GetSignerCertificate(SerialNumber)
Set GetSignerCertificate = Nothing
Dim oCert
Dim oStore
Set oStore = CreateObject("CAPICOM.Store")
oStore.Open CAPICOM_CURRENT_USER_STORE
For Each oCert In oStore.Certificates
If oCert.SerialNumber = SerialNumber Then
Set GetSignerCertificate = oCert
Exit For
End If
Next
End Function

Offline mil  
#12 Оставлено : 17 июня 2008 г. 20:41:56(UTC)
mil

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

Группы: Участники
Зарегистрирован: 04.06.2008(UTC)
Сообщений: 23
Откуда: Москва

Привет еще раз.

История похоже будет иметь продолжение.
Добрался до проверки подписи.

Подписи в имеющейся программе хранятся в ASN1 формате.
Соответсвенно подпись, выданную CAdESCOM пришлось разкодировать из BASE64.
Теперь есть ошибка при проверке подписи.
Код ошибки -2147024894 !!! ДРУГОЙ
Текст ошибки тот же Automation Error
Попробовал обратно закодировать в BASE64, не помогло.
Взял файл подписанный КриптоАРМ, тоже не помогло.

Наученный прошлым опытом, функцию LoadFile(...) из примера взял as is
код примера вроде тоже не модифицировал.
Вот мой код.

Dim oSignedData
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
Dim Message: Message = LoadFile("c:\temp\Стартовая_35.xls.sig")
oSignedData.Verify Message, False

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

Вопрос.
Какие форматы принимает метод oSignedData.Verify(...) ?

Алексей Милюшков.
Offline Павел Смирнов  
#13 Оставлено : 18 июня 2008 г. 11:50:12(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
На этот раз код ошибки осмысленный - "The system cannot find the file specified."
Попробуйте запустить параллельно DebugView. Нам известна ошибка, возникающая при включённом трейсе и отсутствии сбора этого трейса.

Метод Verify принимает и бинарные данные, и base64, и PEM (base64 с заголовками).
Техническую поддержку оказываем тут.
Наша база знаний.
Offline mil  
#14 Оставлено : 18 июня 2008 г. 14:19:25(UTC)
mil

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

Группы: Участники
Зарегистрирован: 04.06.2008(UTC)
Сообщений: 23
Откуда: Москва

Доброе утро

Сделал имя фаила предельно простым, заодно проверил
файл командой dir + то что у меня в исходнике.
Файл размером 13 748 байт определенно есть.

При включенном DebugView код ошибки -2146881278
Если DebugView не запущен код ошибки -2147024894

лог от DebugView:
00000000 10:00:22 [2864] cades.dll: {4020} /DllMain/ cades.cpp(5385) : hInstance=6E000000, dwReason=2 lpReserved=0
00000001 10:00:22 [2864] cades.dll: {4024} /DllMain/ cades.cpp(5385) : hInstance=6E000000, dwReason=2 lpReserved=0
00000002 10:00:22 [2864] cades.dll: {3944} /DllMain/ cades.cpp(5385) : hInstance=6E000000, dwReason=2 lpReserved=0
00000003 10:00:28 [2864] cades.dll: {2868} /CadesVerifyMessage/ cades.cpp(3841) : (pVerifyPara=0x0013EE24, dwSignerIndex=0, pbSignedBlob=0x078A5008, cbSignedBlob=27496, ppDecodedBlob=0x0013EE64, ppVerificationInfo=0x0013EE48)
00000004 10:00:28 [2864] cades.dll: {2868} /CadesVerifyMessageImpl/ cades.cpp(3706) : Last win32 error thrown as exception
00000005 10:00:28 [2864] cades.dll: {2868} /CadesVerifyMessage/ cades.cpp(3854) : CAtlException, m_hr=0x80093102
00000006 10:00:28 [2864] cades.dll: {2868} /CadesVerifyMessage/ cades.cpp(3864) : (res=0, GetLastError=0x80093102
00000007 10:00:28 [2864] cades.dll: {2868} /CadesFreeVerificationInfo/ cades.cpp(3918) : (pVerificationInfo=0x00000000)
00000008 10:00:28 [2864] cades.dll: {2868} /CadesFreeVerificationInfo/ cades.cpp(3937) : (res=1, GetLastError=0x80093102
00000009 10:01:02 [2864] cades.dll: {4024} /DllMain/ cades.cpp(5385) : hInstance=6E000000, dwReason=3 lpReserved=0
00000010 10:01:02 [2864] cades.dll: {3944} /DllMain/ cades.cpp(5385) : hInstance=6E000000, dwReason=3 lpReserved=0
00000011 10:01:03 [2864] cades.dll: {4020} /DllMain/ cades.cpp(5385) : hInstance=6E000000, dwReason=3 lpReserved=0

Алексей Милюшков.
Offline Павел Смирнов  
#15 Оставлено : 18 июня 2008 г. 14:48:15(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Ошибка 0x80093102 (-2146881278 ): ASN1 unexpected end of data.
Очевидно, данные поданы в неправильной кодировке.

Обратите внимание, что при чтении бинарного файла функцией из примера Вы получите юникодную строку. При этом вы обязательно получите ту ошибку, которую сейчас мы наблюдаем. Для правильного чтения бинарного файла можно воспользоваться средствами языка Visual Basic. С помощью FileSystemObject этого проделать не удастся.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline mil  
#16 Оставлено : 20 июня 2008 г. 14:46:34(UTC)
mil

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

Группы: Участники
Зарегистрирован: 04.06.2008(UTC)
Сообщений: 23
Откуда: Москва

Доброе утро.

Спасибо за помощь, по предыдущим вопросам.
Подписание и проверка, в данный момент работают.

Хитрость в том, что для подписания я читаю файл в UNICODE, а для
проверки читаю в raw bytes. При попытке подписать файл второй раз,
SignedStrBase64 = SD.CoSign(TheSigner, False)
к сожалению получил "The message had not been signed"
что в принципе понятно, так как проверка в UNICODE не заработала.

Вопросы:
- Как подписать файл второй, присоединенной подписью?
- Насколько я понял, без DebugView на новом PC не заработает, какие сроки мне обещать начальству?

Алексей Милюшков.
Offline Павел Смирнов  
#17 Оставлено : 20 июня 2008 г. 15:03:13(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Первый вопрос не очень понятен. CoSign работает штатно после вызова метода Verify:

Код:
SignedData.Verify Message, bDetached, VerifyFlag
NewMessage = SignedData.CoSign(Signer, bDetached)


По второму вопросу - попробуйте удалить настройки трейсинга из реестра.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline mil  
#18 Оставлено : 23 июня 2008 г. 15:00:06(UTC)
mil

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

Группы: Участники
Зарегистрирован: 04.06.2008(UTC)
Сообщений: 23
Откуда: Москва

Доброе утро.

Извините за назойливость, но иногда проще спросить.

Имею:
+ Работают режимы проверки, подписания на одном PC
- Попытался перенести проект на другой PC получил ошибку:
-2147417848 (80010108) The object invoked has disconnected from its clients.
При первом запуске КриптоПро прочитало приватный ключ, при втором нет.
Одновременно на другом PC работает. Различия:
o Windows XP / Windows 2000
o Есть коды DebugView в реестре / их нет
o Может быть проверка заработает?
o Может быть надо специально регистрировать cades.dll (хотя ключ был прочитан)?
o Доступ OCSP проверял собственным софтом, может не заработает через OCSP util ?
o Что то еще, что я пока не вижу.

Естественно, я буду потихоньку проверять все пункты, но тем не меннее
Вопрос:
Вышеуказанный код ошибки имеет стандартную причину ? Или надо смотреть конкретный случай?

В любом случае спасибо, буду потихоньку проверять весь список.

Алексей Милюшков.
Offline Павел Смирнов  
#19 Оставлено : 23 июня 2008 г. 15:26:12(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Раньше с такой ошибкой не сталкивались. Как на этом ПК устанавливался CAdESCOM? Существует всего два штатных поддерживаемых способа: пакет cadescom.msi и модуль слияния cadescom.msm, подключаемый к другому установочному пакету Windows Installer.

P.S. Если есть подозрение на работу с OCSP или TSP - обязательно проверяйте с помощью соответствующих утилит: ocsputil или tsputil.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline mil  
#20 Оставлено : 23 июня 2008 г. 21:26:14(UTC)
mil

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

Группы: Участники
Зарегистрирован: 04.06.2008(UTC)
Сообщений: 23
Откуда: Москва

При ближайшем рассмотрении выяснилось:

Проблему можно сформулировать проще. В следующей конфигурации не работает TSPutil или OCSPutil (что удобнее)
- Windows 2000 Server English
- Crypto Pro 3.0 rus kc1

Причина: нет возможности установить сертификат сервиса, те сертификат импортируется но TSPutil его не находит

Для воспроизведения ошибки можно обратиться на сервис меток времени по http://uc.mgr.ru/tsp/tsp.srf
Метка времени будет получена, но при ее просмотре будет видна проблема с сертификатом.

Пока у меня нет уверенности, как решать эту проблему, возможно это BUG report для TSPutil.

Алексей Милюшков.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
5 Страницы<1234>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.