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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline АнтонФорумный  
#1 Оставлено : 15 декабря 2025 г. 12:46:11(UTC)
АнтонФорумный

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

Группы: Участники
Зарегистрирован: 15.12.2025(UTC)
Сообщений: 10
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 4 раз в 2 постах
Сейчас при передаче зашифрованного ЭС в base64 в Decrypt/StreamDecrypt - метод падает в ошибку.
Внутренние логи мака показывают что процесс cryptsrv выкидывает такую ошибку - RecipientIdentifier is not supported:

Код:

2025-12-15 14:38:37.642583+0500 0x10075d6  Default 0x0 47707  0 mcades: (librdrsup.4.dylib) <capi20>CryptMsgGetParam!(dwParamType = 36) Exception :'KeyIdentifier field as KeyTransRecipientInfo->RecipientIdentifier is not supported.' at file:'/dailybuildsbranches/CSP_5_0r4w/CSPbuild/CSP/capilite/CMSEnvelopedMessage.cpp' line:2281
2025-12-15 14:38:37.642792+0500 0x10075d6  Default 0x0 47707  0 nmcades: (librdrsup.4.dylib) <capi20>CryptDecryptMessage!failed: LastError = 0x57


Сам плагин в браузер выкидывает вот такую ошибку:
Код:

{
    "message": "The parameter is incorrect.\n (0x80070057)",
    "requestid": 7,
    "type": "error"
}


Какие варианты решения проблемы? На мобилке в нативном приложении с ПМБР от ЦБ - все ок, у них поддерживается RecipientIdentifier, да и сам идентификатор был выбран не просто так (на бэке тяжело будет это переделать).


Код дешифрования можно сказать, что из доки
Код:

// здесь в base64 приходит зашифрованная и сжатая xml, нужно ее сначала дешифровать, а потом расжать :) только после этого получится достать данные xml
async function decryptGOST(base64: string): Promise<string> {
  // эт наши обвязки над cadesplugin, ни на что не влияет вообще
  const envResult = await cadesExtensionBridgeService.createObjectAsync('CAdESCOM.CPEnvelopedData');
  const env = envResult.unwrap();

  await env.Decrypt(base64);

  return env.Content;
}

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

о как
thanks 1 пользователь поблагодарил АнтонФорумный за этот пост.
Зубов Иван оставлено 15.12.2025(UTC)
Offline Андрей *  
#2 Оставлено : 15 декабря 2025 г. 14:36:38(UTC)
Андрей *

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

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

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

Приложите в тестовом файле строку (base64), что передаёте в decryptGOST(base64)
Техническую поддержку оказываем тут
Наша база знаний
Offline АнтонФорумный  
#3 Оставлено : 15 декабря 2025 г. 14:49:08(UTC)
АнтонФорумный

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

Группы: Участники
Зарегистрирован: 15.12.2025(UTC)
Сообщений: 10
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 4 раз в 2 постах
Автор: Андрей * Перейти к цитате
Здравствуйте.

Приложите в тестовом файле строку (base64), что передаёте в decryptGOST(base64)



Код:

