Статус: Новичок
Группы: Участники
Зарегистрирован: 09.04.2021(UTC) Сообщений: 2 Откуда: Москва
|
На основе примеров SDK и изучения форумов получился код на Kotlin для создания отсоединенной подписи для Android устройства Код:
val ks = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true");
System.setProperty( "com.sun.security.enableCRLDP", "true" );
System.setProperty( "com.ibm.security.enableCRLDP", "true" );
ks.load(null, null);
var certs: Array<Certificate>? = ks.getCertificateChain(alias);
var signature = CAdESSignature(false);
val passwordParameter = JCPProtectionParameter(password.toCharArray())
val privateKey = ks.getEntry(alias, passwordParameter) as JCPPrivateKeyEntry
val cert = getCertificate(alias, ks);
Single.fromCallable {
signature.addSigner(JCP.PROVIDER_NAME,
null, null,
privateKey.privateKey,
certs!!.toList(),
CAdESType.CAdES_BES,
null,
false);
}.subscribeOn(Schedulers.io())
.subscribe({s -> s},{throwable -> Log.e("Error", "Throwable " + throwable)});
val out = ByteArrayOutputStream();
signature.open(out);
signature.update(bytes);
signature.close();
val signedCode = out.toByteArray();
return signedCode;
Возникает ошибка: Код:
W/JCP ( 3184): ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build :: unable to find valid certification path to requested target
W/JCP ( 3184): ru.CryptoPro.reprov.certpath.JCPCertPathBuilderException: unable to find valid certification path to requested target
W/JCP ( 3184): at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.engineBuild(Unknown Source:190)
W/JCP ( 3184): at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl$1CertPathBuilderWrapper.build(Unknown Source:35)
W/JCP ( 3184): at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source:311)
W/JCP ( 3184): at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source:98)
W/JCP ( 3184): at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source:266)
W/JCP ( 3184): at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source:22)
W/JCP ( 3184): at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source:19)
W/JCP ( 3184): at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source:15)
W/JCP ( 3184): at ru.croc.mobile.crpt.business.MainActivity$CryptoProNativeApiImpl$sign$1.call(MainActivity.kt:226)
W/JCP ( 3184): at ru.croc.mobile.crpt.business.MainActivity$CryptoProNativeApiImpl$sign$1.call(MainActivity.kt:60)
W/JCP ( 3184): at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
W/JCP ( 3184): at io.reactivex.Single.subscribe(Single.java:3603)
W/JCP ( 3184): at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
W/JCP ( 3184): at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
W/JCP ( 3184): at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
W/JCP ( 3184): at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
W/JCP ( 3184): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/JCP ( 3184): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
W/JCP ( 3184): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/JCP ( 3184): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/JCP ( 3184): at java.lang.Thread.run(Thread.java:919)
E/@@@@ ( 3184): Throwable Error occurred during building the certification path for the target:
E/@@@@ ( 3184): serial: 2ff0d6900f3acdd8e43589b2ca5c280eb
E/@@@@ ( 3184): subject: <subject>
E/@@@@ ( 3184): issuer: CN="Тестовый подчиненный УЦ ООО \"КРИПТО-ПРО\" ГОСТ 2012 (УЦ 2.0)", O="ООО \"КРИПТО-ПРО\"", STREET=ул. Сущёвский вал д. 18, L=Москва, ST=77 Москва, C=RU, OID.1.2.643.3.131.1.1=#120C303037373137313037393931, OID.1.2.643.100.1=#120D31303337373030303835343434, EMAILADDRESS=info@cryptopro.ru
E/@@@@ ( 3184): not before: Mon Mar 22 09:12:30 GMT+03:00 2021
E/@@@@ ( 3184): not after: Tue Jun 22 09:22:30 GMT+03:00 2021
E/@@@@ ( 3184): signature provider: JCP
E/@@@@ ( 3184): validation date: null
E/@@@@ ( 3184): native implementation: false
E/@@@@ ( 3184): : unable to find valid certification path to requested target; error codes: [33] 'PKIX failure: invalid parameters of certificate',
В хранилище сертификатов на устройстве в область "user" добавил корневой и промежуточный сертификаты. В xml\network_security_config.xml добавил: Код:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">testca2012.cryptopro.ru</domain>
</domain-config>
</network-security-config>
Что я делаю не так? Отредактировано пользователем 9 апреля 2021 г. 17:00:26(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 09.04.2021(UTC) Сообщений: 2 Откуда: Москва
|
Добрый день! Включил логирование с уровнем DEBUG. Увидел исключение
Caused by: java.security.NoSuchProviderException: no such provider: JCP
и нашел у себя ошибку. При добавлении подписанта использовал JCP провайдер вместо JCSP. Большое спасибо за помощь, подпись формируется.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Да, тут Цитата: signature.addSigner(JCP.PROVIDER_NAME,
должен быть JCSP.PROVIDER_NAME. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close