Mis requisitos son:
Requisito 1: Compartir la clave pública al servidor java.
Pasos:
- Genere claves público-privadas en la aplicación iOS.
- Almacena las claves generadas en el llavero.
- Enviar la clave pública generada al servidor java.
- El servidor Java podrá almacenar la clave pública compartida en la base de datos.
Requisito 2: Almacenar la clave pública enviada por el servidor java.
Pasos:
- El servidor Java envía la clave pública de otro usuario.
- Procese los datos enviados por el servidor Java y genere una clave pública a partir de él.
- Almacene la clave generada en el llavero, que puede recuperarse más tarde para cifrar el mensaje que se va a transferir.
Soy capaz de lograr los pasos 1-2 en el requisito 1 utilizando el siguiente método definido en la clase SecKeyWrapper (muestra de CommonCrypto):
- (void)generateKeyPair:(NSUInteger)keySize
Pregunta 1: Ahora el problema es: ¿cómo debo enviar esa clave al servidor java?
Tenemos el método getPublicKeyBits
en la misma clase, que devuelve un objeto NSData, en algunas búsquedas en Google encontré que está en formato codificado DER.
Pregunta 2: Si envío el mismo objeto NSData al servidor, que creo que interpretará como un objeto ByteBuffer, ¿será posible para otros dispositivos, en mi caso podría ser Android, para interpretar esos datos?
Pregunta 3: ¿Cuál es la mejor manera de compartir la clave pública en los escenarios anteriores?