MIIEowYJKoZIhvcNAQcDoIIElDCCBJACAQIxggHuMIH0AgECgBQbB/j6EDxQdDLFLPxLbnXJYSdxazAXBgkqhQMHAQEHAgEwCgYIKoUDBwEBBgEEgb8wgbwEMCPJCYEy012lMaAtrsYATMr0+IBUvlfzCnp5HQqWTJN/LOvdvSiGQq6ba0EPQVj/HDBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABEDa9bKif6+D//6DBW1VBdQBJ7mq00X/M+2dGqE/38WqtwgRGoRKowB5Py/IIYdQFFA2Zwn5WPRf8TYeTzaiLFOLBCBA38wycmbwDjtUvyu3xPmcrqtV1w5Y15rDkNdUAXc9VDCB9AIBAoAUo/j9sKf/GPI+eY5GBGzXzju4F4YwFwYJKoUDBwEBBwIBMAoGCCqFAwcBAQYBBIG/MIG8BDDMf/5x9TJL5SFCR5dCEK5AQJ3EY1X8bqbjDm/oXB8nTJLy1vAAWizXwxKYdKGqkm0wZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARATGChSSh+z79Hlbv/8gUyfE6n6r6huULI38l92/F/mBkmemNmDD51yCq1eWHIcEThs65do/sZob12d81t6ccKWAQggPtxv7vsMjHjVgvgVGK/oyA2JNb10zVYWe+M5PI5yKswggJ0BgkqhkiG9w0BBwEwHwYJKoUDBwEBBQICMBIEEEveKXnSvhae+UMLIpjTsf2AggJEt2LC4wKbqkdkfo5p19IGdS1NOv36XrODW3tfKJZfA8lTE2Ccm90sZLjZw1PaaBr5Hc7XP4c0Q+cAKfXHu+t/a3Cfey+R8xYOSMTaS39FejsujVS1BUp/06utWZ7EOq0mFx5Smr5WsD75o7kbN74CW3Xpa78lA2QgqdvoLjTB6xd65ja8kPxEWIryRD9kmPa/QwyVLNmi8vBngKGTEBhdyT9a++hGUoqOOHQ6zXMs9cLpnaEHqn/itzYRLj3/XSz1Y2Ggg8NzAc9j+U2lvkSJKSU7XO3QnCVX5F8+jmiKKN5arXa3OL3PYt0JZqVHrSjiXdnKdBGfOgU2P7dtgchbxJLGhKoXqlp0EavZhV6PUvRRzOHg+yxQo84GX/61JPNaZjqcixLI19jo425rmpYoD7cnLNnTbS3gnftfZWBbWdyutxRbvq9u4L6DEY5xN59LhhBfqHaCxfwyd+WjqLgvMfWbXWrpHI75HUOhdRDmxPUfigPESm7YfRcNKOgcoxEMLMSnxSCr/qMjQJ/voYkHQMSSOtn0Jl2pTEsI3YJIiHU8Y2Ssn2uC9M5ePiujOFfjvW4HCmXz357sjGUADEkpr/w5BTDXvzhpHZFifYGqxYWYSf7R762I4mXrc9zxWEb37I423iG/LxkxM/Q7jwNGl2dW/87+k26u5W5mx4c7V2ubDpDjl4K6LdJ7G+DaycRmLHnK/WcIuNIQGS+bP9KH6B5XXKAIRV4/LhZdln503G0ZFmAv8/4HruBPi7q8EIGfNijKp6EhMB8GCSqFAwcBAAYBATESBBDfWoi52Ne0r5un+wmrN9Tq
о как
Offline Андрей *  
#4 Оставлено : 15 декабря 2025 г. 14:56:55(UTC)
Андрей *

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

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

Сказал «Спасибо»: 612 раз
Поблагодарили: 2370 раз в 1865 постах

Алгоритм шифрования: ГОСТ Р 34.12-2015 Кузнечик (CTR-ACPKM) с имитовставкой, OID: 1.2.643.7.1.1.5.2.2
2 сертификата с серийником 00?
Цитата:

у них поддерживается RecipientIdentifier, да и сам идентификатор был выбран не просто так


Но при этом не проверялась работа с другими решениями (в данном случае - через плагин)... так?
Техническую поддержку оказываем тут
Наша база знаний
Offline АнтонФорумный  
#5 Оставлено : 15 декабря 2025 г. 15:01:54(UTC)
АнтонФорумный

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

Группы: Участники
Зарегистрирован: 15.12.2025(UTC)
Сообщений: 10
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 4 раз в 2 постах
Автор: Андрей * Перейти к цитате

Алгоритм шифрования: ГОСТ Р 34.12-2015 Кузнечик (CTR-ACPKM) с имитовставкой, OID: 1.2.643.7.1.1.5.2.2
2 сертификата с серийником 00?
Цитата:

у них поддерживается RecipientIdentifier, да и сам идентификатор был выбран не просто так


Но при этом не проверялась работа с другими решениями (в данном случае - через плагин)... так?


Цитата:
Алгоритм шифрования: ГОСТ Р 34.12-2015 Кузнечик (CTR-ACPKM) с имитовставкой, OID: 1.2.643.7.1.1.5.2.2

Да

Цитата:
2 сертификата с серийником 00?

Да, все так, только серийники не нули там, а 4060xxxxx

Цитата:
Но при этом не проверялась работа с другими решениями (в данном случае - через плагин)... так?

Получается так... Сначала делалось нативное приложение с ПМБР, а теперь пришло время веба и встряли на этом этапе (дешифровки данных с бэка)

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

Отредактировано пользователем 15 декабря 2025 г. 15:03:55(UTC)  | Причина: Не указана

о как
Offline Андрей *  
#6 Оставлено : 15 декабря 2025 г. 15:06:22(UTC)
Андрей *

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

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

Сказал «Спасибо»: 612 раз
Поблагодарили: 2370 раз в 1865 постах
Потому что серверная часть умеет клиентский вариант обрабатывать...
А по идее, должна отказывать (не тот вариант)?

