Исключение в программе, как исправить? Пишу программу, моделирующую генерацию общего ключа с использованием изогений эллиптических кривых. Изогении полностью реализованы в библиотеке 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; }
Ошибка может быть вызвана неинициализированным указателем на функцию RandomBytesFunction в структуре CurveIsogeny. Убедитесь, что указатель на функцию RandomBytesFunction правильно инициализирован в функции SIDH_curve_initialize перед вызовом функции EphemeralKeyGeneration_A. Возможно, требуется добавить дополнительную инициализацию указателя на функцию RandomBytesFunction до вызова функции SIDH_curve_initialize.
Ошибка может быть вызвана неинициализированным указателем на функцию RandomBytesFunction в структуре CurveIsogeny. Убедитесь, что указатель на функцию RandomBytesFunction правильно инициализирован в функции SIDH_curve_initialize перед вызовом функции EphemeralKeyGeneration_A. Возможно, требуется добавить дополнительную инициализацию указателя на функцию RandomBytesFunction до вызова функции SIDH_curve_initialize.