EC_POINT_get_affine_coordinates
时间: 2023-09-02 20:08:55 浏览: 113
EC_POINT_get_affine_coordinates函数是OpenSSL库中的一个函数,用于获取椭圆曲线上的点的仿射坐标。
在使用该函数前,需要先定义一个EC_POINT类型的变量,表示椭圆曲线上的一个点。然后,调用EC_POINT_get_affine_coordinates函数,将该变量、椭圆曲线的参数和存储结果的指针作为参数传入。函数会自动计算该点的仿射坐标,并存储到指定的内存中。
函数原型如下:
```
int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *point, BIGNUM *x, BIGNUM *y, BN_CTX *ctx);
```
参数说明:
- group:椭圆曲线参数
- point:待获取仿射坐标的点
- x:存储x坐标的BIGNUM类型指针
- y:存储y坐标的BIGNUM类型指针
- ctx:BN_CTX类型的上下文参数,可以为NULL
函数返回值为1表示成功,0表示失败。
相关问题
EC_POINT_get_affine_coordinates()函数原型
以下是 EC_POINT_get_affine_coordinates() 函数的原型:
```c
int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *point, BIGNUM *x, BIGNUM *y, BN_CTX *ctx);
```
该函数从椭圆曲线上的给定点中(point)提取其仿射坐标(x,y),并将其存储在提供的大数(BIGNUM)对象中。该函数需要提供椭圆曲线组(group)和 BN_CTX 上下文(ctx)。
函数返回值为 int 类型,如果提取成功,则返回 1,否则返回 0。
EC_KEY_set_public_key的调用demo
可以给你一个示例代码:
```
#include <openssl/ec.h>
int set_public_key(EC_KEY *key, const unsigned char *pub_key, size_t pub_key_len)
{
EC_GROUP *group = EC_KEY_get0_group(key);
BIGNUM *x = BN_bin2bn(pub_key, pub_key_len, NULL);
BIGNUM *y = BN_new();
EC_POINT *point = EC_POINT_new(group);
int ret = 0;
if (!EC_POINT_set_affine_coordinates_GFp(group, point, x, y, NULL)) {
ret = -1;
goto end;
}
if (!EC_KEY_set_public_key(key, point)) {
ret = -1;
goto end;
}
end:
BN_free(y);
BN_free(x);
EC_POINT_free(point);
return ret;
}
```
这是一个用于设置 EC_KEY 公钥的函数,其中 pub_key 是公钥的二进制数据,pub_key_len 是公钥数据的长度,key 是一个已经初始化的 EC_KEY 对象。
阅读全文