【发布时间】:2022-01-06 21:12:16
【问题描述】:
我正在尝试使用 d2i_ECPrivateKey() 从包含我的私钥的 std::string 加载密钥。我的目标是进行 ECDSA 签名。
我的代码 sn-p。
function sign(){
// random data
std::string data = "....";
// 256-bit key in hex
std::string private_key =
"ee52189da48a2aeda40e488ce3c711f852ebdd12a21d1c7fd8a5b78a0902fad1";
const unsigned char *key_cstr = reinterpret_cast<unsigned char *>(
const_cast<char *>(private_key.c_str()));
const unsigned char *data_cstr =
reinterpret_cast<unsigned char *>(const_cast<char *>(data.c_str()));
EC_KEY *ec_key = d2i_ECPrivateKey(NULL, &key_cstr, private_key.length());
if (ec_key == NULL) {
LOG(ERROR) << "d2i_ECPrivateKey returns NULL";
return {};
}
}
并且 d2i_ECPrivateKey 总是通过返回一个空对象而失败。任何人都可以在这里阐明一下吗?因为 openssl 文档非常有限。谢谢
【问题讨论】:
标签: c++ openssl cryptography