如何在没有#include rsa.h的情况下使用libeay32.dll执行RSA_sign?

时间:2010-07-29 14:45:17

标签: openssl

我可以成功地让OpenSSL在不使用#include语句的情况下执行HMAC-SHA1,MD5,SHA1,但是使用RSA_sign非常困难,因为需要Key为RSA类型我认为深藏在rsa.h(或其中一个包含的内容)中,我无法使用我正在使用的工具来处理openssl头文件。

我正在使用LoadRunner - 每次我尝试让它执行RSA_sign时我只会遇到内存异常违规 - 这可能是因为我没有提供正确格式的密钥。< / p>

那么,有没有一种方法可以直接在libeay32.dll上调用RSA_sign而不参考openssl头文件,就像上面提到的其他方法一样?

任何帮助将不胜感激。 约翰

2 个答案:

答案 0 :(得分:0)

我假设你已经加载了dll。如果没有,请尝试lr_load_dll()。我没有使用过RSA_sign,但是如果你包含函数声明(在使用之前),你可以使用LoadRunner调用没有.h的外部库函数。尝试将以下内容添加到该部分的顶部:

int RSA_sign(int type, const unsigned char *m, unsigned int m_len,
   unsigned char *sigret, unsigned int *siglen, RSA *rsa);

如果这不起作用,请尝试将RSA *rsa更改为long *rsa

如果您可以拨打电话但仍然收到错误,则可能需要执行typedef和/或struct并在使用之前声明/填充RSA对象。

答案 1 :(得分:0)

感谢您的回复,是的,我加载了dll,因为这一步是允许其他方法工作的。我已经尝试将RSA_sign声明放在我正在进行函数开发的vuser_init的头部,但这对RSA或Long-RSA无效,因为它不知道RSA是什么 - 我试过了没有成功使用TypeDef / Struct来定义RSA - 即使使用我在Wiki上找到的实际定义 - 建议使用long long,但LoadRunner不允许这样做。如你所建议的那样使用long也失败了我认为因为我的密钥是1269个十六进制数字而且长度不足以容纳它。

不幸的是,我不是一个'核心'程序员 - 充其量我会说我是一个脚本编写者,这远远超出了我的理解。如果有任何其他建议你可以给我非常感激。

再次感谢。