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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline demon101  
#1 Оставлено : 12 декабря 2011 г. 17:16:09(UTC)
demon101

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

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

Добрый день,

Пытаюсь улучшать CADES-BES подпись
При наличии сертификата в локальном хранилище -- все работает.
Если же сертификата нет, то улучшение и проверка не работает (В этом в принципе и проблема, я не очень понимаю, для чего нужен сертификат в локальном хранилище для улучшения и проверки)
Если внедрять сертификат в CADES-BES подпись, то выдается ошибка 2148081678 (8009200E 2148081678 CRYPT_E_NO_SIGNER: The signed message doesn't have a signer for the specified signer index)

CADES-BES подпись создаем следующим образом (примитивы bouncycastle):
Код:

            /* initialize data to sign with CMS structure */
            CMSTypedData msg = new CMSProcessableByteArray(data);

            /* create CMS signature data builder */
            CMSSignedDataGenerator gen = new CMSSignedDataGenerator();

            /* provide required certificates */
            gen.addCertificates(new JcaCertStore(Arrays.asList(certificate)));

            /* initialize content signer (message digest) */
            ContentSigner contentSigner = new JcaContentSignerBuilder("SHA256withRSA")
                    .setProvider("BC").build(privateKey);

            /* initialize digest provider (where to get digest from) */
            DigestCalculatorProvider calculatorProvider = new JcaDigestCalculatorProviderBuilder()
                    .setProvider("BC").build();

            /* force to add described signature to CMS structure */
            gen.addSignerInfoGenerator(new SignerInfoGeneratorBuilder(calculatorProvider)
                    .build(contentSigner, certificate));

            /* sign data */
            CMSSignedData signedData = gen.generate(msg, true);

            /* return signed CMS structure */
            return signedData.getEncoded();

Сертификат с приватным ключом. (в аттаче)

Вопрос: что не так в структуре и зачем нужен сертификат при улучшения?




Отредактировано пользователем 12 декабря 2011 г. 17:34:04(UTC)  | Причина: Не указана

Вложение(я):
certificate.der (1kb) загружен 5 раз(а).
certificate.pem (2kb) загружен 6 раз(а).
private.p12 (4kb) загружен 6 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Новожилова Елена  
#2 Оставлено : 12 декабря 2011 г. 19:52:21(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Здравствуйте!

Цитата:
В этом в принципе и проблема, я не очень понимаю, для чего нужен сертификат в локальном хранилище для улучшения и проверки


Сертификат не обязательно должен находиться в локальном хранилище, но для проверки подписи или дополнения подписи CAdES-BES до других форматов он должен быть известен.

Необходимость сертификата при "улучшении" подписи зависит от формата подписи, до которого вы ее улучшаете. Часть форматов требует проведения проверки сертификата на отзыв, а провести такую проверку без сертификата нельзя.

Существуют ли способы указать сертификат при проверке и усовершенствовании, отличные от установки его в локальное хранилище, зависит от того, какие функции вы используете.
Offline Андрей Писарев  
#3 Оставлено : 12 декабря 2011 г. 19:56:30(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,334
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2210 раз в 1725 постах

p.s.

Цитата:
certificate.der


открытый ключ = RSA 1024бит


Техническую поддержку оказываем тут
Наша база знаний
Offline demon101  
#4 Оставлено : 12 декабря 2011 г. 20:02:10(UTC)
demon101

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

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

Новожилова Елена написал:
Здравствуйте!

Цитата:

Существуют ли способы указать сертификат при проверке и усовершенствовании, отличные от установки его в локальное хранилище, зависит от того, какие функции вы используете.

Используется функции библиотеки cades.dll, указанную в мануале: http://www.cryptopro.ru/...dapienhancecadesbes.html
Для проверки: http://www.cryptopro.ru/...simplifiedapiverify.html

В конечном итоге нам нужна подпись CAdES-X Long Type 1
Offline Новожилова Елена  
#5 Оставлено : 12 декабря 2011 г. 20:22:08(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
При усовершенствовании подписи Вы можете указать сертификат в параметре pSignerCert структуры CADES_SIGN_PARA.

При проверке подписи вы можете воспользоваться параметром pfnGetSignerCertificate структуры CRYPT_VERIFY_MESSAGE_PARA для того, чтобы задать callback-функцию поиска сертификата.

И в том и в другом случае, если сертификат уже содержится в подписи CAdES-BES, то дополнительно его указывать не нужно.
Offline demon101  
#6 Оставлено : 12 декабря 2011 г. 20:26:19(UTC)
demon101

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

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

Новожилова Елена написал:
При усовершенствовании подписи Вы можете указать сертификат в параметре pSignerCert структуры CADES_SIGN_PARA.

При проверке подписи вы можете воспользоваться параметром pfnGetSignerCertificate структуры CRYPT_VERIFY_MESSAGE_PARA для того, чтобы задать callback-функцию поиска сертификата.

И в том и в другом случае, если сертификат уже содержится в подписи CAdES-BES, то дополнительно его указывать не нужно.

Понятно.

Я пытаюсь внедрять сертификат в подпись, выдается ошибка (указанная в теме топика). Как это побороть?
Я как-то не так формирую подпись?
Вложение(я):
data-base64.txt.sig (2kb) загружен 8 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Андрей Писарев  
#7 Оставлено : 12 декабря 2011 г. 21:03:16(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,334
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2210 раз в 1725 постах
demon101 написал:
Новожилова Елена написал:
При усовершенствовании подписи Вы можете указать сертификат в параметре pSignerCert структуры CADES_SIGN_PARA.

При проверке подписи вы можете воспользоваться параметром pfnGetSignerCertificate структуры CRYPT_VERIFY_MESSAGE_PARA для того, чтобы задать callback-функцию поиска сертификата.

И в том и в другом случае, если сертификат уже содержится в подписи CAdES-BES, то дополнительно его указывать не нужно.

Понятно.

Я пытаюсь внедрять сертификат в подпись, выдается ошибка (указанная в теме топика). Как это побороть?
Я как-то не так формирую подпись?






сертификат и эцп = не ГОСТ

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#8 Оставлено : 12 декабря 2011 г. 21:05:39(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,334
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2210 раз в 1725 постах
+ asn1 - "битая" структура, если я правильно из base64 => bin преобразовал :) ...

