我一直在研究 Android 的 javax.net.ssl 包,但仍然对它如何与底层 JNI 胶水一起工作感到困惑。
据我所知,javax.net.ssl 包(/libcore/x-net/src/main/java/javax/net/ssl)下的所有类都是抽象的,不直接实现功能。
上述所有功能都在 org.apache.harmony.xnet.provider.jsse 文件夹中实现(/libcore/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse),并且此实现调用底层 JNI C 代码。
假设用户直接从他们的代码中调用抽象类,谁能告诉我提供者如何链接到抽象类。我以为通常用户会调用子类,但在这种情况下似乎相反。
谢谢,
克里斯
最佳答案
好的,经过一些研究,我想我已经解决了这个问题。看起来 Apache Harmony 正在充当 javax.net.ssl 包的 Java 安全提供程序。
因为 OpenSSL 是在后台使用的,所以必须使用 JNI 来允许 Java 与 OpenSSL 的 C 代码对话。
提供程序在名为“java.security”的文件中定义,可以在以下链接中找到有关将提供程序添加到 Java 的详细概述:http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html
关于java - Android SSL JNI结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3136672/