Статус: Участник
Группы: Участники
Зарегистрирован: 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
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.04.2016(UTC) Сообщений: 19  Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
каждый раз при подписании подпись меняется, это нормально, да?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,844   Сказал «Спасибо»: 584 раз Поблагодарили: 2320 раз в 1818 постах
|
Автор: Edisson  каждый раз при подписании подпись меняется, это нормально, да? Да |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,844   Сказал «Спасибо»: 584 раз Поблагодарили: 2320 раз в 1818 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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
где-то поподалась инфа про перевернутую подпись, пробовал реверсировать, не помогает. какой можно тест запилить, чтобы понять в чём проблема? подписываю пока что сертификатом, полученным в тестовом центре, после этого предоставляю серверу: подпись, сами данные, серийный номер этого сертификата может где-то в этой цепочке что-то не то...
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 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 |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
|
|
 1 пользователь поблагодарил Анатолий Беляев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.04.2016(UTC) Сообщений: 19  Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Автор: cross  спасибо, постараюсь всё учесть! в конечном счете необходимо будет подписывать содержимое файла, пока пытаюсь отладить на простом примере.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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 надо как-то по-иному?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.04.2016(UTC) Сообщений: 19  Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
верификация заработала! убрал реверс подписи, не понадобилось. так же везде добавил работу с base64 как на клиенте: Код:
oHashedData.DataEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;
так и на сервере.
|
 1 пользователь поблагодарил Edisson за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close