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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Андрей Куликов  
#1 Оставлено : 23 ноября 2010 г. 10:47:57(UTC)
Андрей Куликов

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

Группы: Участники
Зарегистрирован: 17.10.2010(UTC)
Сообщений: 128
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 2 раз
Поблагодарили: 9 раз в 8 постах
Вот этот код неизменно падает с Segmentation fault на вызове CryptEncrypt:

Код:
void segfaultTest(HCRYPTPROV hProvider)
{
    HCRYPTKEY kek;
    if (!CryptGenKey(hProvider, CALG_G28147, CRYPT_EXPORTABLE, &kek))
    {
        DBG_OUT_E("Can't generate KEK");
        return;
    }

    DWORD dparam = ZERO_PADDING;

    if (!CryptSetKeyParam(kek, KP_PADDING, (BYTE*)&dparam, 0))
    {
        DBG_OUT_E("Can't set ZERO_PADDING for generated KEK.");
        return;
    }

    dparam = CRYPT_MODE_ECB;
    if (!CryptSetKeyParam(kek, KP_MODE, (BYTE*)&dparam, 0)){
        DBG_OUT_E("Can't set ECB mode");
        return;
    }

    DWORD dataLen = G28147_KEYLEN;
    if (!CryptEncrypt(
        kek, 0, TRUE, 0, NULL, &dataLen, dataLen)) {
        DBG_OUT_E("Can't detemine required buffer size.");
        return;
    }

    printf("Buffer size required: %d\n", dataLen);
}


При этом если исключить установку ZERO_PADDING ИЛИ CRYPT_MODE_ECB - то все работает - нужный размер буфера вычисляет.
Ошибка в коде или где?

CryptoPro CSP 3.6R2
Linux i386

Отредактировано пользователем 23 ноября 2010 г. 10:49:39(UTC)  | Причина: Не указана

Offline Андрей Куликов  
#2 Оставлено : 23 ноября 2010 г. 12:10:00(UTC)
Андрей Куликов

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

Группы: Участники
Зарегистрирован: 17.10.2010(UTC)
Сообщений: 128
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 2 раз
Поблагодарили: 9 раз в 8 постах
Да, забыл написать, сегфолт появляется на всех dataLen, кратных 32.
Offline Русев Андрей  
#3 Оставлено : 23 ноября 2010 г. 20:49:06(UTC)
Русев Андрей

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
Сходу повторить пробему не удалось. Сделал ночной тест и запрос в JIRA: CPCSP-463 (можно спрашивать в техподдержке о его статусе). Позже ещё раз попробую.
Официальная техподдержка. Официальная база знаний.
Offline Русев Андрей  
#4 Оставлено : 28 ноября 2010 г. 18:35:55(UTC)
Русев Андрей

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
Неправильно передаются параметры: нельзя: pbData = NULL, dwBufLen != 0. Дополнительную проверку в провайдер вставил.
Официальная техподдержка. Официальная база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.