从存储器加载使用libxmlsec一个RSA私钥
题
我目前使用 libxmlsec 到我的C ++软件,我尝试加载从内存中的RSA私钥。要做到这一点,我搜索低谷API,发现此功能
这需要二进制数据,大小,格式字符串和几个PEM-回调相关的参数。
当我调用该函数,它只是stucks,使用的CPU时间和从未返回100%。很烦人的,因为我没有找出什么是错的方式。
下面是我的代码:
d_xmlsec_dsig_context->signKey =
xmlSecCryptoAppKeyLoadMemory(
reinterpret_cast<const xmlSecByte*>(data),
static_cast<xmlSecSize>(datalen),
xmlSecKeyDataFormatBinary,
NULL,
NULL,
NULL
);
<强> data
强>是const char*
指向我的RSA密钥的原始字节(使用的 i2d_RSAPrivateKey()
下,从 OpenSSL的)和 datalen
强>的大小的 data
强>
我的测试私钥没有密码,所以我决定不使用回调暂时。
已经有人已经做了类似的事情?你们是否看到任何东西,我可以改变/测试,以获得向前这个问题?
我刚发现昨天的库,所以我可能会错过一些东西很明显这里;我无法看到它。
非常感谢你的帮助。
解决方案
予改变的 data
以PEM,使用OpenSSL的功能的 PEM_write_bio_RSAPrivateKey()
并改变了第三个参数调用的 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
);
从那时起,一切正常:通话并不再卡住
不隶属于 StackOverflow