下面定义的椭圆曲线点群不仅包含了域的信息和曲线的信息,甚至还包括了很多别的有利于实现的信息。
椭圆曲线点群的定义如下。
typedef struct ec_group_st EC_GROUP;
struct ec_group_st {
const EC_METHOD *meth;
EC_POINT *generator;
BIGNUM order, cofactor;
int curve_name;
int asn1_flag;
point_conversion_form_t asn1_form;
unsigned char *seed;
size_t seed_len;
EC_EXTRA_DATA *extra_data;
BIGNUM field;
unsigned int poly[5];
BIGNUM a, b;
int a_is_minus3;
void *field_data1;
void *field_data2;
int (*field_mod_func)(BIGNUM *, const BIGNUM *, const BIGNUM *);
} /* EC_GROUP */;
现在来介绍下上面列举出的部分参数,这部分介绍可参见代码中的ec.h和ec_lcl.h文件。
const EC_METHOD *meth指出椭圆曲线所用的是那些算法,详情参见§5.1.2。
EC_POINT *generator为基点(EC_POINT的定义参见§5.1.3)。
BIGNUM order, cofactor为基点的阶和相伴因子。
point_conversion_form_t asn1_form为点的压缩形式(参见§5.4.5)。
BIGNUM field对素域而言就是特征p。
BIGNUM a, b为曲线参数,即Weierstrass方程中的参数a、b。
int a_is_minus3; 判断a是否为负3,因为a为负3时点的运算可优化(参见§5.4.4)。
void *field_data1, *field_data2和int (*field_mod_func)(BIGNUM *, const BIGNUM *, const BIGNUM *)是为了优化点运算而采取的特殊方法(如Montgomery方法)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/138091.html