Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Ольга  
#11 Оставлено : 28 мая 2008 г. 22:20:49(UTC)
Ольга

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.01.2008(UTC)
Сообщений: 207

Поблагодарили: 3 раз в 3 постах
для подписи/проверки подписи файла с хешем, надо использовать код:

Код:
public static void main(String[] args) throws Exception {
//csptest -keys -hash GOST -in e:\text -hashout e:\text.hsh
//csptest.exe -keyset -sign GOST -container 111 -in e:\text.hsh -out e:\text.hsh.sign -keytype exchange
    final byte[] buffer = Array.readFile("E:\\text.hsh");
    final byte[] sig = Array.readFile("E:\\text.hsh.sign");
    final CertificateFactory cf = CertificateFactory.getInstance("X509");
    final Certificate cert =
            cf.generateCertificate(new FileInputStream("E:\\111.cer"));
    final PublicKey pub = cert.getPublicKey();
    //var 1
    final Signature sss = Signature.getInstance(JCP.CRYPTOPRO_SIGN_NAME,
            JCP.PROVIDER_NAME);
    sss.initVerify(pub);
    sss.update(buffer);
    final boolean verifies = sss.verify(sig);
    System.out.println("signature verifies: " + verifies);
    if (!verifies) {
        throw new Exception("Signature was not verified");
    }
    //var 2
    final Signature ss = Signature.getInstance(JCP.GOST_EL_SIGN_NAME,
            JCP.PROVIDER_NAME);
    ss.initVerify(pub);
    ss.update(buffer);
    final byte[] invSig = Array.invByteOrderB(sig);
    final boolean verif = ss.verify(invSig);
    System.out.println("signature verifies: " + verif);
    if (!verif) {
        throw new Exception("Signature was not verified");
    }

}


ps: Пишите один try {} catch {} на весь код функции. Строку с ошибкой скажет e.printStackTrace().

Отредактировано пользователем 29 мая 2008 г. 14:40:51(UTC)  | Причина: Не указана

Offline YashinSergey  
#12 Оставлено : 28 мая 2008 г. 22:35:29(UTC)
YashinSergey

Статус: Участник

Группы: Участники
Зарегистрирован: 26.05.2008(UTC)
Сообщений: 23
Откуда: Москва

Строка в вашем примере "csptest -keys -hash GOST -in e:\text -hashout e:\text.hsh"
у меня лично не работает нормально, вылетает окошко с просьбой выбрать ключевой
носитель, в ключевом носителе что только не выбираю - толку нет, один только вопрос -
нафига козе баян ? (для генерации хеша зачем ключевой носитель и байда с окошками ?).

В общем пример ваш использовать нет возможности. Да и потом в моем примере кода,
всё тоже самое, не пойму зачем одно и тоже переписывать не один раз.

И пожалуйста не предлагайте использовать для генерации всякую ерунду типа csptest который мало
того что не работает по человечески, ко всему этому мы ещё и пишем на языке Java, поэтому давайте им и ограничимся.

Скажите лучше в чем причина ? Как решить ?
Offline Ольга  
#13 Оставлено : 29 мая 2008 г. 16:40:41(UTC)
Ольга

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.01.2008(UTC)
Сообщений: 207

Поблагодарили: 3 раз в 3 постах
Если бы все сделали правильно, то все работало бы. отличие подписи в JCP и CSP только в этом:
olin написал:
Detached-подпись JCP имеет инверсный порядок байт по сравнению с CSP.
Offline Русев Андрей  
#14 Оставлено : 30 мая 2008 г. 16:55:52(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,431

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 574 раз в 400 постах
Окошко с просьбой выбрать ключевоей носитель возникает в случае, если не создан контейнер по умолчанию. Операцию хеширования можно делать и на verify_context, тогда окошек не будет:
csptest -keys -hash GOST -in e:\text -hashout e:\text.hsh -verifycontext

P.S. Если вам говорят использовать csptest, значит есть подозрения, что вы наделали ошибок не только на Java, но и на Си. Ваш код очень плохо оформлен, поэтому искать в нём ошибку ни у кого нет желания. Вместо этого вам предалгают простое и правильное решение, поняв которое вы сами найдёте свои ошибки.

P.P.S. Ваша ошибка в понимании sig.update(resultDigest). Код будет работать, если clientTextPath = "C:\\certs\\sign\\client_text.txt.hash"; будет содержать хеш файла "C:\\certs\\sign\\client_text.txt". О чём вам и сказала Ольга. Другими словами, в CSP вы подписываете хеш, а не сам файл (на уровне криптографических объектов - хеш хеша), это логическая ошибка.
Официальная техподдержка. Официальная база знаний.
Offline YashinSergey  
#15 Оставлено : 31 мая 2008 г. 0:44:20(UTC)
YashinSergey

Статус: Участник

Группы: Участники
Зарегистрирован: 26.05.2008(UTC)
Сообщений: 23
Откуда: Москва

Во первых - спасибо за csptest -keys -hash GOST -in e:\text -hashout e:\text.hsh -verifycontext
а по поводу кода - код тестовый, а не реальная программа.
По поводу желания рыться в коде - мы ваши клиенты, и платим вам деньги из которых вам начисляется заработная плата,
схема надеюсь понятна, поэтому у вас не может быть желания или нежелания - есть работа за которую мы вам платим.

Спасибо за поддержку.

Отредактировано пользователем 31 мая 2008 г. 0:53:50(UTC)  | Причина: Не указана

Offline Русев Андрей  
#16 Оставлено : 2 июня 2008 г. 15:11:23(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,431

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 574 раз в 400 постах
Мы оказываем платную техническую поддержку по использованию наших продуктов, но не встраиванию. В дальнейшем по вопросам тех.поддержки обращайтесь в письменной форме с указанием номеров договоров и названием компании. Наши реквизиты указаны на сайте. Ваша учётная запись на форуме заблокирована за неуважительное поведение.
Официальная техподдержка. Официальная база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.