2012-05-31 13 views
8

Me preguntaba si existe una especificación oficial del formato de almacén de claves JKS utilizado en Java? Me gustaría escribir un convertidor de/a PKCS # 12, pero no en Java, por lo que la keytool o el código de Java no es una opción desafortunadamente.Especificación del formato de almacén de claves JKS

Al mirar una en un editor hexadecimal, me dice que probablemente no sea ASN.1. Antes de comenzar a indagar en OpenJDK, tratando de realizar una ingeniería inversa del formato, ¿alguien sabe si existe una especificación? No pude encontrar nada hasta ahora, ¡cualquier ayuda sería muy apreciada!

Respuesta

12

Creo que debería comenzar su investigación en JDK sources. Hay algunos comentarios muy útiles allí. P. ej.

/* 
     * KEYSTORE FORMAT: 
     * 
     * Magic number (big-endian integer), 
     * Version of this file format (big-endian integer), 
     * 
     * Count (big-endian integer), 
     * followed by "count" instances of either: 
     * 
     *  { 
     *  tag=1 (big-endian integer), 
     *  alias (UTF string) 
     *  timestamp 
     *  encrypted private-key info according to PKCS #8 
     *   (integer length followed by encoding) 
     *  cert chain (integer count, then certs; for each cert, 
     *   integer length followed by encoding) 
     *  } 
     * 
     * or: 
     * 
     *  { 
     *  tag=2 (big-endian integer) 
     *  alias (UTF string) 
     *  timestamp 
     *  cert (integer length followed by encoding) 
     *  } 
     * 
     * ended by a keyed SHA1 hash (bytes only) of 
     *  { password + whitener + preceding body } 
     */ 
Cuestiones relacionadas