Исключение в программе, как исправить? Пишу программу, моделирующую генерацию общего ключа с использованием изогений эллиптических кривых. Изогении полностью реализованы в библиотеке 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
182 +1
1
Ответы
1

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

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 683 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир