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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Edisson  
#11 Оставлено : 16 мая 2016 г. 9:20:16(UTC)
Edisson

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

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
http://cpdn.cryptopro.ru/content/cades/plugin-samples-raw-signature.html


спасибо за наводку, похоже получил подпись необходимого вида.
решение такого вида:

Код:

function InitializeHashedData(data, hashAlg) {
    var oHashedData = cadesplugin.CreateObject("CAdESCOM.HashedData");
    oHashedData.Algorithm = hashAlg;
    oHashedData.Hash(data);
    oHashedData.SetHashValue(oHashedData.Value);
    return oHashedData;
}

function CreateSignature(oCertificate, oHashedData) {
    var oRawSignature = cadesplugin.CreateObject("CAdESCOM.RawSignature");
    try {
        var sRawSignature = oRawSignature.SignHash(oHashedData, oCertificate);
    } catch (err) {
        alert("Failed to create signature. Error: " + GetErrorMessage(err));
        return;
    }
    return sRawSignature;
}

//...
    CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;
    hashAlg = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
    var oHashedData = InitializeHashedData(dataToSign, hashAlg);
    var RawSignature = CreateSignature(certObject, oHashedData);
//...


в RawSignature получаю значение по типу
Код:

EAC6029553DD3C71D518E94F3247898012B234FBC1414D0938DF638E5E5EFE29FB7BFCE75DA35BB5B4F631BFEC8A89FEF4D7D372FADD21D759DAEE0F079EC3D0
Offline Edisson  
#12 Оставлено : 16 мая 2016 г. 10:42:35(UTC)
Edisson

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

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
каждый раз при подписании подпись меняется, это нормально, да?
Offline Андрей Писарев  
#13 Оставлено : 16 мая 2016 г. 11:05:25(UTC)
Андрей *

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

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

Сказал «Спасибо»: 584 раз
Поблагодарили: 2320 раз в 1818 постах
Автор: Edisson Перейти к цитате
каждый раз при подписании подпись меняется, это нормально, да?


Да
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#14 Оставлено : 16 мая 2016 г. 11:06:41(UTC)
Андрей *

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

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

Сказал «Спасибо»: 584 раз
Поблагодарили: 2320 раз в 1818 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline Edisson  
#15 Оставлено : 16 мая 2016 г. 11:10:33(UTC)
Edisson

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

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
странное дело, всё равно сервер выдает, что подпись не верна

Код:

String HashAlg = "Gost3411";
//...
Gost3410CryptoServiceProvider myProvider = (Gost3410CryptoServiceProvider) certificate.PublicKey.Key)
return myProvider.VerifyData(data, hashAlg, signature); // return false


где-то поподалась инфа про перевернутую подпись, пробовал реверсировать, не помогает.
какой можно тест запилить, чтобы понять в чём проблема?

подписываю пока что сертификатом, полученным в тестовом центре,
после этого предоставляю серверу: подпись, сами данные, серийный номер этого сертификата
может где-то в этой цепочке что-то не то...
Offline Андрей Писарев  
#16 Оставлено : 16 мая 2016 г. 11:53:46(UTC)
Андрей *

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

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

Сказал «Спасибо»: 584 раз
Поблагодарили: 2320 раз в 1818 постах
Автор: Edisson Перейти к цитате
странное дело, всё равно сервер выдает, что подпись не верна

Код:

String HashAlg = "Gost3411";
//...
Gost3410CryptoServiceProvider myProvider = (Gost3410CryptoServiceProvider) certificate.PublicKey.Key)
return myProvider.VerifyData(data, hashAlg, signature); // return false


где-то поподалась инфа про перевернутую подпись, пробовал реверсировать, не помогает.
какой можно тест запилить, чтобы понять в чём проблема?

подписываю пока что сертификатом, полученным в тестовом центре,
после этого предоставляю серверу: подпись, сами данные, серийный номер этого сертификата
может где-то в этой цепочке что-то не то...


В примечании
http://cpdn.cryptopro.ru...ceb13dceb905777c19e.html
Техническую поддержку оказываем тут
Наша база знаний
Offline cross  
#17 Оставлено : 16 мая 2016 г. 13:27:19(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Так как вы подписываете строку, рекомендую еще задуматься над кодировкой этой строки на сервере и клиенте.
http://cpdn.cryptopro.ru...es/content-encoding.html
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
halofourteen оставлено 18.05.2016(UTC)
Offline Edisson  
#18 Оставлено : 16 мая 2016 г. 13:31:36(UTC)
Edisson

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

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Автор: cross Перейти к цитате
Так как вы подписываете строку, рекомендую еще задуматься над кодировкой этой строки на сервере и клиенте.
http://cpdn.cryptopro.ru...es/content-encoding.html


спасибо, постараюсь всё учесть!
в конечном счете необходимо будет подписывать содержимое файла, пока пытаюсь отладить на простом примере.
Offline Edisson  
#19 Оставлено : 16 мая 2016 г. 13:58:37(UTC)
Edisson

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

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате


да я этот метод использую, выше в коде приводил

Код:

var sRawSignature = oRawSignature.SignHash(oHashedData, oCertificate);


правда вынес var sRawSignature за пределы try, там у меня с ошибкой написано было
***

насчет обратного порядка: если взять с клиента строку - полученную подпись (по логике документации) разбить по парам, перевернуть, перегнать в Byte, отправить на верификацию на сервер, тоже не работает.

действительно ли я правильно переворачиваю подпись, как описал?

полез посмотреть ссылку из указанного вами примечания на англ. ресурс
смущает вот этот абзац:
The signature algorithm GOST R 34.10-2001 generates a digital
signature in the form of two 256-bit numbers, r and s. Its octet
string representation consists of 64 octets, where the first 32
octets contain the big-endian representation of s and the second 32
octets contain the big-endian representation of r.

такое ощущение, что переворачивать подпись после SignHash надо как-то по-иному?
Offline Edisson  
#20 Оставлено : 16 мая 2016 г. 15:17:55(UTC)
Edisson

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

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
верификация заработала!
убрал реверс подписи, не понадобилось.

так же везде добавил работу с base64

как на клиенте:
Код:

oHashedData.DataEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;


так и на сервере.
thanks 1 пользователь поблагодарил Edisson за этот пост.
halofourteen оставлено 18.05.2016(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.