gpt4 book ai didi

android - OpenSSL Android NDK 的包装类

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:05 26 4
gpt4 key购买 nike

我按照下一个教程在我的应用程序中获取 OpenSSL Fips https://wiki.openssl.org/index.php/FIPS_Library_and_Android现在我可以将库导入我的项目并链接它,但是我需要创建一个包装类来将我的库与我的 Java 代码连接起来,我的问题是......有没有办法以简单的方式实现这一点? OpenSSL 库中有很多方法,我需要阅读所有这些方法的文档并为每个方法在 C 中创建一个函数,而且我没有 C 的经验,所以如果你知道另一种方法来做到这一点我会感谢你的帮助。

最佳答案

I need to create a wrapper class for connect my library with my Java code, my question is... is there a way to achieve this in a easy way?

最简单的方法是创建包装器共享对象。包装器共享对象将链接到 OpenSSL 库的静态版本并隐藏其所有符号。要隐藏符号,请务必指定选项 -Wl,--exclude-libs,all

如果您是从命令行工作的(而不是从 Zygote 开始的 Java Activity ),那么您可以只使用 LD_PRELOAD 技巧。但是您必须解决 Zygote 加载库的下层版本的问题。


read the documentation of all of them...

是的,没有办法绕过 RTFM :)


and create a function in C for each one...

不,您不需要导出 1 到 1。例如,您的包装器可以导出如下函数:

MY_SSL_CTX* MyCreateClientContext(...);

MY_SSL_CTX 将有效地包装 OpenSSL 的 SSL_CTX。但是 MyCreateClientContext 会聚合不同的函数调用。例如,它可能会调用:

  • SSLv23_method
  • SSL_CTX_new
  • SSL_CTX_set_verify
  • SSL_CTX_set_options
  • SSL_CTX_load_verify_locations

您可以在 OpenSSL 的 SSL/TLS Client 中看到我希望它调用的示例例子。这将包括配置上下文选项,例如 SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION

关于android - OpenSSL Android NDK 的包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30464481/

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