gpt4 book ai didi

c - 旧版本的 OpenSSL 中的 cb_arg 是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:33 24 4
gpt4 key购买 nike

我安装了过时的 OpenSSL_0_9_6-beta3 版本的 OpenSSL。函数 RSA_generate_key 定义如下:

RSA * RSA_generate_key(int bits, unsigned long e,void (*callback)(int,int,void *),void *cb_arg)

这是我的测试代码:

#include <openssl/rsa.h>

int main(){

unsigned long e = RSA_F4;

RSA *r = RSA_generate_key(512, e, NULL, NULL);
const BIGNUM *n = r->n;
BN_print_fp(stdout, n);
RSA_free(r);

return 0;
}

当我运行它时,它会一直循环下去。在 Valgrind 下运行时,我明白了原因:

Conditional jump or move depends on uninitialized value(s)

我想那是因为我不明白函数签名的真正含义,并且我将不正确的参数传递给它 - 自从在 OpenSSL 中一直以来,当被提供不正确的参数时,方法循环一直存在问题。这就是我来这里问你是否理解函数签名的原因,因为我在互联网上找不到任何指南。

最佳答案

What does cb_arg in old versions of OpenSSL mean?
RSA_generate_key(int bits, unsigned long e,void (*callback)(int,int,void *),void *cb_arg)

它是一个函数回调。它允许您在 RSA key 生成期间实现进度条,因为该操作可能需要很长时间。

RSA_generate_key 已弃用。您应该改用 RSA_generate_key_ex

另见 How to generate RSA private key using openssl?在 Stack Overflow 上,RSA_generate_key man pageRSA_generate_key_ex man page .


Conditional jump or move depends on uninitialized value(s)

您应该提供发现的背景。此外,请务必使用 -O1 编译 OpenSSL 和您的程序。如果优化太高,则 Valgrind 会产生误报。另见 The Valgrind Quick Start Guide .

关于c - 旧版本的 OpenSSL 中的 cb_arg 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45432765/

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