Статус: Новичок
Группы: Участники
Зарегистрирован: 01.06.2022(UTC) Сообщений: 1
|
Здравствуйте
Разбираюсь с проверкой подписи на Java и столкнулся с такой вот проблемой
Есть подпись сформированная на клиенте через cadesplugin_api.js следующим образом
1) Получаем хэш подписываемого контента (В качестве контента засылается строка "test")
var oHashedData = cadesplugin.CreateObject("CAdESCOM.HashedData"); oHashedData.Algorithm = window.cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256; oHashedData.DataEncoding = window.cadesplugin.CADESCOM_BASE64_TO_BINARY; oHashedData.Hash(content); //"test" var hash = oHashedData.Value; resolve(hash);
2) Подписываем тестовым сертификатом
var oSigner = window.cadesplugin.CreateObject("CAdESCOM.CPSigner"); oSigner.Certificate = cert; var oSignedData = window.cadesplugin.CreateObject("CAdESCOM.CadesSignedData"); oSignedData.ContentEncoding = window.cadesplugin.CADESCOM_BASE64_TO_BINARY; var oHashedData = window.cadesplugin.CreateObject("CAdESCOM.HashedData"); oHashedData.Algorithm = window.cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256; oHashedData.SetHashValue(hash); var sSignedData = oSignedData.SignHash(oHashedData, oSigner, window.cadesplugin.CADESCOM_CADES_BES); resolve(sSignedData);
3) Полученную подпись проверяем на стороне сервера Есть реализация на NET. для проверки этой подписи с помощью библиотеки CADESCOM где des - сформированная на шаге 2 подпись
oSignedData = new CadesSignedData(); oSignedData.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY; oSignedData.Content = contentBase64; //"test" в base64 oSignedData.VerifyCades(des, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true); //
Проверка тут успешно проходит и никаких проблем
Пытаюсь сделать похожее на java, попытки вылились в следующий код
Security.addProvider(new JCP()); byte[] text = Base64.getEncoder().encode("test".getBytes(StandardCharsets.UTF_8)); byte[] des = Base64.getMimeDecoder().decode(signed); // signed - подпись сформированная на шаге 2 CAdESSignature sig = new CAdESSignature(des, text , CAdESType.CAdES_BES, true); sig.verify(null);
Собственно, на последнем шаге мне вываливается CADESException org.bouncycastle.cms.CMSSignerDigestMismatchException: message-digest attribute value does not match calculated value
Можете объяснить, что я делаю не так?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Цитата:oHashedData.DataEncoding = window.cadesplugin.CADESCOM_BASE64_TO_BINARY; oHashedData.Hash(content); //"test" content = "test" или content = "dGVzdA==" ? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Надо сначала декодировать из base64, полагаю. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Вот тут что-то странное: byte[] text = Base64.getEncoder().encode("test".getBytes(StandardCharsets.UTF_8)) Зачем кодировать в base64, ведь плагин подписал test, а не его base64 представление. А CadesSignature в java работает с не-base64. Base64 нужен плагину, т. к. он, если не ошибаюсь, не работает с binary. Сделайте byte[] text = "test".getBytes(StandardCharsets.UTF_16LE) для CadesSignature. Отредактировано пользователем 1 июня 2022 г. 10:50:58(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close