【发布时间】:2018-07-19 00:08:02
【问题描述】:
我正在使用 c++ 尝试在 OpenSSL wiki 的 Elliptic_Curve_Cryptography 之后生成 ECDSA 密钥对。
#include <iostream>
#include <openssl/obj_mac.h>
#include <openssl/ec.h>
int main()
{
EC_KEY *key;
if(NULL == (key = EC_KEY_new_by_curve_name(NID_secp224r1)))
std::cout << "error on new_curve_by_name" << std::endl;
if(1 != EC_KEY_generate_key(key)) std::cout << "error in generating keys" << std::endl;
}
生成的密钥对没有错误,但我不知道如何在两个不同的对象(EC_POINT 和 BIGNUM)中提取公钥和私钥,知道吗?
【问题讨论】:
-
C++ 可以更轻松地使用 OpenSSL。您可以使用
unique_ptr避免显式调用EVP_CIPHER_CTX_free等函数。请参阅 OpenSSL wiki 上的 EVP Symmetric Encryption and Decryption | C++ Programs、unique_ptr and OpenSSL's STACK_OF(X509)*、How to get PKCS7_sign result into a char * or std::string 等。
标签: c++ openssl ecdsa key-pair