Ho un'applicazione Android che utilizza WebRTC. Tutto funziona perfettamente. Ma ora, il problema principale, con la crittografia.Trasferisci PrivateKey da KeyStore, utilizzare in OpenSSL con JNI
Per effettuare chiamate e trasferire dati, WebRTC crea e utilizza un singolo KeyPair
per ogni chiamata. Ma voglio usare personalizzato KayPair
da AndroidKeyStore
. Per questo problema ho bisogno di inviare il proprio KeyPair
all'oggetto condiviso OpenSSL per funzionare.
La correzione sarà nel codice OpenSSL natale, dove WebRTC è sempre contesto OpenSSL per i dati di crittografia che utilizzano questa funzione (opensslidnetity.cc
):
bool OpenSSLIdentity::ConfigureIdentity
{
...
}
Come trasferimento PK da AndroidKeyStore a WebRTC codice nativo? Un altro caso, come funziona la crittografia personalizzata PK per WebRTC?
AndroidKeyStore
In Java posso aprire il KeyStore (AndroidKeyStore
) e ottenere la chiave pubblica - che pronti a trasferire (ha byte di chiave con il metodo - getEncoded()
). Inoltre posso ottenere la chiave privata per i dati di crittografia, ma non posso inviare questa chiave in byte, perché getEncoded()
restituisce null. In questo caso, ho pensato, posso ottenere PublicKey
abd PrivateKey
e salvarli in una matrice di byte. E dopo, chiama i metodi preparati nel codice nativo.
UPDATE: C'è qualcosa di simile si trova nella google.source.chromium. Dove ricevono la chiave da Android KeyStore e creano il contesto OpenSSL nel codice nativo. Classe nativa per ottenere e utilizzare AndroidKeyStore per TLS - Link 1 e Link 2.
Penso che Alex abbia ragione. Tuttavia, ci sono molte cose interessanti che puoi fare con Reflection. – jww
Non credo, perché funziona in criptazione e la realizzazione di java basata su nativo ... Se con la riflessione sarebbe così facile, non c'era protezione .. – GensaGames
Assicurati che le mie modifiche al titolo fossero corrette. Ho pensato che stavi usando Java e poi chiamassi OpenSSL (o altri oggetti condivisi) tramite JNI. Ma sembra che mi stia sbagliando. – jww