Как сгенерировать различные пары ключей с помощью библиотеки secp256k1 C?

Я просто пишу небольшую тестовую программу, используя secp256k1 C lib, нацеленную на создание различных случайных пар ключей ecdsa, используя secp256k1-zkp API, просто следуйте примеру в tests.c.

Однако, немного удивившись, я обнаружил, что не могу получить различные пары ключей, каждый раз, когда я запускаю тестовую программу, я получаю точно такой же закрытый ключ (а затем тот же открытый ключ).

Это не имеет смысла, но я не могу понять, в чем проблема, кто-нибудь может любезно помочь и подсказать?

Ниже приведен пример кода, который я использую:

random_scalar_order_test(&rand);
secp256k1_scalar_get_b32(privkey, &rand);
CHECK(secp256k1_ec_seckey_verify(ctx, privkey) == 1);
CHECK(secp256k1_ec_pubkey_create(ctx, pubkey, &pubkeylen, 
                                 privkey, (secp256k1_rand32() & 3) != 0) == 1);

Он следит за компиляцией, каждый раз, когда я запускаю тест, первые две строки кода всегда предоставляют один и тот же приватный ключ, поэтому открытый ключ также будет исправлен. Можно ли использовать какой-либо API семян ранда для генерации разных закрытых ключей при каждом вызове?

1 ответ

Кривые открытые ключи всегда будут разными, даже если для одного и того же закрытого ключа. Это нормальное поведение.

Другие вопросы по тегам