设置仿射系数其实和设置射影系数非常类似,只不过需要将Z坐标设置为1,即设置射影坐标EC_POINT_set_Jprojective_coordinates_GFp(group, point, x, y, BN_value_one())。
───────────────────────────────────────
int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *point,const BIGNUM *x, const BIGNUM *y)
功能: 设置仿射点坐标
输入: group,x,y
输出: point
返回: 1【正常】or 0【出错】
出处: ec_lib.c
调用: ▼ int ec_GFp_simple_point_set_affine_coordinates(const EC_GROUP *group, EC_POINT *point,const BIGNUM *x, const BIGNUM *y)
备注: 即设置射影坐标时让 z ← 1
───────────────────────────────────────
由于在点的存储中采用的是射影坐标形式,所以要想获得仿射坐标,需要做必要的转换:射影点(x, y, z),z≠0,对应仿射点(x/z2, y/z3)。
注意:与获取射影系数时一样,读取X、Y、Z坐标得根据方法集meth 对编码函数ec_GFp_mont_field_encode和解码函数ec_GFp_mont_field_decode的定义来决定到底采用哪种形式。
───────────────────────────────────────
int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *point,BIGNUM *x, BIGNUM *y)
功能: 读取仿射点坐标
输入: group,point
输出: x,y
返回: 1【正常】or 0【出错】
出处: ec_lib.c
调用: ▼ int ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *point,BIGNUM *x, BIGNUM *y)
备注: 由于点的存储采用的是射影点形式,所以需将射影点转化成仿射点后输出
(X, Y, Z) 转化成点 (x, y) := (X/Z2, Y/Z3)
───────────────────────────────────────