gpt4 book ai didi

c++ - 使用 libxmlsec 从内存中加载 RSA 私钥

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:31 25 4
gpt4 key购买 nike

我目前正在使用 libxmlsec到我的 C++ 软件中,我尝试从内存中加载一个 RSA 私钥。为此,我搜索了 API 并找到了 this function .

它接受二进制数据、大小、格式字符串和几个 PEM 回调相关参数。

当我调用该函数时,它只是卡住了,使用了 100% 的 CPU 时间并且永远不会返回。非常烦人,因为我无法找出问题所在。

这是我的代码:

d_xmlsec_dsig_context->signKey =
xmlSecCryptoAppKeyLoadMemory(
reinterpret_cast<const xmlSecByte*>(data),
static_cast<xmlSecSize>(datalen),
xmlSecKeyDataFormatBinary,
NULL,
NULL,
NULL
);

data 是一个 const char* 指向我的 RSA key 的原始字节(使用 i2d_RSAPrivateKey() ,来自 OpenSSL)和 datalen data 的大小/strong>.

我的测试私钥没有密码,所以我决定暂时不使用回调。

有人做过类似的事情吗?你们看到我可以更改/测试以解决这个问题的任何内容吗?

我昨天才发现这个图书馆,所以我可能会漏掉一些明显的东西;我只是看不到它。

非常感谢您的帮助。

最佳答案

我使用 OpenSSL 函数 PEM_write_bio_RSAPrivateKey()data 的格式更改为 PEM,并更改了调用 xmlSecCryptoAppKeyLoadMemory() 的第三个参数,因此它与新格式匹配。

新代码是:

d_xmlsec_dsig_context->signKey =
xmlSecCryptoAppKeyLoadMemory(
reinterpret_cast<const xmlSecByte*>(data), // data is now in PEM format
static_cast<xmlSecSize>(datalen),
xmlSecKeyDataFormatPem, // Updated
NULL,
NULL,
NULL
);

从那时起,一切正常:通话不再卡住。

关于c++ - 使用 libxmlsec 从内存中加载 RSA 私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2594772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com