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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Илья Кузьмин  
#11 Оставлено : 28 сентября 2020 г. 19:41:46(UTC)
Илья Кузьмин

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
Код:

cAdESSignature.addSigner(JCSP.PROVIDER_NAME // <- в примере выше стоит JCP, хотя был JCSP

и
Код:

AdESConfig.setDefaultProvider(JCSP.PROVIDER_NAME...

в начале.

AdESConfig провайдер устанавливается каждый запуск. с провайдером JCSP как раз пустые сертификаты в подписи.

Вот какие провайдеры проставляются каждый запуск
Цитата:
override suspend fun initProviders() {
if (Security.getProvider(JCSP.PROVIDER_NAME) == null) {
Security.addProvider(JCSP())
}

if (Security.getProvider(Provider.PROVIDER_NAME) == null) {
Security.addProvider(Provider())
}

cpSSLConfig.setDefaultSSLProvider(JCSP.PROVIDER_NAME)
if (Security.getProvider(RevCheck.PROVIDER_NAME) == null) {
Security.addProvider(RevCheck())
}
AdESConfig.setDefaultProvider(JCSP.PROVIDER_NAME)

if (Security.getProvider("JTLS") == null) {
Security.addProvider(Provider())
}

if (Security.getProvider("JCP") == null) {
Security.addProvider(JCP())
}

cpSSLConfig.setDefaultSSLProvider("JCSP")

System.setProperty("ru.CryptoPro.CAdES.validate_tsp", "false")
System.setProperty("com.sun.security.crl.timeout", "5")
System.setProperty("ru.CryptoPro.crl.read_timeout", "5")

System.setProperty("com.sun.security.enableCRLDP", "true")
System.setProperty("com.ibm.security.enableCRLDP", "true")
System.setProperty("tls_prohibit_disabled_validation", "false")
}


Итоговый код подписи
Цитата:
val cAdESSignature = CAdESSignature(true)
cAdESSignature.addSigner(JCSP.PROVIDER_NAME, keys[0], certificates, CAdESType.CAdES_BES, null, false)
val signatureStream = ByteArrayOutputStream()
cAdESSignature.open(signatureStream)
cAdESSignature.update(data)
cAdESSignature.close()
return signatureStream.toByteArray()


ASN1 файл, который генерируется

Цитата:
0 NDEF: SEQUENCE {
2 9: OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2)
: (PKCS #7)
13 NDEF: [0] {
15 NDEF: SEQUENCE {
17 1: INTEGER 1
20 14: SET {
22 12: SEQUENCE {
24 8: OBJECT IDENTIFIER '1 2 643 7 1 1 2 3'
34 0: NULL
: }
: }
36 NDEF: SEQUENCE {
38 9: OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
: (PKCS #7)
: }
51 694: SET {
55 690: SEQUENCE {
59 1: INTEGER 1
62 150: SEQUENCE {
65 127: SEQUENCE {
67 35: SET {
69 33: SEQUENCE {
71 9: OBJECT IDENTIFIER
: emailAddress (1 2 840 113549 1 9 1)
: (PKCS #9. Deprecated, use an altName extension instead)
82 20: IA5String 'support@cryptopro.ru'
: }
: }
104 11: SET {
106 9: SEQUENCE {
108 3: OBJECT IDENTIFIER countryName (2 5 4 6)
: (X.520 DN component)
113 2: PrintableString 'RU'
: }
: }
117 15: SET {
119 13: SEQUENCE {
121 3: OBJECT IDENTIFIER localityName (2 5 4 7)
: (X.520 DN component)
126 6: PrintableString 'Moscow'
: }
: }
134 23: SET {
136 21: SEQUENCE {
138 3: OBJECT IDENTIFIER organizationName (2 5 4 10)
: (X.520 DN component)
143 14: PrintableString 'CRYPTO-PRO LLC'
: }
: }
159 33: SET {
161 31: SEQUENCE {
163 3: OBJECT IDENTIFIER commonName (2 5 4 3)
: (X.520 DN component)
168 24: PrintableString 'CRYPTO-PRO Test Center 2'
: }
: }
: }
194 19: INTEGER
: 12 00 49 D8 82 4C AD 6B ..I..L.k
: 2E 38 CF 2C D8 00 01 00 .8.,....
: 49 D8 82 I..
: }
215 12: SEQUENCE {
217 8: OBJECT IDENTIFIER '1 2 643 7 1 1 2 3'
227 0: NULL
: }
229 373: [0] {
233 24: SEQUENCE {
235 9: OBJECT IDENTIFIER contentType (1 2 840 113549 1 9 3)
: (PKCS #9)
246 11: SET {
248 9: OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
: (PKCS #7)
: }
: }
259 79: SEQUENCE {
261 9: OBJECT IDENTIFIER messageDigest (1 2 840 113549 1 9 4)
: (PKCS #9)
272 66: SET {
274 64: OCTET STRING
: E5 4A 9B 27 47 88 44 85 .J.'G.D.
: 6F AB 59 1D 1D 88 58 5F o.Y...X_
: A5 97 B6 FF F6 A8 F4 91 ........
: 13 F7 06 8E 25 47 D6 C6 ....%G..
: BC 6E 48 BE 3F 1B 02 3E .nH.?..>
: C5 A2 77 7F 19 16 6C 48 ..w...lH
: 34 BD 48 A7 B4 1A 46 AB 4.H...F.
: 8D D4 49 78 17 45 D8 9D
: }
: }
340 262: SEQUENCE {
344 11: OBJECT IDENTIFIER
: signingCertificateV2 (1 2 840 113549 1 9 16 2 47)
: (S/MIME Authenticated Attributes)
357 246: SET {
360 243: SEQUENCE {
363 240: SEQUENCE {
366 237: SEQUENCE {
369 10: SEQUENCE {
371 8: OBJECT IDENTIFIER '1 2 643 7 1 1 2 3'
: }
381 64: OCTET STRING
: 33 12 92 5E D8 5A 3C 28 3..^.Z<(
: 39 54 A6 9D 62 3A 61 FE 9T..b:a.
: 26 B2 16 BE A0 5D EF 0F &....]..
: 4B D7 64 3E D5 45 FD 60 K.d>.E.`
: D2 A2 2F 2F C4 D3 2B 2E ..//..+.
: 7A AE DD 66 B3 14 AE 13 z..f....
: 3C 6B 11 1C 26 C9 A1 79 <k..&..y
: 50 EA E1 17 68 BA 10 E2
447 156: SEQUENCE {
450 132: SEQUENCE {
453 129: [4] {
456 127: SEQUENCE {
458 35: SET {
460 33: SEQUENCE {
462 9: OBJECT IDENTIFIER
: emailAddress (1 2 840 113549 1 9 1)
: (PKCS #9. Deprecated, use an altName extension instead)
473 20: IA5String 'support@cryptopro.ru'
: }
: }
495 11: SET {
497 9: SEQUENCE {
499 3: OBJECT IDENTIFIER
: countryName (2 5 4 6)
: (X.520 DN component)
504 2: PrintableString 'RU'
: }
: }
508 15: SET {
510 13: SEQUENCE {
512 3: OBJECT IDENTIFIER
: localityName (2 5 4 7)
: (X.520 DN component)
517 6: PrintableString 'Moscow'
: }
: }
525 23: SET {
527 21: SEQUENCE {
529 3: OBJECT IDENTIFIER
: organizationName (2 5 4 10)
: (X.520 DN component)
534 14: PrintableString 'CRYPTO-PRO LLC'
: }
: }
550 33: SET {
552 31: SEQUENCE {
554 3: OBJECT IDENTIFIER
: commonName (2 5 4 3)
: (X.520 DN component)
559 24: PrintableString 'CRYPTO-PRO Test Center 2'
: }
: }
: }
: }
: }
585 19: INTEGER
: 12 00 49 D8 82 4C AD 6B ..I..L.k
: 2E 38 CF 2C D8 00 01 00 .8.,....
: 49 D8 82 I..
: }
: }
: }
: }
: }
: }
: }
606 10: SEQUENCE {
608 8: OBJECT IDENTIFIER '1 2 643 7 1 1 6 2'
: }
618 128: OCTET STRING
: 05 8A E8 F4 2E 10 BE 52 .......R
: D4 33 64 BF 96 9E EA 7D .3d....}
: 44 E4 47 8D A8 9E 07 C8 D.G.....
: B7 FB 3E 91 77 83 F5 50 ..>.w..P
: 05 5B D8 34 71 3E 0C 4D .[.4q>.M
: 34 3F 7E B7 57 DF 15 1B 4?~.W...
: 2F 40 FE 92 42 F6 D2 1C /@..B...
: 64 65 8B 5A FE C2 04 5A de.Z...Z
: E3 B7 4B B7 2D B5 EC 28 ..K.-..(
: 29 61 C3 27 86 37 80 03 )a.'.7..
: AB 50 7D 35 6E 39 26 17 .P}5n9&.
: 95 57 71 95 12 95 86 9F .Wq.....
: 53 9A 2F A0 9F 9A 63 78 S./...cx
: FE 02 DE BD 55 80 3C 7E ....U.<~
: 66 33 87 1F DC AD CE 08 f3......
: B5 D5 81 74 4B B8 25 14
: }
: }
: }
: }
: }


Offline Евгений Афанасьев  
#12 Оставлено : 28 сентября 2020 г. 19:57:34(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,963
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Провайдер на сертификаты не влияет, он только вычисляет хеш и подпись. Какой именно результат вы хотите получить?
Offline Илья Кузьмин  
#13 Оставлено : 28 сентября 2020 г. 20:24:47(UTC)
Илья Кузьмин

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Провайдер на сертификаты не влияет, он только вычисляет хеш и подпись. Какой именно результат вы хотите получить?


Хочу чтобы сертификат подписанта был в подписи. Чтобы можно было проверить подпись сертификатом из неё же
Offline Евгений Афанасьев  
#14 Оставлено : 29 сентября 2020 г. 8:03:31(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,963
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
У одной из версий addSigner есть параметр boolean addCertificateChain (последний), если он true, то в подпись будет добавлена цепочка сертификата подписи. Описание классов и функций есть в папке javadoc дистрибутива jcp.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.