Статус: Участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Здравствуйте. Цитата:Я получил данные, зашифрованные публичным ключом, в виде строки. Каким образом? EnvelopedData - работает с Enveloped CMS. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Цитата:Вот что мне нужно сделать: 1. Данные нужно расшифровать переданным сертификатом; Это чьё-то требование? Почему не используется CMS? Плагин сам бы нашёл сертификат и ключ для расшифровки. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.04.2019(UTC) Сообщений: 15
|
Мне это все нужно для авторизации по серитфикату в ЭДО Диадок. Для этого мне нужно было экспортировать сертификат. Я это сделал. Передал в апи Диадока, они, как я понял, зашифровали мне ответ моим публичным ключом. В ответ мне надо сделать что я уже сказал в первом сообщении. Или же воспользоваться другой версией АПИ. Где я получаю вот это Цитата:то выдаваемый токен будет зашифрован в адрес пользовательского сертификата. В этом случае тело ответа следует интерпретировать как структуру CMS EnvelopedData в DER-кодировке; На бэке у меня node.js, я пробовал через node-forge разобрать, но я так понимаю, что не получится. Так как нужен ключик, а я уже так запутался, что мозг плывет:)
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.04.2019(UTC) Сообщений: 15
|
через node-forge пробовал разобрать как asn.1, выдавал ошибку Цитата:Only 8, 16, 24, or 32 bits supported: 1000 Честно, я уже столько бьюсь над этой задачей, что в голове каша:)
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.04.2019(UTC) Сообщений: 15
|
Ответ от Диадока такой Первая версия апи Код:0� *�H��
���0��1�O0�K0�t0�_1 0 *�H��
uc@secret-net.net10*�d
110222501102010*��00222511309210 URU1'0%U22 Алтайский край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%U22 Алтайский край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��Vg[�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)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.04.2019(UTC) Сообщений: 15
|
Автор: Андрей Писарев https://www.cryptopro.ru/sites/default/files/products/cades/demopage/symalgo_sample.html
Очень похоже, что требуется использовать cadescom.symmetricalgorithm пример в async_code.js Попробую, завтра с утра, в первую очередь:) Спасибо, это уже подсказка.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.04.2019(UTC) Сообщений: 15
|
Автор: Андрей Писарев Спасибо, добрый человек. Буду пробовать. Завтра отпишусь, что да как.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close