Статус: Новичок
Группы: Участники
Зарегистрирован: 15.11.2023(UTC) Сообщений: 6 Откуда: Saint-Petersburg
Сказал(а) «Спасибо»: 1 раз
|
Добрый день! подскажите, что может быть сделано не так? имеем тестовый сертификат госуслуг сертификат алгоритма ГОСТ Р 34.11-2012 256 бит подгрузил все свежие списки отозванных сертов из репозитория http://certenroll.test.gosuslugi.ru/cdp/в цепочке подписания находится сам сертификат, которым подписываем и корневой сертификат УЦ JCP 5.0.40363-A Код:
digest OID is null
; error codes: [-2] 'Application error',
at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
at JspTest.testSign(JspTest.java:119)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
Caused by: java.lang.NullPointerException: digest OID is null
at org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder.find(Unknown Source)
at org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder.find(Unknown Source)
at org.bouncycastle.cms.SignerInfoGeneratorBuilder.createGenerator(Unknown Source)
at org.bouncycastle.cms.SignerInfoGeneratorBuilder.build(Unknown Source)
... 26 more
Код: Зависимости bc
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.60</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.60</version>
</dependency>
Код: инициализация Провайдеров
System.setProperty("file.encoding", "UTF-8");
Security.addProvider(new JCSP());
Security.addProvider(new JCP());
Security.addProvider(new RevCheck());// провайдер проверки сертификатов JCPRevCheck
System.setProperty("com.sun.security.enableAIAcaIssuers", "true");
System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true");
Код: загрузка кейстора
log.info("Loading PFX");
KeyStore ks = KeyStore.getInstance(JCSP.PFX_STORE_NAME, JCSP.PROVIDER_NAME);
ks.load(new FileInputStream(ROOT_DIR + KEY_STORE_FILENAME), KEY_PASSWORD.toCharArray());
log.info("Loading PFX completed!");
Код:код подписания
CAdESSignature cadesSignature= new CAdESSignature();
List<X509Certificate> signerCertificateChain = new ArrayList<>();
signerCertificateChain.addAll(certChain); - тут корневой серт и серт для подписания
cadesSignature.addSigner(
JCSP.PROVIDER_NAME, // Имя провайдера, который будет использоваться для создания подписи.
null,// Идентификатор алгоритма хэширования, который будет использоваться для вычисления дайджеста (хэша) подписываемых данных.
null,// Идентификатор алгоритма подписи, который будет использоваться для создания электронной подписи.
key, // Приватный ключ подписанта.
signerCertificateChain, // Цепочка сертификатов подписанта.
CAdESType.CAdES_BES, // Тип CAdES подписи.
null, // Адрес TSA службы.
false, // Заверяющая ли подпись.
null, // Таблица подписанных аттрибутов для добавления в подпись.
null, // Таблица неподписанных аттрибутов для добавления в подпись.
getCrl(), // CRL (списков отзыва сертификатов), связанных с подписью.
true // Добавить ли цепочку подписанта в подпись.
);
в cacerts добавил корневой сертификат для основного сертификата из кейстора (кейсторы переименовал чтоб загрузились на сайт) skl.txt (5kb) загружен 1 раз(а). cacerts.txt (165kb) загружен 0 раз(а). пароль 1234567890 Спасибо! Отредактировано пользователем 17 ноября 2023 г. 10:55:30(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. Что у вас за версия JCP в формате x.y.zzzz? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.11.2023(UTC) Сообщений: 6 Откуда: Saint-Petersburg
Сказал(а) «Спасибо»: 1 раз
|
Автор: Евгений Афанасьев Здравствуйте. Что у вас за версия JCP в формате x.y.zzzz? Java 17 Java jcp 5.0.40363-A Кейстор создавался путем экспорта закрытого ключа сертификата пользователя из КриптоПро CSP в PKCS12 (.PFX)
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.11.2023(UTC) Сообщений: 6 Откуда: Saint-Petersburg
Сказал(а) «Спасибо»: 1 раз
|
Акуализировал в основном сообщении информацию, + добавил код как загружаю кейстор. может ли проблема заключаться в том, что я использую провайдер JCSP? но JCP не может работать с PFX Отредактировано пользователем 17 ноября 2023 г. 10:21:10(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. Попробуйте либо передать нужный OID алгоритма хэширования и OID алгоритма ключа вместо двух null в addSigner, либо оставить null и взять более новую сборку (до какой-то версии надо было обязательно передавать OID, а не null). Код:
public static String keyAlgToDigestOid(String keyAlgName) {
if (keyAlgName.equalsIgnoreCase(JCP.GOST_EL_2012_256_NAME) ||
keyAlgName.equalsIgnoreCase(JCP.GOST_DH_2012_256_NAME) ||
keyAlgName.equalsIgnoreCase(JCP.GOST_PARAMS_SIG_2012_256_KEY_OID) ||
keyAlgName.equalsIgnoreCase(JCP.GOST_PARAMS_EXC_2012_256_KEY_OID)) {
return JCP.GOST_DIGEST_2012_256_OID;
}
else if (keyAlgName.equalsIgnoreCase(JCP.GOST_EL_2012_512_NAME) ||
keyAlgName.equalsIgnoreCase(JCP.GOST_DH_2012_512_NAME) ||
keyAlgName.equalsIgnoreCase(JCP.GOST_PARAMS_SIG_2012_512_KEY_OID) ||
keyAlgName.equalsIgnoreCase(JCP.GOST_PARAMS_EXC_2012_512_KEY_OID)) {
return JCP.GOST_DIGEST_2012_512_OID;
}
return JCP.GOST_DIGEST_OID;
}
public static String keyAlgToKeyAlgorithmOid(String keyAlgName) {
if (keyAlgName.equalsIgnoreCase(JCP.GOST_EL_2012_256_NAME) ||
(keyAlgName.equalsIgnoreCase(JCP.GOST_DH_2012_256_NAME))) {
return JCP.GOST_PARAMS_SIG_2012_256_KEY_OID;
}
if (keyAlgName.equalsIgnoreCase(JCP.GOST_EL_2012_512_NAME) ||
(keyAlgName.equalsIgnoreCase(JCP.GOST_DH_2012_512_NAME))) {
return JCP.GOST_PARAMS_SIG_2012_512_KEY_OID;
}
return JCP.GOST_EL_KEY_OID;
}
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close