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

Уведомление

Icon
Error

6 Страницы<1234>»
Опции
К последнему сообщению К первому непрочитанному
Offline fomenko  
#11 Оставлено : 17 июля 2013 г. 13:40:45(UTC)
fomenko

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Еще очень важный вопрос: правильно я понимаю, что DigestValue зависит только от данных, на основе которых строится, и не зависит от сертификата либо ключа пользователя?
Offline Fomich  
#12 Оставлено : 17 июля 2013 г. 13:51:11(UTC)
Fomich

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

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

Поблагодарили: 2 раз в 2 постах
var oHashedData = ObjCreator("CAdESCOM.HashedData", browserName);
var oRawSignature = ObjCreator("CAdESCOM.RawSignature", browserName);
oHashedData.Hash( base64encode(signedInfo) );
var signhash = oRawSignature.SignHash(oHashedData, oCert);
var signature = base64encode(reverseString(hexToString(signhash))); // тут не совсем уверен в последовательности преобразований, dmishin точнее скажет
var x509 = oCert.Export(0);

Цитата:
Еще очень важный вопрос: правильно я понимаю, что DigestValue зависит только от данных, на основе которых строится, и не зависит от сертификата либо ключа пользователя?

Не зависит. http://ru.wikipedia.org/...A1%D0%A2_%D0%A0_34.11-94
thanks 1 пользователь поблагодарил Fomich за этот пост.
fomenko оставлено 17.07.2013(UTC)
Offline dmishin  
#13 Оставлено : 17 июля 2013 г. 13:55:28(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: fomenko Перейти к цитате
Еще очень важный вопрос: правильно я понимаю, что DigestValue зависит только от данных, на основе которых строится, и не зависит от сертификата либо ключа пользователя?


Автор: Fomich Перейти к цитате
var oHashedData = ObjCreator("CAdESCOM.HashedData", browserName);
var oRawSignature = ObjCreator("CAdESCOM.RawSignature", browserName);
oHashedData.Hash( base64encode(signedInfo) );
var signhash = oRawSignature.SignHash(oHashedData, oCert);
var signature = base64encode(reverseString(hexToString(signhash))); // тут не совсем уверен в последовательности преобразований, dmishin точнее скажет
var x509 = oCert.Export(0);

Цитата:
Еще очень важный вопрос: правильно я понимаю, что DigestValue зависит только от данных, на основе которых строится, и не зависит от сертификата либо ключа пользователя?

Не зависит. http://ru.wikipedia.org/...A1%D0%A2_%D0%A0_34.11-94


Тут канонизация упущена. Выдержки javascript кода получения SignatureValue от хеша есть по ссылке.
Я канонизацию SignedInfo и создание хеша делаю на сервере (зачем клиента нагружать канонизацией и созданием хеша, когда это можно сделать на сервере + объем данных меньше и они не такие "страшные")

Отредактировано пользователем 17 июля 2013 г. 13:58:12(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил dmishin за этот пост.
fomenko оставлено 17.07.2013(UTC)
Offline fomenko  
#14 Оставлено : 17 июля 2013 г. 14:06:43(UTC)
fomenko

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Правильно понимаю что для того, чтобы получить канонизированный SignedInfo, достаточно просто подписать кем-нибудь документ и выдрать нужный кусок из этой подписи, а потом для SignedInfo посчитать SignatureValue на клиенте?
Offline dmishin  
#15 Оставлено : 17 июля 2013 г. 14:08:11(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Метод выдернут из контекста класса, но думаю переделать не составит труда.

Создание SignatureValue по хешу от канонизированного SignedInfo в base64:

Цитата:
signBase64HashRaw : function (indexCertificate, base64Hash) {
indexCertificate = parseInt(indexCertificate, 10);
var response = this._getDefaultErrorResponse();

try {
var certificate = this.getOrCreateStoreObject().Certificates.Item(indexCertificate);

var hashObject = this.createHashedDataObject();
hashObject.SetHashValue(this.hex.stringToHex(this.base64.decode(base64Hash)));

var rawSignature = this.createRawSignatureObject();
var signatureHex = rawSignature.SignHash(hashObject, certificate);

var reversedSignatureString = this.reverse(this.hex.hexToString(signatureHex));

response = {
success: true,
message: null,
body: this.base64.encode(reversedSignatureString)
};
} catch (e) {
response.message = this._getErrorMessage(e);
}

return response;
},

Отредактировано пользователем 17 июля 2013 г. 14:08:53(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил dmishin за этот пост.
fomenko оставлено 17.07.2013(UTC)
Offline dmishin  
#16 Оставлено : 17 июля 2013 г. 14:13:20(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: fomenko Перейти к цитате
Правильно понимаю что для того, чтобы получить канонизированный SignedInfo, достаточно просто подписать кем-нибудь документ и выдрать нужный кусок из этой подписи, а потом для SignedInfo посчитать SignatureValue на клиенте?


Достаточно просто канонизировать SignedInfo и взять от этого хеш :)
Даже на PHP имеется функция для канонизации XML

Отредактировано пользователем 17 июля 2013 г. 14:15:21(UTC)  | Причина: Не указана

Offline dmishin  
#17 Оставлено : 17 июля 2013 г. 14:14:31(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
...

Отредактировано пользователем 17 июля 2013 г. 14:15:10(UTC)  | Причина: повторное сообщение

Offline fomenko  
#18 Оставлено : 17 июля 2013 г. 14:30:40(UTC)
fomenko

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
А хэш какой именно брать на сервере для SignedInfo - SHA1, MD5 или другой какой-то?

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

Offline Fomich  
#19 Оставлено : 17 июля 2013 г. 14:38:19(UTC)
Fomich

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

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

Поблагодарили: 2 раз в 2 постах
Как я понимаю, чтобы подпись соответствовала госту, то hash должен браться по алгоритму ГОСТ 3411.
Offline dmishin  
#20 Оставлено : 17 июля 2013 г. 19:55:51(UTC)
dmishin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Да, хеш по госту:
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
6 Страницы<1234>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.