РУТОКЕН ПЛАГИН - подпись бинарных данных

Здравствуйте

Мы используем:
РУТОКЕН ПЛАГИН инсталятор от 14.11.2013
Rutoken ECP (5). Лицензия на устройстве есть.

На устройстве присутствует сертификат
(Его получили следующим образом: создана ключевая пара и PKCS10 с помощью тестовой страницы (дальше Тест), который включен в Плагин SDK. по этому запросу в нашем УД выпущен сертификат. на ключ сертификат записан с помощью Теста)
С помощью Теста текстовые сообщения подписываются.

Мы хотим:
с помощью плагина получить подписанный прикрепленной подписью бинарный PKCS10.

Делаем:
plugin.generateKeyPair
plugin.createPkcs10
Убираем BEGIN.CERTIFICATE.REQUEST и END.CERTIFICATE.REQUEST
преобразуем из base64 в бинарный вид (window.atob)
plugin.sign(,,false,options )
где  options = {
                detached: false,
                addUserCertificate: true,
                addSignTime: false,
                useHardwareHash: true
            };

Получаем:
base64 прикрепленную подпись
Тест сообщает, что подпись корректна
при снятии подписи получаем данные отличные от тех которые подписывали.

Возможно ли подписывать плагином бинарные данные? Что делать? Где поискать ошибку?

Re: РУТОКЕН ПЛАГИН - подпись бинарных данных

feech пишет:

Здравствуйте

Мы используем:
РУТОКЕН ПЛАГИН инсталятор от 14.11.2013
Rutoken ECP (5). Лицензия на устройстве есть.

На устройстве присутствует сертификат
(Его получили следующим образом: создана ключевая пара и PKCS10 с помощью тестовой страницы (дальше Тест), который включен в Плагин SDK. по этому запросу в нашем УД выпущен сертификат. на ключ сертификат записан с помощью Теста)
С помощью Теста текстовые сообщения подписываются.

Мы хотим:
с помощью плагина получить подписанный прикрепленной подписью бинарный PKCS10.

Делаем:
plugin.generateKeyPair
plugin.createPkcs10
Убираем BEGIN.CERTIFICATE.REQUEST и END.CERTIFICATE.REQUEST
преобразуем из base64 в бинарный вид (window.atob)
plugin.sign(,,false,options )
где  options = {
                detached: false,
                addUserCertificate: true,
                addSignTime: false,
                useHardwareHash: true
            };

Получаем:
base64 прикрепленную подпись
Тест сообщает, что подпись корректна
при снятии подписи получаем данные отличные от тех которые подписывали.

Возможно ли подписывать плагином бинарные данные? Что делать? Где поискать ошибку?

Добрый день.
1. В плагине предусмотрена возможность подписи бинарных данных.
Для этого данные нужно подавать в плагин в виде base64-строки и устанавливать параметр isBase64 функции sign в true.
При этом плагин внутри себя декодирует данные из base64 в бинарные и подпишет эти бинарные данные.
Непосредственно из JavaScript данные в бинарном формате в плагин передать не получится.

2. Обновите плагин до версии 0.17.0.0. (она сейчас выложена на сайте). Начиная с этой версии в плагине отменено лицензирование.

(2014-02-23 08:44:50 отредактировано feech)

Re: РУТОКЕН ПЛАГИН - подпись бинарных данных

1. В плагине предусмотрена возможность подписи бинарных данных.
Для этого данные нужно подавать в плагин в виде base64-строки и устанавливать параметр isBase64 функции sign в true.
При этом плагин внутри себя декодирует данные из base64 в бинарные и подпишет эти бинарные данные.
Непосредственно из JavaScript данные в бинарном формате в плагин передать не получится.

2. Обновите плагин до версии 0.17.0.0. (она сейчас выложена на сайте). Начиная с этой версии в плагине отменено лицензирование.

Спасибо за скорый ответ.
Мы обновили плагин. И получили следующие результаты:
1.  plugin.sign(dev, cert, 'YWFh', true, options) - функция возвращает PKCS#7. при снятии подписи получаем исходный документ 'aaa'
2. plugin.sign(dev, cert, pkcs#10, true, options) - функция вызывает Uncaught Error: 1. еще раз отмечу, что pkcs#10 мы получаем устройстве. и предварительно удаляем разделители запроса
3.  plugin.sign(dev, cert, bin.pkcs#10, false, options)  если мы самостоятельно выполняем преобразование base64=>bin. то функция возвращает pkcs#7. но при снятии подписи получаем искаженный документ.

выполнение сценария 2 на версии 0.16.0.0 приводило к "plugin crashed".

как подписать pkcs#10 в бинарном формате?

Вот пример запроса:
MIIBbTCCARoCAQAwSzEQMA4GA1UEQRMHMzA2MTkxMjE3MDUGA1UEAx4uBBAEPQQ0
BEAENQQ1BDIAIAQaBDgEQAQ4BDsEOwAgBB4EOwQ1BDMEPgQyBDgERzBjMBwGBiqF
AwICEzASBgcqhQMCAiMBBgcqhQMCAh4BA0MABEBoga4w75w0vQ4p0vAD8Gomx5Iv
FJ5MiMnRyo2RaKsOcg0LGG4aiTJatLmpkiBPv6jbi8tkyQi038T70pBQKXnPoGMw
YQYJKoZIhvcNAQkOMVQwUjALBgNVHQ8EBAMCBPAwFgYDVR0lAQH/BAwwCgYIKwYB
BQUHAwIwKwYFKoUDZG8EIgwg0KHQmtCX0JggItCg0KPQotCe0JrQldCdINCt0KbQ
nyIwCgYGKoUDAgIDBQADQQDB//sbuMsCJ3crRsNEE/UmTzMT4Sa4NFld0SLkEP4w
PROKp5JlDc9LWvUXpy9mC9+2dS1ftuUum3Rz0DOpgZCv

Re: РУТОКЕН ПЛАГИН - подпись бинарных данных

Удалось подписать. Исходные данные не должны включать символов переносов строк.

Re: РУТОКЕН ПЛАГИН - подпись бинарных данных

Да, проблема воспроизвелась. Спасибо.
В ближайшем релизе сделаем так, чтобы наличие символов переносов строк не влияло на декодирование base64.
Если не сложно, отпишитесь мне в личку, в каком проекте планируете использовать плагин.