Статус: Участник
Группы: Участники
Зарегистрирован: 28.04.2008(UTC) Сообщений: 11
|
Kirill Sobolev написал:"poltora" написал:получается, что я указываю не проверять на отзыв сертификат и получаю ошибку - "сертификат не удалось проверить на отзыв" ??? а с чего Вы взяли что в 1м примере у вас ошибка проверки на отзыв? я говорил уже про 3тий пример :) Kirill Sobolev написал:"poltora" написал:или у меня неверный сертификат. или я проверяю неверно. я думаю у вас просто нет локально установленного CRL понятно. т.е. сертификат будет считаться валидным, если он пройдет все проверки, в том числе и на отозванность. значит, если нам ненужно проверять на отозванность - мы не должны опираться на Certificate.IsValid() а сами определить по Certificate.IsValid().CheckFlag(...).Result() тот нужный нам уровень "валидности"... вернусь к первому примеру. проверка на валидность тут же сгенерированной подписи не проходит - даже если 2ым параметром в вызове SignedData.Sign передать false не потому ли проверка на валидность ПОДПИСИ не успешна, потому что, сертификат не является валидным, (т.к., по всей вероятности, он не может быть проверен по спискам отзывов)? хотя я и указываю CAPICOM_VERIFY_SIGNATURE_ONLY в вызове SignedData.Verify() в чем може быть причина не валидности тут же сгенерированной подписи. разве такое вообще возможно?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Раз проверка проходит для кода на одном скрипте и не проходит для кода на другом - то видимо проблема не в сертификатах, а именно в этом коде. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.04.2008(UTC) Сообщений: 11
|
Kirill Sobolev написал:Раз проверка проходит для кода на одном скрипте и не проходит для кода на другом - то видимо проблема не в сертификатах, а именно в этом коде. как видно из примеров - оба кода идеентичны друг другу. они лишь написаны на разных языках. Kirill Sobolev написал:я думаю у вас просто нет локально установленного CRL это скорее всего так и возможно в этом причина долгого срабатывания верификации подписи - возможный таймаут. вопрос - как его установить или может есть возможность указать не использовать CRL при верификации? (CAPICOM_VERIFY_SIGNATURE_ONLY - по всей видимости не помогает...) но тогда почему пример на javascript отрабатывает успешно и быстро? или он не обращается к CRL? Отредактировано пользователем 7 мая 2008 г. 18:40:09(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.04.2008(UTC) Сообщений: 11
|
различными теловижениями выяснилось, что код на perl, что код на javascript при проверке сертификата Цитата:Certificate.IsValid().CheckFlag Certificate.IsValid().Result Chain.Build(Certificate) ОДИНАКОВО срабатывают на CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN видимо вы правы, отсутствие CRL портит карму. (хотя попрежнему я не понимаю, огромную разницу в скорости работы perl и javascript)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
возможно, дело в механике вызова перлом СОМ объектов |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.04.2008(UTC) Сообщений: 11
|
в VSDN дается описание SignedData.Verify (http://msdn.microsoft.com/en-us/library/aa387728(VS.85).aspx) в частности: If this method fails, an error will be thrown. The Err object will contain additional information about the error. т.е. если верификация НЕ прошла - то выдается исключение. механизм работы с исключениями в perl - это eval-блок, т.е. заключив SignedData.Verify в eval мы должны перехватывать исключения: Цитата: sub isValidSignature($$) { my $data = shift; my $signature = shift;
my $SignedData = Win32::OLE->new('CAPICOM.SignedData') or die "Cannot start CAPICOM.SignedData"; $SignedData->LetProperty( 'Content', $data );
eval { $SignedData->Verify( $signature, 1, CAPICOM_VERIFY_SIGNATURE_ONLY ); }; if ($@) { return 0; } return 1; }
но! в данном примере, никакие исключения не перехватываются. может ли кто подсказать, в чем причина и какой есть выход из ситуации?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.04.2008(UTC) Сообщений: 11
|
нашел решение. Win32::OLE->LastError()
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.06.2008(UTC) Сообщений: 8
|
poltora написал:нашел решение. Win32::OLE->LastError()
Получилось ли проверить подпись ? постоянно вылетает ошибка Win32::OLE(0.1707) error 0x8002000e: "Invalid number of parameters" in METHOD/PROPERTYGET "Item"
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close