Uso del Android TrustStore para aSmack en Android 4+ (ICS)

No soy un experto en almacenes de claves y me cuesta mucho entender los matices de esto, pero esto es lo que llegué:

Al crear una conexión xmpp usando la compilación asmack encontradaaquí Uno todavía tiene que cambiar el almacén de confianza, que por lo general, por lo que dicen múltiplesfuentes En la web, se realiza mediante estos comandos.

ConnectionConfiguration config = new ConnectionConfiguration(host, Integer.parseInt(port), service);
config.setTruststorePath("/system/etc/security/cacerts.bks");
config.setTruststorePassword("changeit");
config.setTruststoreType("bks");
XMPPConnection connection = new XMPPConnection(connConfig);
connection.connect();

Esto funciona para versiones anteriores de Android, pero bajo el ICS cambiaron algunas cosas y ahora ya no lo hacen. El camino ahora es diferente.

Aparentementeesto puede ser arreglado Pero no tengo idea terrenal de cómo.

Lo que se necesita, obviamente, es un método que devuelva la ruta según la versión del SDK que devuelva la cadena necesaria para establecer la ruta sdk, ya que no puede devolver el mismo almacén de claves a la conexión xmpp.

En referencia aesta ese método se vería así:

private String getTrustStorePath() 
{
 String path = System.getProperty("javax.net.ssl.trustStore");

 if (path == null) 
 {
  if ( Build.VERSION.SDK_INT >= 14 ) 
  {
   //THIS IS THE PART I DONT KNOW
   path="";
  }
  else
  {
   path = "/system/etc/security/cacerts.bks";
  }

  return path;
}

aquí un comentarista dice que en Android "4.x; /etc/security/cacerts.bks se reemplazó con el directorio / etc / security / cacerts / que contiene los certificados como archivos codificados PEM individuales". sin embargo, no sé qué relevancia tiene, si es que tiene alguna.

También he comprobado el código de dos proyectos usando xmpp y asmack (gtalksms yyaxim Pero no vieron como evitan este problema.

Respuestas a la pregunta(2)

Su respuesta a la pregunta