Статус: Участник
Группы: Участники
Зарегистрирован: 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
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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(...) ?
Алексей Милюшков.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
На этот раз код ошибки осмысленный - "The system cannot find the file specified." Попробуйте запустить параллельно DebugView. Нам известна ошибка, возникающая при включённом трейсе и отсутствии сбора этого трейса.
Метод Verify принимает и бинарные данные, и base64, и PEM (base64 с заголовками). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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
Алексей Милюшков.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Ошибка 0x80093102 (-2146881278 ): ASN1 unexpected end of data. Очевидно, данные поданы в неправильной кодировке.
Обратите внимание, что при чтении бинарного файла функцией из примера Вы получите юникодную строку. При этом вы обязательно получите ту ошибку, которую сейчас мы наблюдаем. Для правильного чтения бинарного файла можно воспользоваться средствами языка Visual Basic. С помощью FileSystemObject этого проделать не удастся. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.06.2008(UTC) Сообщений: 23 Откуда: Москва
|
Доброе утро.
Спасибо за помощь, по предыдущим вопросам. Подписание и проверка, в данный момент работают.
Хитрость в том, что для подписания я читаю файл в UNICODE, а для проверки читаю в raw bytes. При попытке подписать файл второй раз, SignedStrBase64 = SD.CoSign(TheSigner, False) к сожалению получил "The message had not been signed" что в принципе понятно, так как проверка в UNICODE не заработала.
Вопросы: - Как подписать файл второй, присоединенной подписью? - Насколько я понял, без DebugView на новом PC не заработает, какие сроки мне обещать начальству?
Алексей Милюшков.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Первый вопрос не очень понятен. CoSign работает штатно после вызова метода Verify: Код:SignedData.Verify Message, bDetached, VerifyFlag
NewMessage = SignedData.CoSign(Signer, bDetached)
По второму вопросу - попробуйте удалить настройки трейсинга из реестра. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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 Что то еще, что я пока не вижу.
Естественно, я буду потихоньку проверять все пункты, но тем не меннее Вопрос: Вышеуказанный код ошибки имеет стандартную причину ? Или надо смотреть конкретный случай?
В любом случае спасибо, буду потихоньку проверять весь список.
Алексей Милюшков.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Раньше с такой ошибкой не сталкивались. Как на этом ПК устанавливался CAdESCOM? Существует всего два штатных поддерживаемых способа: пакет cadescom.msi и модуль слияния cadescom.msm, подключаемый к другому установочному пакету Windows Installer.
P.S. Если есть подозрение на работу с OCSP или TSP - обязательно проверяйте с помощью соответствующих утилит: ocsputil или tsputil. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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. Алексей Милюшков.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close