Форум КриптоПро
»
Средства криптографической защиты информации
»
Другие продукты
»
Почему отделенная подпись сделанная в browser plagin выглядит закодированной в base64?
Статус: Участник
Группы: Участники
Зарегистрирован: 16.07.2014(UTC) Сообщений: 16  Сказал(а) «Спасибо»: 1 раз
|
Помогите пожалуйста. Что-то непонимаю. Собственно вопрос в теме. Почему отделенная подпись сделанная с помощью browser plagin выглядит закодированной в base64? Как можно на это повлиять? Подписываю так var CADES_BES = 1; var CADESCOM_BASE64_TO_BINARY=1; var CADESCOM_STRING_TO_UCS2LE=0; if (txtDataToSign) { // Даные на подпись ввели oSignedData.Content = txtDataToSign; oSigner.Options = 1; //CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN=1 try { var sSignedData = oSignedData.SignCades(oSigner, CADES_BES, true); //отделенная подпись } catch (e) { alert("Не удалось создать подпись из-за ошибки: " + GetErrorMessage(e)); return; } document.getElementById(SignId).value = sSignedData; } else { alert("Set data to Sign"); } результат в sSignedData подпись, похоже закодированная в base64
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.07.2014(UTC) Сообщений: 16  Сказал(а) «Спасибо»: 1 раз
|
Ответов нет потому видимо что ответ очевиден. В base64 для нормальной передачи через Инет. Тогда вопрос видоизменяется. Какая кодировка получается после раскодирования подписи из base64? windows-1251? Отредактировано пользователем 23 июля 2014 г. 10:18:06(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.07.2014(UTC) Сообщений: 16  Сказал(а) «Спасибо»: 1 раз
|
Продолжаем самоотвечать на собственные чайниковские вопросы: фрагменты русского текста из сертификата после декодирования из base64 в подписи в utf-8. Зачем мне это сам теперь не знаю. Казалось нужно так как не могу понять почему подпись сделанная плагином не проверяется, а сделаная cryptcp.exe поверяется. Следующий вопрос чайника по той-же причине: А почему в варианте подписи CADES_BES сделанной плагином нет signing-time? И как время туда воткнуть? Отредактировано пользователем 25 июля 2014 г. 1:53:27(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.07.2014(UTC) Сообщений: 16  Сказал(а) «Спасибо»: 1 раз
|
А вот почему (надо было посмотреть соседние примерчики)
var CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; var oSigningTimeAttr = CreateObject("CADESCOM.CPAttribute"); oSigningTimeAttr.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME; var oTimeNow = new Date(); oSigningTimeAttr.Value = ConvertDate(oTimeNow);
var oSigner = CreateObject("CAdESCOM.CPSigner"); oSigner.Certificate = oCertificate; oSigner.AuthenticatedAttributes2.Add(oSigningTimeAttr);
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,762   Сказал «Спасибо»: 579 раз Поблагодарили: 2307 раз в 1807 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.07.2014(UTC) Сообщений: 16  Сказал(а) «Спасибо»: 1 раз
|
Странно вот так подпись создается: var oTimeNow = new Date(); oSigningTimeAttr.Value = ""; а так нет:
var oTimeNow = new Date(); oSigningTimeAttr.Value = ConvertDate(oTimeNow); пишет ошибку : failed to create CAdESCOM.CPAttribute:-2146823279
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.07.2014(UTC) Сообщений: 16  Сказал(а) «Спасибо»: 1 раз
|
Internet Explorer 11 alert-ы в нижеразмещенной функции показывают одинаковую строку. Может в этом вопрос? function ConvertDate(date) { alert(date); alert(date.getVarDate()); switch (navigator.appName) { case "Microsoft Internet Explorer": return date.getVarDate(); default: return date; } } ... Не в этом. А в том что IE11 прикидывается что он уже не тот. В общем надо ConvertDate доработать для различения IE11. Отредактировано пользователем 26 июля 2014 г. 1:25:20(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.07.2014(UTC) Сообщений: 16  Сказал(а) «Спасибо»: 1 раз
|
Еще долго промучался с вот этим: Загружал клиентский файл в textarea через ... var fl = new FileReader(); fl.onload = ( function(theFile ) { return function(e) { document.getElementById("idClientFile").innerHTML= e.target.result ; };})(f); fl.readAsText(f); ... и потом создавал отделенную подпись. Никак при этом не мог добится проверки этой подписи. Похоже IE съедает то-ли переводы строки то-ли еще что, так пока до конца не понял. Одним словом подписывается не исходный файл а нечто иное. Решил пока вопрос тем что стал загружать файл сразу в base64 fl.onload = ( function(theFile ) { return function(e) { document.getElementById("idClientFile").innerHTML = e.target.result.replace("data:text/xml;base64,",""); };})(f); fl.readAsDataURL(f); Так все работает и подпись проверяется сторонним приложением. Отредактировано пользователем 6 августа 2014 г. 0:17:47(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Похоже IE сьедает то-ли переводы строки то-ли еще что, так пока до конца не понял. Одним словом подписывается не исходный файл а нечто иное. Если еще интересно, то сделайте присоединенную подпись, сохраните в файл результат и чем-нибудь проверьте, например csptest. То, что получится на выходе, сравните с оригиналом. |
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Другие продукты
»
Почему отделенная подпись сделанная в browser plagin выглядит закодированной в base64?
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close