2010-06-28 6 views
1

J'ai regardé le paquet javax.net.ssl ​​d'Android, mais je suis encore confus quant à la façon dont cela fonctionne avec la colle JNI sous-jacente en place. D'après ce que je vois, toutes les classes sous le paquetage javax.net.ssl ​​(/ libcore/x-net/src/main/java/javax/net/ssl) sont abstraites et n'implémentent pas directement la fonctionnalité.Structure SSL SSL JNI?

Toutes les fonctionnalités de ce qui précède sont implémentées dans le dossier org.apache.harmony.xnet.provider.jsse (/ libcore/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse), et cette implémentation effectue des appels au code C JNI sous-jacent.

Quelqu'un pourrait-il me dire comment le fournisseur est lié aux classes abstraites, étant donné que l'utilisateur appelle les classes abstraites directement à partir de leur code. Je pensais que généralement l'utilisateur appellerait la sous-classe, mais dans ce cas, il semble être le contraire.

Merci,
Chris

+0

Peut-être qu'il a quelque chose à voir avec un fournisseur JAVA? Signification htat le paquet apache/harmony est un "fournisseur" de services au paquet javax.net.ssl? Si oui, comment est-ce lié? – Chrisc

Répondre

0

Ok, après quelques recherches, je pense que j'ai ma tête enroulée autour de cela. Il semble qu'Apache Harmony agisse en tant que fournisseur de sécurité Java pour le paquetage javax.net.ssl. Comme OpenSSL est utilisé sous le capot, JNI doit être utilisé pour permettre à Java de dialoguer avec le code C d'OpenSSL.

Le fournisseur est défini dans un fichier appelé « java.security », et un bon aperçu de l'ajout d'un fournisseur Java se trouve à ce lien: http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html