Я хочу использовать данные OpenSSL для использования в качестве случайных семян во время подписания данных с помощью ключа EC. Я делаю это, чтобы сравнить мое приложение с другим ссылочным (закрытый источник). Эта утилита принимает файл с закрытым ключом, файл с данными для подписи и файл со случайными данными в качестве параметров.Как я могу передать случайные данные OpenSSL для использования в подписке ECDSA?
У меня есть генерация ключей EC и подписание данных вниз, но я не могу сравнивать эти два приложения, так как у меня нет общего места. OpenSSL генерирует случайные данные, используемые при подписании данных (возможно, из/dev/random) и, таким образом, дает мне другую подпись для каждого запуска.
Я пробовал RAND_clear()
в сочетании с RAND_add()
, но продолжаю меняться подписи. Либо я не понимаю всю концепцию ECDSA, либо я делаю что-то неправильно.
Моим вторым вариантом для сравнения приложений является импорт открытого ключа и проверка подписи, сгенерированной справочной программой. Это лучший вариант, но я не могу импортировать данный пример открытого ключа (83 символа шестнадцатеричной строки). EC_POINT_oct2point()
продолжает давать мне нулевые результаты.
Любая помощь/указатели/ссылки были бы весьма признательны.
char * key_as_binary_data; //369368AF243193D001E39CE76BB1D5DA08A9BC0A63307AB352338E5EA5C0E05A0C2531866F3E3C2702
int data_size; //Size of the key buffer
EC_POINT * ecpoint = NULL;
EC_GROUP * ecgroup = NULL;
EC_KEY * eckey = NULL;
point_conversion_form_t form = POINT_CONVERSION_UNCOMPRESSED;
int asn1_flag = OPENSSL_EC_NAMED_CURVE;
eckey = EC_KEY_new();
ecpoint = EC_POINT_new(ecgroup);
ecgroup = EC_GROUP_new_by_curve_name(OBJ_sn2nid("sect163k1"));
EC_GROUP_set_asn1_flag(ecgroup, asn1_flag);
EC_GROUP_set_point_conversion_form(ecgroup, form);
EC_KEY_set_group(eckey,ecgroup);
EC_KEY_generate_key(eckey);
//This gives me a null ecpoint
EC_POINT_oct2point(ecgroup,ecpoint,key_as_binary_data,data_size-1,ctx);
EC_KEY_set_public_key(eckey,ecpoint);
Если вы хотите получить помощь с EC_POINT_oct2point(), вы должны показать нам, как вы его вызываете. – caf