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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline ArtRudov  
#1 Оставлено : 3 сентября 2019 г. 17:48:37(UTC)
ArtRudov

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

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

Всем привет.

Подскажите, пожалуйста, верно ли я иду, если нет, прошу направить, пожалуйста.

Я получил данные, зашифрованные публичным ключом, в виде строки. Я ее на сервере энкодю в base64, потом передаю на клиента.

Далее на клиенте, как я понимаю, мне надо используя объект CPEnvelopedData, используя метод Decrypt, дешифровать.

Вот код
Код:

      const decodeV2 = `M0DQYJK1I0NAQcD0DT9A0CAQAxQJPM0CSwIBAD9AXQwQFfMSAwHgYJK1I0NAQkBFhF1Y0BzZWNyZXQtbmV0Lm5ldDEYMBYGBS9A2QBEg0xMTAyMjI1MDExMDIwMRowGAYIK0DA0DAQESDDAwMjIyNTExMzA5MjELMAkGA1UEBhMCUlUxJzAlBgNVBAgMHjIyIQ7Q544SQ6Q5MRcwFQYDVQQHDA4RQ9c7MTYwNAYDVQQJDC0/C06iQhQ+Y1U5IDExNywg48IDYwMTAwLgYDVQQLDCcj5B4yRP04SRG1CDElMCMGA1UECgwc4eICYmEtVAxBIjElMCMGA1UEAwwc4eICYmEtVAxBIgIPZ1dFQ90RO29XMvMB8GCC9AwcBAQEBMBMGBy9AwICJAAGCC9AwcBAQICB9M9MCgEIH4ARxvR3JrdbUV9DcCR9S9U0Ra9BA9U9fQYJK0DBwECBQEBWYwHwYIK0DBwEBAQEwEwYHK0DAgIkAAYIK0DBwEBAgIDQwAEQD9YgtL9C02K9FR8JM9y9XQ99TxArb91bVV99V990RBAgwfk9ET9M0BLgYJK1I0NAQcBMB0GBi9AwICFTATBA91/W0TVAYHK0DAgIfA9AQAAW29Ng9EC9K98/IX8XS9SE6c91fVYYG9U9PS9i9QIrEWly99QBWQ0bP0DNgciG13VMcS9RD5tV1gSRYJmAFM9Oz90aS05L1b/SA4ZC9K1JTkFA9bGtc2qE9R9B1qJD9Q90oWFFV9Y9Zk1BW1gS9YD0Lw9MlpIO9Um90YTy9Ilh2G9f1JAzMiT1HED90/f9qT90xEy9OAoD9Hw9W9R9LK91eQ==`

      const cert = yield oCertificates.Item(1)

      const envelopedData = yield cadesplugin.CreateObjectAsync('CAdESCOM.CPEnvelopedData')

      yield (envelopedData.propset_ContentEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY)

      const recipients = yield envelopedData.Recipients
      yield recipients.Clear()
      yield recipients.Add(cert)
      yield envelopedData.propset_Recipients = recipients

      yield envelopedData.Decrypt(decodeV2)


в ответ при вызове Decrypt падает ошибка
Код:
Uncaught (in promise) {message: "Internal error. (0x80091004)", requestid: 35, type: "error"}


Может я не тот объект и метод выбрал?

Вот что мне нужно сделать:
1. Данные нужно расшифровать переданным сертификатом;
2. Сконвертировать в base64.

я уже голову сломал как это сделать через Browser Plug-in. Подскажите, пожалуйста.

Отредактировано пользователем 3 сентября 2019 г. 17:50:14(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#2 Оставлено : 3 сентября 2019 г. 19:08:25(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Здравствуйте.

Цитата:
Я получил данные, зашифрованные публичным ключом, в виде строки.


Каким образом?
EnvelopedData - работает с Enveloped CMS.



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

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
https://www.cryptopro.ru...page/symalgo_sample.html

Очень похоже, что требуется использовать cadescom.symmetricalgorithm
пример в async_code.js
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#4 Оставлено : 3 сентября 2019 г. 19:13:59(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Цитата:
Вот что мне нужно сделать:
1. Данные нужно расшифровать переданным сертификатом;


Это чьё-то требование?
Почему не используется CMS? Плагин сам бы нашёл сертификат и ключ для расшифровки.
Техническую поддержку оказываем тут
Наша база знаний
Offline ArtRudov  
#5 Оставлено : 3 сентября 2019 г. 19:14:29(UTC)
ArtRudov

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

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

Мне это все нужно для авторизации по серитфикату в ЭДО Диадок.

Для этого мне нужно было экспортировать сертификат. Я это сделал. Передал в апи Диадока, они, как я понял, зашифровали мне ответ моим публичным ключом.

В ответ мне надо сделать что я уже сказал в первом сообщении. Или же воспользоваться другой версией АПИ.

Где я получаю вот это
Цитата:
то выдаваемый токен будет зашифрован в адрес пользовательского сертификата. В этом случае тело ответа следует интерпретировать как структуру CMS EnvelopedData в DER-кодировке;


На бэке у меня node.js, я пробовал через node-forge разобрать, но я так понимаю, что не получится. Так как нужен ключик, а я уже так запутался, что мозг плывет:)
Offline ArtRudov  
#6 Оставлено : 3 сентября 2019 г. 19:16:31(UTC)
ArtRudov

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

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

