В пакете Go elliptic
,
A Curve
представляет собой короткую кривую Вейерштрасса с = -3.
Итак, мыимеют кривые вида y² = x³ - 3·x + B
(где x
и y
принимают значения в P ).P
и B
, таким образом, являются параметрами для идентификации кривой, остальные необходимы только для операций над элементами кривой, которые будут использоваться для криптографии.
Стандарт SECG SEC 2 определяет кривую secp256k1как y² = x³ + a·x + b
с a = 0, то есть фактически y² = x³ + b
.
Эти кривые не одинаковы, независимо от того, какие b и B. здесь выбраны.
Ваше преобразованиеневозможно с Curve
пакетом elliptic
класса , поскольку он поддерживает только некоторый специальный класс кривых (с a = -3
), в то время как SEC 2 рекомендует кривые из других классов (a = 0 для ...k1
кривые).
С другой стороны, кривые с ...r1
в названии кажутся a = -3
.И на самом деле, secp256r1
кажется такой же кривой, которая доступна в elliptic
как p256()
.(Я не доказал это, но, по крайней мере, некоторые шестнадцатеричные цифры несжатой формы базовой точки в SEC 2 являются координатами базовой точки в эллиптической форме.)