Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.07.2013(UTC) Сообщений: 35 Откуда: Пермь Сказал(а) «Спасибо»: 9 раз
|
Еще очень важный вопрос: правильно я понимаю, что DigestValue зависит только от данных, на основе которых строится, и не зависит от сертификата либо ключа пользователя?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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
|
1 пользователь поблагодарил Fomich за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
1 пользователь поблагодарил dmishin за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.07.2013(UTC) Сообщений: 35 Откуда: Пермь Сказал(а) «Спасибо»: 9 раз
|
Правильно понимаю что для того, чтобы получить канонизированный SignedInfo, достаточно просто подписать кем-нибудь документ и выдрать нужный кусок из этой подписи, а потом для SignedInfo посчитать SignatureValue на клиенте?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
1 пользователь поблагодарил dmishin за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Автор: fomenko Правильно понимаю что для того, чтобы получить канонизированный SignedInfo, достаточно просто подписать кем-нибудь документ и выдрать нужный кусок из этой подписи, а потом для SignedInfo посчитать SignatureValue на клиенте? Достаточно просто канонизировать SignedInfo и взять от этого хеш :) Даже на PHP имеется функция для канонизации XML Отредактировано пользователем 17 июля 2013 г. 14:15:21(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.07.2013(UTC) Сообщений: 35 Откуда: Пермь Сказал(а) «Спасибо»: 9 раз
|
А хэш какой именно брать на сервере для SignedInfo - SHA1, MD5 или другой какой-то? Отредактировано пользователем 17 июля 2013 г. 14:33:54(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 21 Поблагодарили: 2 раз в 2 постах
|
Как я понимаю, чтобы подпись соответствовала госту, то hash должен браться по алгоритму ГОСТ 3411.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Да, хеш по госту: <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close