Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ 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)
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.