EVP_PKEY 和 EC_KEY 区别
时间: 2023-10-08 08:04:47 浏览: 240
EVP_PKEY和EC_KEY都是OpenSSL中的密钥结构体,但它们的作用不同。
EC_KEY是一种用于椭圆曲线加密的密钥结构体,它包含了公钥和私钥,并提供了一些用于加密、签名、验证等操作的函数。EC_KEY可以使用gmssl等库进行创建和管理。
而EVP_PKEY是一种通用的密钥结构体,可以用于不同类型的加密算法,例如RSA、DSA、ECC等。EVP_PKEY包含了一个指针,指向特定类型的密钥结构体,例如EC_KEY。使用EVP_PKEY可以方便地进行密钥的读取、存储、转换等操作。
因此,如果你需要进行椭圆曲线加密相关操作,可以使用EC_KEY;如果你需要一个通用的密钥结构体,可以使用EVP_PKEY。在一些情况下,EVP_PKEY也可以用来包装EC_KEY密钥,以方便管理和转换。
相关问题
EVP_PKEY_assign_EC_KEY函数原型
以下是EVP_PKEY_assign_EC_KEY函数的原型:
```
int EVP_PKEY_assign_EC_KEY(EVP_PKEY *pkey, EC_KEY *key);
```
该函数用于将EC_KEY类型的密钥赋值给EVP_PKEY类型的密钥。其中,pkey是目标EVP_PKEY类型的密钥,key是源EC_KEY类型的密钥。
函数返回值为整型,如果执行成功则返回1,否则返回0。
EVP_PKEY_get0_EC_KEY()
EVP_PKEY_get0_EC_KEY()是OpenSSL库中的一个函数,它的作用是从EVP_PKEY结构中获取相应的EC_KEY结构指针。EC_KEY结构是用于椭圆曲线加密算法的结构体,包括椭圆曲线参数和公私钥等信息。该函数的返回值是一个EC_KEY类型的指针,可以用于进一步操作。需要注意的是,该函数只适用于EVP_PKEY结构中包含EC_KEY结构的情况。
阅读全文