Transferencia PrivateKey de KeyStore, uso en OpenSSL con JNI

Tengo la aplicación de Android que utiliza WebRTC. Todo funciona perfecto. Pero ahora, principal problema, con el cifrado.

Para realizar datos de llamada y transferencia, WebRTC crea y utiliza un único KeyPair para cada llamada. Pero quiero usar KayPair personalizado de AndroidKeyStore . Para este problema tengo que enviar su propio KeyPair a OpenSSL objeto compartido para trabajar.

La corrección estará en código NATIVO OpenSSL, donde WebRTC está obteniendo el contexto OpenSSL para datos de cifrado usando esta función ( opensslidnetity.cc ):

 bool OpenSSLIdentity::ConfigureIdentity { ... } 

¿Cómo transferir PK de AndroidKeyStore a WebRTC código nativo? Otro caso, ¿cómo configurar PK personalizado para cifrado WebRTC trabajo?


AndroidKeyStore

En Java puedo abrir el KeyStore ( AndroidKeyStore ) y obtener la clave pública – que está listo para transferir (tiene bytes de clave con método – getEncoded() ). También puedo conseguir la llave privada para los datos del cifrado, pero no puedo enviar esta llave en bytes, porque getEncoded() devuelve null. En este caso, pensé, puedo obtener PublicKey abd PrivateKey y guardarlos en matriz de bytes. Y después, llame a los métodos preparados en código nativo.


UPDATE : Hay algo similar en google.source.chromium. Donde obtienen la clave de Android KeyStore y la creación de OpenSSL contexto en código nativo. Clase nativa para obtener y usar AndroidKeyStore para TLS – Link 1 y Link 2 .

Android Keystore no expone el material clave de claves privadas o secretas, por diseño (consulte https://developer.android.com/training/articles/keystore.html ). Sus opciones son:

  • Presente Android Keystore PrivateKey + Signature o Cipher como OpenSSL EVP_PKEY.

  • No utilice Android Keystore. Tal vez usted no necesita las protecciones adicionales que ofrece en comparación con el almacenamiento de claves privadas dentro de su proceso?

  • Crear archivo PKCS # 12 con certificado autofirmado a través de OpenSSL en Windows para mi aplicación para Android
  • Diferentes claves públicas RSA generadas en Android
  • Mostrar certificado de Android
  • Convertir un archivo .pk8 en archivo .key
  • Construcción de BoringSSL y Conscrypt y agrupación con Android apk
  • Descifrar Android SSE con OpenSSL
  • Android construir PJSIP con openssl
  • Mensaje de advertencia de Google Play y OpenSSL
  • Protocolos SSL / TLS y suites de cifrado con AndroidHttpClient
  • Construir Android openssl usando NDK no hace los archivos de ensamblaje arm4 correctamente
  • Android ssl: javax.net.ssl.SSLPeerUnverifiedException: Ningún certificado de igual (una vez más)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.