Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,752   Сказал «Спасибо»: 579 раз Поблагодарили: 2307 раз в 1807 постах
|
Oleg_tgl написал:дико извиняюсь, :-) этого будет достаточно или еще какаято поверка нужна Код:
System.out.println("signEL="+signEL.length);
if (signEL.length!=64){//если 64 - это не pkcs7
//Требования к форматам проверяемых сертификатов и электронных документов
//http://notary.cryptopro.ru/Notary_Help.htm
//приказом Министерства связи и массовых коммуникаций Российской Федерации от 23.03.2009 № 41
// "Требования к технологиям, форматам, протоколам информационного взаимодействия,
// унифицированным программно-техническим средствам подсистемы удостоверяющих центров
// общероссийского государственного информационного центра"
final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(signEL);
final ContentInfo all = new ContentInfo();
try {
all.decode(asnBuf);
System.out.println("contentType================"+all.contentType.value);
} catch (Asn1Exception e) {
System.out.println("это не pkcs7");
e.printStackTrace();
}
} else {System.out.println("это не pkcs7");}
Цитата:if (signEL.length!=64){//если 64 - это не pkcs7 { /// } } else {System.out.println("это не pkcs7");}
!= - это " не равно" или .. ? если <>64 //если 64 - это не pkcs7 Кто-то торопит? Отредактировано пользователем 30 ноября 2012 г. 16:31:42(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
да не все правильно if (signEL.length != 64){//если 64 - это не pkcs7 в Java на это <> ошибку рисует? да в общем нет ......... не успеешь сделать одно, как тут же не успеваешь сделать другое :-)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,752   Сказал «Спасибо»: 579 раз Поблагодарили: 2307 раз в 1807 постах
|
Oleg_tgl написал:да не все правильноif (signEL.length != 64){//если 64 - это не pkcs7 в Java на это <> ошибку рисует? да в общем нет ......... не успеешь сделать одно, как тут же не успеваешь сделать другое :-) Цитата: в Java на это <> ошибку рисует?
не знаю, у кого, что рисует... Цитата:Help & - логическое И | - логическое ИЛИ ^ - исключающее ИЛИ || - ИЛИ (OR) && - И (AND) ! - отрицание НЕ (NOT) == - равно!= - не равно ? : - тернарный оператор Цитата: есть код, генерируемые файлы не проходят проверку на сайте но программно проверка не проходит
т.е. это "опечатка", как и "в коде с !=64 " и проверка в коде проходит, так? (риторический вопрос...) Отредактировано пользователем 30 ноября 2012 г. 17:03:39(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
что то я подзапутался на этот Код:
// проверка подписи
final Signature sigVerify = Signature.getInstance(Constants.SIGN_EL_ALG);
sigVerify.initVerify(publicKey2012);
// sigVerify.initVerify(publicKey2011);
sigVerify.update(SAMPLE_TEXT.getBytes());
final boolean signELver = sigVerify.verify(signEL);
System.out.println("Signature verifies (signEL) is: " + signELver);
System.out.println("sigVerify.getAlgorithm(): " + sigVerify.getAlgorithm());
System.out.println("sigVerify.getProvider(): " + sigVerify.getProvider());
//http://egov.samregion.ru/technologies/itmegved
System.out.println("signEL="+signEL.length);
[b]if (signEL.length != 64){//если 64 - это не pkcs7[/b]
//Требования к форматам проверяемых сертификатов и электронных документов
//http://notary.cryptopro.ru/Notary_Help.htm
//приказом Министерства связи и массовых коммуникаций Российской Федерации от 23.03.2009 № 41
// "Требования к технологиям, форматам, протоколам информационного взаимодействия,
// унифицированным программно-техническим средствам подсистемы удостоверяющих центров
// общероссийского государственного информационного центра"
final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(signEL);
final ContentInfo all = new ContentInfo();
[b] try {[/b]
all.decode(asnBuf);
System.out.println("contentType================"+all.contentType.value);
[b] } catch (Asn1Exception e) {
System.out.println("это не pkcs7");
e.printStackTrace();
} [/b]
} else {System.out.println("это не pkcs7");}
выдает Signature verifies (signEL) is: truesigVerify.getAlgorithm(): GOST3411withGOST3410EL sigVerify.getProvider(): JCP version 1.0 signEL=64 это не pkcs7в крипто-про в программе проверку проходит, на сайте http://notary.cryptopro.ru/Notary_Help.htm соответственно нет ..... вопрос: для идентификации подписи для требования pkcs7 достаточно двух проверок на размер signEL.length != 64 и возможность декодирования final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(signEL); final ContentInfo all = new ContentInfo();
или еще что то проверять?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,027  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 727 раз в 685 постах
|
Пожалуй, это все проверки. Вы можете дополнительно реализовать какие-то свои механизмы анализа подписи не только по длине, но и допустим, по структуре, перед decode, хотя декодер делает ту же работу. Отредактировано пользователем 30 ноября 2012 г. 17:28:39(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
пример CAdES.SignExample проверка не проходит Код:ЭЦП 1: НЕ ВЕРНА
Статус сертификата подписи - Проверка не проводилась
Код: Collection<X509Certificate> chain = new ArrayList<X509Certificate>();
PrivateKey privateKey = Configuration.loadConfiguration(chain);
CAdESSignature cadesSignature = new CAdESSignature(false);
// Создаем подписанта CAdES-BES.
cadesSignature.addSigner(privateKey, chain, CAdESType.CAdES_BES, null);
//эта к сожалению не идет смотри форум
//http://www.cryptopro.ru/forum2/Default.aspx?g=posts&t=5516
// а здесь про усовершенствованную ЭЦП
//http://www.cryptopro.ru/forum2/Default.aspx?g=topics&f=9
// Создаем подписанта CAdES-X Long Type 1.
// cadesSignature.addSigner(privateKey, chain, CAdESType.CAdES_X_Long_Type_1,
// Configuration.TSA_ADDRESS);
// Завершаем создание подписи с двумя подписантами.
byte[] cadesCms = cadesSignature.sign(Configuration.DATA);
Array.writeFile(Configuration.TEST_DIR + Configuration.dat_FILENAME, Configuration.DATA);
Array.writeFile(Configuration.TEST_DIR + Configuration.SIGNATURE_FILENAME, cadesCms);
Вложение(я):  CMSSignature.bin (1kb) загружен 2 раз(а). CMSSignature.dat (1kb) загружен 2 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
формально проверку прошла
signEL=673 contentType================[I@3e0ebb
или cadesCms это не pkcs7 ? что то совсем запутался :-)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,027  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 727 раз в 685 постах
|
У меня созданная в примере кадес подпись декодируется с помощью Код:
final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(cadesCms);
final ContentInfo all = new ContentInfo();
try {
all.decode(asnBuf);
System.out.println("contentType================"+all.contentType.value);
} catch (Asn1Exception e) {
System.out.println("это не pkcs7");
e.printStackTrace();
}
Далее можете использовать для проверки подписи либо cades.jar, либо по примерам в samples.jar / CMSVerify. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close