через node-forge пробовал разобрать как asn.1, выдавал ошибку
Цитата:
Only 8, 16, 24, or 32 bits supported: 1000


Честно, я уже столько бьюсь над этой задачей, что в голове каша:)
Offline ArtRudov  
#7 Оставлено : 3 сентября 2019 г. 19:20:06(UTC)
ArtRudov

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

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

Ответ от Диадока такой
Первая версия апи

Код:
0�	*�H��
���0��1�O0�K0�t0�_1 0	*�H��
	uc@secret-net.net10*�d
110222501102010*��00222511309210	URU1'0%U22 Алтайский край10UБарнаул1604U	-пр-кт Строителей 117, пом 60100.U'Удостоверяющий центр1%0#U
ООО "ЦИБ-Сервис"1%0#UООО "ЦИБ-Сервис"d�]���;`��s/0*�0*�$*���0��0( `(�&�����/B):{%�e��J��Q\
�/����}	*��f0*�0*�$*�C@���<%+
>�����N��̺����=��ĸ
�u�� |k[���
���V_<+tʚV�؂�yG�[b��G0��	*�H��
0*�0�0��G��*��h�$�S�~�3!��~�;4���mP�����>y�Y�Z��	��0��ז�a$҆b\�zUS6�&y7���~2c:���5��ׯ��:�c)�c�TL_�7


Вторая версия

Код:
0��	*�H��
���0��1�O0�K0�t0�_1 0	*�H��
	uc@secret-net.net10*�d
110222501102010*��00222511309210	URU1'0%U22 Алтайский край10UБарнаул1604U	-пр-кт Строителей 117, пом 60100.U'Удостоверяющий центр1%0#U
ООО "ЦИБ-Сервис"1%0#UООО "ЦИБ-Сервис"d�]���;`��s/0*�0*�$*���0��0(  ����I	Cf��9XF�~�vPF�q�G��n��}	*��f0*�0*�$*�C@hb��xbF�舓Q�0e�A�i�U���`�K��)T�0 ����B��ϫ��w`�qپ4�)�%8�^�Z<0�.	*�H��
0*�0?o�eow-*���m:P�����
b/R����}zd��z���������H����6/��&�C~�����졜�D_�}3��Vg[�Nw�"��E�^����W������,8�Xځo���zo�[g�?�����qKҋ[�r��]�m��g9m���6�J$�Q��t
ԺE�b=����`R~�$���?���Vn;J�K��ݨ��k �C�3�Ɗ�޻J�F�l��XDْ��	=0I9S�OQĠ�
�	M4��
x��IkL


во второй версии, мне надо сделать вот это

Цитата:
авторизация по сертификату является двухфазной. В этом случае ответ следует интерпретировать как зашифрованную строку. Для получения авторизационного токена необходимо расшифровать ее сертификатом с закрытым ключом и подтвердить расшифровку с помощью запроса AuthenticateConfirm;


Так как с первой я вообще упал в затык, пошел по второму варианту. Я ответ в base64, потом его в Decrypt, то есть все то, что в первом сообщении.

На мой вопрос о том что во втором случае я получил верные данные и мне их разобрать надо, разработчики АПИ Диадока ответили -
Цитата:
Ответ метода надо интерпретировать как бинарное зашифрованное сообщение.

Результат расшифровки нужно закодировать в base64 и передать в AuthenticateConfirm параметром token

Отредактировано пользователем 3 сентября 2019 г. 19:22:42(UTC)  | Причина: Не указана

Offline ArtRudov  
#8 Оставлено : 3 сентября 2019 г. 19:34:51(UTC)
ArtRudov

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

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

Автор: Андрей Писарев Перейти к цитате
https://www.cryptopro.ru/sites/default/files/products/cades/demopage/symalgo_sample.html

Очень похоже, что требуется использовать cadescom.symmetricalgorithm
пример в async_code.js


Попробую, завтра с утра, в первую очередь:) Спасибо, это уже подсказка.
Offline Андрей Писарев  
#9 Оставлено : 3 сентября 2019 г. 19:35:44(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
если это envelopeddata - использовать Интерфейс ICPEnvelopedData


или

Метод ICPEnvelopedData2::StreamDecrypt



Техническую поддержку оказываем тут
Наша база знаний
Offline ArtRudov  
#10 Оставлено : 3 сентября 2019 г. 19:37:04(UTC)
ArtRudov

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

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

Автор: Андрей Писарев Перейти к цитате
если это envelopeddata - использовать Интерфейс ICPEnvelopedData


или

Метод ICPEnvelopedData2::StreamDecrypt





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