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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline e.kapkov  
#1 Оставлено : 26 октября 2021 г. 8:25:31(UTC)
e.kapkov

Статус: Новичок

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

Добрый день, помогите пожалуйста разобраться с интеграцией c++ и фронтенда (Browser Plugin).

Необходимо шифровать данные между браузером и сервером, на симметричном ключе. Browser Plugin предоставляет класс ISymmetricAlgorithm, для совместимости на сервере решил использовать класс CPPCadesSymmetricAlgorithmObject. В целом такой подход заработал.

Но возникло несколько проблем
1. CPPCadesSymmetricAlgorithmObject:: ImportKey не освобождает полностью память.

Код:

    process_mem_usage(); // 17МБ
    for (int i = 0; i < 100000; i++)
    {
        CPPCadesSymmetricAlgorithmObject alg;
        alg.ImportKey(exportedKey, strlen(exportedKey), cert, 0, 0);
    }
     process_mem_usage(); // 795 МБ

2. Последовательность CPPCadesSymmetricAlgorithmObject::ImportKey и CPPCadesSymmetricAlgorithmObject::DiversifyKey со временем приводит к ошибке.
Код:

   char *exportedKey = "31 2E 32 2E 36 34 33 2E 37 2E 31 2E 32 2E 35 2E 31 2E 31 00:0A 20 00 00 49 2E 00 00 4D 41 47 31 00 02 00 00 30 13 06 07 2A 85 03 02 02 24 00 06 08 2A 85 03 07 01 01 02 02 0C AC 58 07 4E 34 03 8B D5 E8 AE 57 16 0A F9 4A D2 8F B2 72 77 D7 FF 1F 05 62 FE 82 8C 39 FD AE AC 47 68 EB 29 37 3B E3 0D 4A DB 3C E7 66 2E 7A 87 6A 10 B1 07 BF C4 2D E9 B4 05 B8 E1 04 E5 FD:01 20 00 00 1E 66 00 00 FD 51 4A 37 1E 66 00 00 97 57 C6 90 13 F1 C4 9D E2 A7 F3 6C 59 40 8E 81 E0 98 1B 06 40 3E 17 48 E8 9C 27 67 FE 6E A8 74 58 C0 9E 05 56 45 1B AD C3 24 8E 16 30 09 06 07 2A 85 03 02 02 1F 01";
    char *iv = "F0 A8 6B 09 D3 8D 60 1A";
    char *divers = "B3 D1 DE 08 E5 69 CF 11 7F E5 F3 D9 E9 67 1A B3 DC 65 66 E7 40 98 BB 3B 0B 62 8B CC 70 05 A9 CC 64 72 FB 2B 39 B3 F7 D5";

    CPPCadesSymmetricAlgorithmObject alg;

    alg.ImportKey(exportedKey, strlen(exportedKey), cert, 0, 0);

    const char *pbData = "Y3J5cHJvcHJv";
    unsigned long cbData = strlen(pbData);

    for (int i = 0; i < 1000000; i++)
    {
        alg.put_DiversData(divers, strlen(divers));
        boost::shared_ptr<CPPCadesSymmetricAlgorithmObject> key;

        alg.DiversifyKey(key);
        key->put_IV(iv, strlen(iv));
        CryptoPro::CStringProxy hex_result;
        key->Encrypt(pbData, cbData, TRUE, hex_result);
    }

На 131072 попытке вызвать метод DiversifyKey получаю ошибку 0x80090003

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

Offline Андрей Емельянов  
#2 Оставлено : 27 октября 2021 г. 10:00:56(UTC)
Андрей Емельянов

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

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

Сказал «Спасибо»: 4 раз
Поблагодарили: 148 раз в 144 постах
Добрый день.
По данному вопросу переписка ведется на нашем портале ТП, обращение № 42131
Техническую поддержку оказываем тут
Наша база знаний
Наша страничка в Instagram
Offline Александр Лавник  
#3 Оставлено : 27 октября 2021 г. 13:23:27(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 773 раз в 715 постах
Проблема будет исправлена в следующем релизе.

Номер запроса для ориентира - CADES-2247.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.