Цитата:
0 $30 SEQUENCE: ==>0 ??? d'oh!
2 $06 OBJID: Подписанные данные (1.2.840.113549.1.7.2)
13 $A0 CONTEXT SPECIFIC: ==>0 ??? d'oh!
15 $30 SEQUENCE: ==>0
17 $02 INT: 01
20 $31 SETOF: ==>15
22 $30 SEQUENCE: ==>13
24 $06 OBJID: 2.16.840.1.101.3.4.2.1 XCN_OID_NIST_sha256 - ???? Silenced Silenced Silenced
35 $05 NULL:
37 $30 SEQUENCE: ==>0 ??? d'oh!
39 $06 OBJID: Данные PKCS#7 (1.2.840.113549.1.7.1)
50 $A0 CONTEXT SPECIFIC: ==>0
52 $24==>0
54 $04 OCTSTR: 48656C6C6F20776F726C6421
68 $00 unknown[0]:
70 $00 unknown[0]:
72 $00 unknown[0]:
74 $A0 CONTEXT SPECIFIC: ==>0
76 $30 SEQUENCE: ==>804
80 $30 SEQUENCE: ==>524
84 $A0 CONTEXT SPECIFIC: ==>3
86 $02 INT: 02
89 $02 INT: 161C12190000000000A6
101 $30 SEQUENCE: ==>13
103 $06 OBJID: SHA-1 with RSA Encryption (1.2.840.113549.1.1.5)
114 $05 NULL:
116 $30 SEQUENCE: ==>26
118 $31 SETOF: ==>24
120 $30 SEQUENCE: ==>22
122 $06 OBJID: Общее имя (2.5.4.3)
127 $13 PrintableString: Identity Center
144 $30 SEQUENCE: ==>30
146 $17 UTCTime: 111209120318Z
161 $17 UTCTime: 121209121318Z
176 $30 SEQUENCE: ==>14
178 $31 SETOF: ==>12
180 $30 SEQUENCE: ==>10
182 $06 OBJID: Общее имя (2.5.4.3)
187 $13 PrintableString: 123
192 $30 SEQUENCE: ==>159
195 $30 SEQUENCE: ==>13
197 $06 OBJID: Identifier for RSA encryption for use with Public Key Cryptosystem One defined by RSA Inc. (1.2.840.113549.1.1.1)
208 $05 NULL:
210 $03 BITString: 0030818902818100ACE23BDF076E2B4FEEF9F3E5DFA6581E069D7 ...
354 $A3==>251
357 $30 SEQUENCE: ==>248
360 $30 SEQUENCE: ==>29
362 $06 OBJID: Идентификатор ключа владельца (2.5.29.14)
367 $04 OCTSTR: 0414AA640A0BDC54EA5CE5D1DAB3F746A841FDCEA60C
391 $30 SEQUENCE: ==>31
393 $06 OBJID: Идентификатор ключа издателя (ЦС) (authorityKeyIdentifier) (2.5.29.35)
398 $04 OCTSTR: 3016801445AAF7ECAD0933EE8A97D06211791E37B88E06CB
424 $30 SEQUENCE: ==>57
426 $06 OBJID: cRLDistributionPoints (2.5.29.31)
431 $04 OCTSTR: http://repository.yotaid.ru/idcenter.crl
483 $30 SEQUENCE: ==>123
485 $06 OBJID: Доступ к информации о ЦС (1.3.6.1.5.5.7.1.1)
495 $04 OCTSTR: http://repository.yotaid.ru/idcenter.crt05+0†)http://repository.yotaid.ru/ocsp/ocsp.srf
608 $30 SEQUENCE: ==>13
610 $06 OBJID: SHA-1 with RSA Encryption (1.2.840.113549.1.1.5)
621 $05 NULL:
623 $03 BITString: 00775464D841E68D11D5F0524DFF0CCD90A442B5F2C14A247C91535E156D4450C05AD8 .....
884 $00 unknown[0]:
886 $31 SETOF: ==>317
890 $30 SEQUENCE: ==>313
894 $02 INT: 01
897 $30 SEQUENCE: ==>40
899 $30 SEQUENCE: ==>26
901 $31 SETOF: ==>24
903 $30 SEQUENCE: ==>22
905 $06 OBJID: Общее имя (2.5.4.3)
910 $13 PrintableString: Identity Center
927 $02 INT: 161C12190000000000A6
939 $30 SEQUENCE: ==>13
941 $06 OBJID: 2.16.840.1.101.3.4.2.1
952 $05 NULL:
954 $A0 CONTEXT SPECIFIC: ==>105
956 $30 SEQUENCE: ==>24
958 $06 OBJID: contentType (1.2.840.113549.1.9.3)
969 $31 SETOF: ==>11
971 $06 OBJID: Данные PKCS#7 (1.2.840.113549.1.7.1)
982 $30 SEQUENCE: ==>28
984 $06 OBJID: Время подписания(signingTime) (1.2.840.113549.1.9.5)
995 $31 SETOF: ==>15
997 $17 UTCTime: 111209121319Z
1012 $30 SEQUENCE: ==>47
1014 $06 OBJID: Хеш сообщения(messageDigest) (1.2.840.113549.1.9.4)
1025 $31 SETOF: ==>34
1027 $04 OCTSTR: C0535E4BE2B79FFD93291305436BF889314E4A3FAEC05ECFFCBB7DF31AD9E51A
1061 $30 SEQUENCE: ==>13
1063 $06 OBJID: АЛГОРИТМ ПОДПИСИ Identifier for RSA encryption for use with
Public Key Cryptosystem One defined by RSA Inc. ??? d'oh! (1.2.840.113549.1.1.1)
1074 $05 NULL:
1076 $04 OCTSTR: 79571540B67F6C3BE5FA6661F03F1798
1207 $00 unknown[0]:
1209 $00 unknown[0]:
1211 $00 unknown[0]:


Отредактировано пользователем 12 декабря 2011 г. 21:16:41(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline demon101  
#9 Оставлено : 12 декабря 2011 г. 21:09:16(UTC)
demon101

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

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

Андрей * написал:

сертификат и эцп = не ГОСТ

Мне нужен не гост.
При сертификате в локальном хранилище -- работает без госта.
Offline demon101  
#10 Оставлено : 12 декабря 2011 г. 21:10:16(UTC)
demon101

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

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

Андрей * написал:
+ asn1 - "битая" структура, если я правильно из base64 => bin преобразовал :) ...


Чем вы смотрите? я Крипто АРМ проперял, вроде все ок. На всякий приложу der
Вложение(я):
data-der.txt.sig (2kb) загружен 6 раз(а).

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