Техническую поддержку оказываем тут
Наша база знаний
Offline АнтонФорумный  
#7 Оставлено : 15 декабря 2025 г. 15:11:09(UTC)
АнтонФорумный

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

Группы: Участники
Зарегистрирован: 15.12.2025(UTC)
Сообщений: 10
Российская Федерация
Откуда: Екатеринбург

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



Да нет, ребята говорят что клиентский вариант веба на 100% повторяет мобильный. Само шифрование тоже можно сказать почти полностью из документации....Только передача алгоритма из техподдержки (в доке не нашел как добиться кузнечика)

Код:

async function encryptGOST(base64: string, thumbprintEncrypt: Array<string>) {
  const certs: Array<TCertificate> = [];

  for (const thumbprint of thumbprintEncrypt) {
    const cert = await getCertificate(thumbprint);

    certs.push(cert);
  }

  const envResult = await cadesExtensionBridgeService.createObjectAsync('CAdESCOM.CPEnvelopedData');

  if (envResult.isErr()) {
    throw new Error(envResult.unwrap().cryptoProInternalError.message);
  }

  const env = envResult.unwrap();

  const oAlgorithm = await env.Algorithm;
  await oAlgorithm.propset_Name(CADES_PLUGIN_CONSTS.CADESCOM_ENCRYPTION_ALGORITHM_GOST_KUZNYECHIK_OMAC);

  const recipients = await env.Recipients;

  for (const cert of certs) {
    await recipients.Add(cert);
  }

  return await env.StreamEncrypt(base64);
}

Отредактировано пользователем 15 декабря 2025 г. 15:13:19(UTC)  | Причина: Не указана

о как
Offline Зубов Иван  
#8 Оставлено : 15 декабря 2025 г. 15:47:17(UTC)
Зубов Иван

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

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

Сказал «Спасибо»: 14 раз
Поблагодарили: 31 раз в 28 постах
Здравствуйте!

Видимо, весь сыр-бор из-за вот этой ошибки, с неё всё начинается:
<capi20>CryptMsgGetParam!(dwParamType = 36) Exception :'KeyIdentifier field as KeyTransRecipientInfo->RecipientIdentifier is not supported.' at file:'/dailybuildsbranches/CSP_5_0r4w/CSPbuild/CSP/capilite/CMSEnvelopedMessage.cpp' line:2281

По иронии судьбы, независимо от вашей жалобы мы починили её 10 дней назад в CSP в рамках запроса CPCSP-15545. Во всех последующих релизах этой ошибки быть не должно. По идентификатору запроса можно отслеживать наличие решения в конкретном релизе. Спасибо за неравнодушие вам! Если что не работает, то жалуйтесь пожалуйста, будем чинить!

Отредактировано пользователем 15 декабря 2025 г. 16:05:24(UTC)  | Причина: уточнил, что починили в CSP

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Зубов Иван за этот пост.
nickm оставлено 15.12.2025(UTC)
Offline АнтонФорумный  
#9 Оставлено : 15 декабря 2025 г. 15:53:33(UTC)
АнтонФорумный

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

Группы: Участники
Зарегистрирован: 15.12.2025(UTC)
Сообщений: 10
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 4 раз в 2 постах
Автор: Зубов Иван Перейти к цитате
Здравствуйте!

Видимо, весь сыр-бор из-за вот этой ошибки, с неё всё начинается:
<capi20>CryptMsgGetParam!(dwParamType = 36) Exception :'KeyIdentifier field as KeyTransRecipientInfo->RecipientIdentifier is not supported.' at file:'/dailybuildsbranches/CSP_5_0r4w/CSPbuild/CSP/capilite/CMSEnvelopedMessage.cpp' line:2281

По иронии судьбы, независимо от вашей жалобы мы починили её 10 дней назад в рамках запроса CPCSP-15545. Во всех последующих релизах этой ошибки быть не должно. По идентификатору запроса можно отслеживать наличие решения в конкретном релизе. Спасибо за неравнодушие вам! Если что не работает, то жалуйтесь пожалуйста, будем чинить!


Подскажите пожалуйста, могу ли я скачать где-то альфа версию? У меня сейчас:
Версия плагина: 2.0.15500
Версия криптопровайдера: 5.0.13600
о как
Offline Русев Андрей  
#10 Оставлено : 15 декабря 2025 г. 16:11:51(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,577

Сказал(а) «Спасибо»: 46 раз
Поблагодарили: 662 раз в 457 постах
Автор: АнтонФорумный Перейти к цитате
Подскажите пожалуйста, могу ли я скачать где-то альфа версию?
Скинул в личку.

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