Речь о подписании документа И его строковых метаданных, хранимых в системе в БД.
Алгоритм подготовки и самой подписи сейчас такой:
1 (Java). Приложение готовит 2 base64-строки:
а) Метаданные сконкатенированные в одну строку и преобразованные в Base64-строку
б) Контент документа (массив байт) преобразованный в Base64-строку. Если контент отсутствует, то вместо Base64-строки просто строка "null".
2 (JavaScript). Строки из п.1 конкатенируются и подаются в Content в javascript-коде.
3 (JavaScript). Вызывается подписание.
Алгоритм проверки подписи через JCP:
1 (Java). Приложение готовит 2 base64-строки:
а) Метаданные сконкатенированные в одну строку и преобразованные в Base64-строку
б) Контент документа (массив байт) преобразованный в Base64-строку. Если контент отсутствует, то вместо Base64-строки просто строка "null".
2 (Java). Строки из п.1 конкатенируются.
3 (Java). Производится преобразование строки из п.2 в массив байт (byte[])
4 (Java). Вызывается проверка подписи.
5 (Java). Получаю ошибку (message-digest attribute value does not match calculated value).
Мой вопрос был в том - как правильно в п. 3 "Производится преобразование строки из п.2 в массив байт (byte[])" провести преобразование?
Как видно из приведенных алгоритмов в JavaScript это преобразование производится "за меня" в api cades.
P.s. Алгоритм проверки подписи через плагин:
1 (Java). Приложение готовит 2 base64-строки:
а) Метаданные сконкатенированные в одну строку и преобразованные в Base64-строку
б) Контент документа (массив байт) преобразованный в Base64-строку. Если контент отсутствует, то вместо Base64-строки просто строка "null".
2 (JavaScript). Строки из п.1 конкатенируются и подаются в Content в javascript-коде.
4 (JavaScript). Вызывается проверка подписи.
5 (JavaScript). Подпись верна.
Отредактировано пользователем 9 июля 2014 г. 13:59:06(UTC)
| Причина: добавил действующий алгоритм проверки подписи через плагин