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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline fetisov  
#1 Оставлено : 21 мая 2010 г. 18:35:28(UTC)
fetisov

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

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

Подпись формируется с помощью "КриптоАРМ" в кодировке DER. Подпись математически верная.

Проверка подписи производится с помощью следующего кода:
Код:

		Security.insertProviderAt(new BouncyCastleProvider(),1);

		Provider[] prvs=Security.getProviders();
		for(Provider prv:prvs){
			System.out.println(prv);
		}

		FileInputStream fis = new FileInputStream(sign_path);
		CertificateFactory cf = CertificateFactory.getInstance("X.509");
		Collection c = cf.generateCertificates(fis);
		Iterator i = c.iterator();
		X509Certificate cert=null;
		if (i.hasNext()) {
			cert = (X509Certificate) i.next();
			System.out.println(cert);
		}
		fis.close();

		PublicKey publicKey=cert.getPublicKey();

		Signature sig_bc=Signature.getInstance(cert.getSigAlgName(), BouncyCastleProvider.PROVIDER_NAME);
		sig_bc.initVerify(publicKey);
		System.out.println(sig_bc);

		FileInputStream my_file=new FileInputStream(file_path);
		while(my_file.available()>0){
			byte symb=(byte)my_file.read();
			sig_bc.update(symb);
		}
		System.out.println();
		my_file.close();

		sig_bc.verify(cert.getSignature());


Все выполняется без ошибок, но подпись оказывается неверная.
Если использовать для проверки КриптоПро JCP, то она также является неверной. Порядок байт менял, не помогает.

В чем может быть проблема? Что надо сделать, чтобы "правильно" проверить истинность подписи?

Вопрос по поводу считывания файла подписи в base64 кодировке задал в соответствующей теме.
Offline Iva  
#2 Оставлено : 21 мая 2010 г. 18:41:03(UTC)
Iva

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

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

Вопрос про неработающий провайдер BouncyCastle лучше задать на их форуме
Offline fetisov  
#3 Оставлено : 21 мая 2010 г. 18:53:29(UTC)
fetisov

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

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

если Вы не заметили, я написал, что "КриптоПро JCP" также выдает, что подпись неверная. именно поэтому задаю этот вопрос на этом форуме.
могу прикрепить совершенно аналогичный кусок кода, где используется провайдер JCP.
Offline Iva  
#4 Оставлено : 21 мая 2010 г. 19:20:15(UTC)
Iva

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

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

Вы проверяете подпись под сертификатом?
Цитата:
sig_bc.verify(cert.getSignature());

Уверены, что содержимое file_path соответствует подписываемым полям сертификата?
Offline fetisov  
#5 Оставлено : 21 мая 2010 г. 19:33:18(UTC)
fetisov

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

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

нет. а что именно кроме файла подписывается? возможно ли получить подписанные данные из файла в der-кодировке через стандартный интерфейс, предоставляемый java?
Offline Iva  
#6 Оставлено : 21 мая 2010 г. 19:52:46(UTC)
Iva

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

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

В Java подписывается то, что передается в update, и проверяется тоже.
Подпись выдается sign() и проверяется в verify "чистая" (64 байта для гост).
Файла в der-кодировке, скорее всего, означает подпись в формате CMS.
Получить подписанные данные из него средствами JCA нельзя. Их там может вообще не быть.
Offline fetisov  
#7 Оставлено : 21 мая 2010 г. 20:27:09(UTC)
fetisov

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

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

спасибо за консультацию.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.