Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.10.2018(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 4 раз
|
Добрый день. В системе, которую мы используем нет возможности использовать КРИПТОПРО Browser Plugin. Нужно на java написать программу, которая повторяет его работу КриптоПРО Browser Plugin. Скрипт, на web странице работает с плагином через технологию COM, использовать на Java эту технологию не хотелось бы (решение должно быть кроссплатформным). Какой наиболее правильный путь решить эту задачу? ps. У нас есть возможность поставить JCP.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,396 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Открывать документацию и писать. Но плагин - это технология для браузеров, кстати кроссплатформенная. А зачем вам аналог на Java? Для выполнения криптографических операций в Java много собственных классов. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.10.2018(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 4 раз
|
Нужно именно использовать ЭЦП. Плагин прекрасно справляется с задачей, но, повторюсь, мы не можем его использовать. Нужно на выходе работы моей программы получить точно такой же результат, который получается плагином. Я использую для этих целей JCP и в частности "модуль" CAdES. Для проверки собрал пример SignExample (со своими настройками: alias, keystore type, provider и пр.). На вход программе и плагину подаю один и тот же массив байт, но на выходе получаю разный результат. Помогите, пожалуйста, разобраться... Какие данные нужно предоставить, чтобы помощь была эффективной?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.11.2010(UTC) Сообщений: 1,113
Сказал(а) «Спасибо»: 7 раз Поблагодарили: 153 раз в 138 постах
|
Учитываете, что при формировании ЭП к данным добавляется т.н. имитовставка и две подписи "одного и того же" дадут на выходе "разный набор байт"?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.10.2018(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 4 раз
|
Автор: basid две подписи "одного и того же" дадут на выходе "разный набор байт" Согласен с вами. Подписывая одну и ту же последовательность байт плагином CAdESCOM мы получаем разную последовательность байт, но всегда одной длины. А выполняя подпись классом CAdESSignature из пакета ru.CryptoPro.CAdES.CAdESSignature я получаю подпись совсем другой длины. И вот хотелось бы понять, что нужно сделать в Java, чтобы подпись получилась аналогичная плагину. Может быть плагин подписывает какие-то дополнительные атрибуты... Вот буквально как работает скрипт, использующий плагин: Код:
var store = yield createObject("CAdESCOM.Store");
var certificate = yield certificatePromise;
yield store.Open(constants.CAPICOM_CURRENT_USER_STORE, constants.CAPICOM_MY_STORE, constants.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var certificates = yield store.Certificates;
var oCertificates = yield certificates.Find(constants.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, certificate.Hash);
if (yield oCertificates.Count == 0) {
throw new Error("Certificate not found");
}
var oCertificate = yield oCertificates.Item(1);
var signer = yield createObject("CAdESCOM.CPSigner");
yield signer.propset_Certificate(oCertificate);
var oSignedData = yield createObject("CAdESCOM.CadesSignedData");
oSignedData.propset_ContentEncoding(constants.CADESCOM_BASE64_TO_BINARY);
oSignedData.propset_Content(content);
signer.propset_Options(constants.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY);
var sSignedMessage = yield oSignedData.SignCades(signer, constants.CADES_BES, isDetached);
Никаких тут "особенностей" нет. Да, я понимаю, что указывая кодировку CADESCOM_BASE64_TO_BINARY, реально плагин будет подписывать не ту последовательность байт, что мы передали как content, а ее расшифрованный вариант, а затем получившуюся подпись снова шифрует Base64.
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Мотивация вопроса несколько странная - очень сомнительно, что браузеры кроме Internet Explorer используют ActiveX и полноценный COM для работы с плагином. То есть реализация "не для IE" по идее не использует COM и должна быть кроссплатформенна. Впрочем, не стану отговаривать реализовать то же самое, "но в профиль".
По вопросу - если получаются данные разной длины, то скорее всего действительно подписывается разное количество свойств, например включены дополнительные сертификаты, исходные данные, штамп времени и т.д. В кодированном base64 виде объем данных увеличивается примерно на 1/3, при сравнении размера это нужно учитывать.
К слову, base64 это не шифрование-расшифрование, а кодирование-раскодирование без потери информации. Суть поправки термина в том, что шифрование затрудняет восстановление исходной информации, трудно обратимо без ключа, а кодирование без потери информации обратимо без всяких ключей и не затрудняет восстановление исходной информации.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close