0

我正在重组旧代码以与 OpenSSL 1.1.1 兼容,在从 1.0.2 -> 1.1.1 升级 OpenSSL 期间,多个结构变得不透明并且不再可能直接访问成员。

我需要将 EVP_CIPHER_CTX 的 buf_len 设置为 0。有没有办法做到这一点?

EVP_CIPHER_CTX* p_ctx;
p_ctx = EVP_CIPHER_CTX_new();
...

p_ctx->buf_len = 0;
4

1 回答 1

0

我用 C++ 中最脏的 hack 做到了这一点

int buf_len = 0;

//Offset of buf_len in EVP_CIPHER_CTX is 20
int* buf_len_pointer = (int*)((char*)p_ctx + 20); 

memcpy(buf_len_pointer,&buf_len ,sizeof(buf_len));
于 2021-04-16T13:15:16.250 回答