@flixli

Исключение в программе, как исправить?

Пишу программу, моделирующую генерацию общего ключа с использованием изогений эллиптических кривых. Изогении полностью реализованы в библиотеке 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;
}
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
Status = SIDH_curve_initialize(CurveIsogeny, CurveIsogeny->RandomBytesFunction, PCurveData);

Здесь вы инициализируете CurveIsogeny, и при этом подаёте CurveIsogeny->RandomBytesFunction, который на момент вызова функции инициализации равен NULL. Вы должны дать ему внешнюю функцию, генерирующую случайные значения. И она как раз будет помещена в CurveIsogeny->RandomBytesFunction.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы