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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline sadensmol  
#1 Оставлено : 28 марта 2012 г. 22:38:39(UTC)
sadensmol

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

Группы: Участники
Зарегистрирован: 21.02.2012(UTC)
Сообщений: 12
Откуда: Smolensk,Russia

Здравствуйте создаю 2 варианта подписи посредством Browser Plugin

function SignCreate(dataToSign,certificate,tsaAddress) {
var oSigner = CreateObject("CAdESCOM.CPSigner");
oSigner.Certificate = certificate;
oSigner.TSAAddress = tsaAddress;

var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
oSignedData.ContentEncoding = 0; //base64
oSignedData.Content = dataToSign;

try {
var sSignedMessage = oSignedData.SignCades(oSigner,1,true); //default sign detached
} catch (err) {
alert("Failed to create signature. Error: " + GetErrorMessage(err));
return;
}

return sSignedMessage;
}

при подписании строки 1234567890 и валидации ее стандартной функцией из примера по валидации CMS подпись валидна

если подписываю файл как byte[] тем же самым методом то при валидации тем же самым кодом не совпадают хэши
B6 D1 52 FE CB CD DF AE A9 5B D5 C5 E3 8F C6 48 EA 9E 09 28 A4 7F 6C 49 6B 2A 4D AA 10 28 3D 79
C3 60 8E 91 C4 71 FC 75 F9 D4 6E 9C 6D 32 18 BB FB B1 22 48 20 B2 D0 43 A3 6E F0 43 81 23 96 D0

проверка через сайт показывает что подпись не верна

не могу понять в чем дело
проект встал колом
помогите пожалуйста
Offline Андрей Писарев  
#2 Оставлено : 28 марта 2012 г. 22:48:22(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,340
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
sadensmol написал:
Здравствуйте создаю 2 варианта подписи посредством Browser Plugin

function SignCreate(dataToSign,certificate,tsaAddress) {
var oSigner = CreateObject("CAdESCOM.CPSigner");
oSigner.Certificate = certificate;
oSigner.TSAAddress = tsaAddress;

var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
oSignedData.ContentEncoding = 0; //base64
oSignedData.Content = dataToSign;

try {
var sSignedMessage = oSignedData.SignCades(oSigner,1,true); //default sign detached
} catch (err) {
alert("Failed to create signature. Error: " + GetErrorMessage(err));
return;
}

return sSignedMessage;
}

при подписании строки 1234567890 и валидации ее стандартной функцией из примера по валидации CMS подпись валидна

если подписываю файл как byte[] тем же самым методом то при валидации тем же самым кодом не совпадают хэши
B6 D1 52 FE CB CD DF AE A9 5B D5 C5 E3 8F C6 48 EA 9E 09 28 A4 7F 6C 49 6B 2A 4D AA 10 28 3D 79
C3 60 8E 91 C4 71 FC 75 F9 D4 6E 9C 6D 32 18 BB FB B1 22 48 20 B2 D0 43 A3 6E F0 43 81 23 96 D0

проверка через сайт показывает что подпись не верна

не могу понять в чем дело
проект встал колом
помогите пожалуйста



1) какое отношение имеет данная проблема к ветке КриптоПро JCP, JavaTLS ?
2) строки\файлы ... "содержимое" файла передается уже в base64?
3) собственно из п. 2) = где "код", считывания файла в память?

...
n) ОС, версия плагина ?


ОС = MacOS ?


Отредактировано пользователем 28 марта 2012 г. 22:54:15(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline sadensmol  
#3 Оставлено : 28 марта 2012 г. 23:20:10(UTC)
sadensmol

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

Группы: Участники
Зарегистрирован: 21.02.2012(UTC)
Сообщений: 12
Откуда: Smolensk,Russia

1)ну на JCP проверяется подпись =)
если честно то просто в этой теме нашел похожий вопрос

2,3) да файл перед передачей на подпись преобразуется к base64 поскольку могут содержаться невалидные символы в противном случае
byte[] encodedDoc = Base64.encodeBase64(FileUtils.readFileToByteArray(new File(slm2.getFilename())));
используется Apache Commons

WindowsXP
плагин версии 1.0.87.0
подписываю под FireFox

спасибо что ответили!
пока что я вообще не могу понять в чем загвоздка

валидирую
byte[] buffer = IOUtils.toByteArray(new FileInputStream(new File("d:\\temp\\111\\file.sig")));
byte[] data = IOUtils.toByteArray(new FileInputStream(new File("d:\\temp\\111\\file.xml")));
buffer = Base64.decodeBase64(buffer);

CryptoUtils.verifyCmsSign(buffer, data, null);

если пихать файлы полученные в csptest то выдает ошибку ASN1 некорректный ( это обычно бывает если документ не в base64 подается на примере verifyCmsSign )
Offline Новожилова Елена  
#4 Оставлено : 29 марта 2012 г. 17:53:39(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Особенности подписи при помощи плагина бинарных файлов и проверки полученных подписей другими средствами обсуждались здесь (примерно середина страницы).

Насчет кодировки:
Цитата:
Код:
oSignedData.ContentEncoding = 0; //base64


0 - это не base64:

Код:
CADESCOM_STRING_TO_UCS2LE = 0;
CADESCOM_BASE64_TO_BINARY = 1;
Offline sadensmol  
#5 Оставлено : 2 апреля 2012 г. 13:59:12(UTC)
sadensmol

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

Группы: Участники
Зарегистрирован: 21.02.2012(UTC)
Сообщений: 12
Откуда: Smolensk,Russia

извините все что вижу в доке
http://www.cryptopro.ru/...e9a70c23e98b6161d3a.html
и по логике вещей нумерация начинается с 0 если явно не указано значение
или я неправиль читаю документацию?

спасибо за ссылку - сейчас буду смотреть
действительно если во входном сообщении 10 символов то все нормально понимается
поставил 13ьб и уже валадация не проходит
Offline Андрей Писарев  
#6 Оставлено : 2 апреля 2012 г. 14:08:58(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,340
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
sadensmol написал:
извините все что вижу в доке
http://www.cryptopro.ru/...e9a70c23e98b6161d3a.html
и по логике вещей нумерация начинается с 0 если явно не указано значение
или я неправиль читаю документацию?


http://rghost.ru/37363605


Цитата:
Задание кодировки подписываемых данных

Для того чтобы плагин узнал о способе кодирования данных для подписи, введено новое свойство ContentEncoding. ContentEncoding имеет следующие значения:

Значение Описание
CADESCOM_STRING_TO_UCS2LE = 0x00 Данные будут перекодированы в UCS-2 little endian.
CADESCOM_BASE64_TO_BINARY = 0x01 Данные будут перекодированы из Base64 в бинарный массив.


По умолчанию свойство ContentEncoding имеет значение CADESCOM_STRING_TO_UCS2LE.

Отредактировано пользователем 2 апреля 2012 г. 14:12:33(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline sadensmol  
#7 Оставлено : 2 апреля 2012 г. 14:24:10(UTC)
sadensmol

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

Группы: Участники
Зарегистрирован: 21.02.2012(UTC)
Сообщений: 12
Откуда: Smolensk,Russia

Ага. Спасибо Андрей. Совершенно неочевидное место в доке!
я уже ближе к цели!! =)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.