Исключение в программе, как исправить? Пишу программу, моделирующую генерацию общего ключа с использованием изогений эллиптических кривых. Изогении полностью реализованы в библиотеке Microsoft, программа только вызывает готовые функции этой библиотеки. При выполнении программы возникает исключение "нарушение прав доступа при исполнении по адресу 0x00000000" в выделенной строке. В чем может быть ошибка?
Текст программы:struct KeysStruct {
unsigned char *PrivateKey;
unsigned char *PublicKey;
} KeysA, KeysB;
int main()
{
/*Инициализация эллиптической кривой*/
PCurveIsogenyStruct CurveIsogeny = { 0 };
extern CurveIsogenyStaticData CurveIsogeny_SIDHp751;
CurveIsogenyStaticData *PCurveData;
PCurveData = &CurveIsogeny_SIDHp751;
CurveIsogeny = SIDH_curve_allocate(PCurveData);
CRYPTO_STATUS Status = CRYPTO_SUCCESS;
if (CurveIsogeny == NULL)
{
printf("not work");
sleep(SEC);
return 0;
}
Status = SIDH_curve_initialize(CurveIsogeny, CurveIsogeny->RandomBytesFunction, PCurveData);
if (Status != CRYPTO_SUCCESS)
{
printf("not work");
sleep(SEC);
return 0;
}
/*Генерация ключа Алисы*/
unsigned int i, pbytes = (PCurveData->pwordbits + 7) / 8;
unsigned int obytes = (PCurveData->owordbits + 7) / 8;
Status = CRYPTO_SUCCESS;
bool ok = true;
srand(time(NULL));
KeysA.PrivateKey = (unsigned char*)calloc(1, obytes);
KeysA.PublicKey = (unsigned char*)calloc(1, 4 * 2 * pbytes);
Status = EphemeralKeyGeneration_A(KeysA.PrivateKey, KeysA.PublicKey, CurveIsogeny);
if (Status != CRYPTO_SUCCESS)
ok = false;
printf("work");
sleep(SEC);
return 0;
}

21 Авг 2019 в 07:11
216 +1
1
Ответы
1

Ошибка может быть вызвана неинициализированным указателем на функцию RandomBytesFunction в структуре CurveIsogeny. Убедитесь, что указатель на функцию RandomBytesFunction правильно инициализирован в функции SIDH_curve_initialize перед вызовом функции EphemeralKeyGeneration_A. Возможно, требуется добавить дополнительную инициализацию указателя на функцию RandomBytesFunction до вызова функции SIDH_curve_initialize.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир