微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在 openssl v1.1.0 或更高版本中设置不透明结构的成员?

如何解决有没有办法在 openssl v1.1.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;

解决方法

我用 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));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。