detección de RSA pubkey tipo de archivo
-
12-09-2019 - |
Pregunta
Tengo una pubkey.dat RSA (casi obvio lo que es) que tiene la siguiente estructura de contenidos:
- ASN1 número entero de alrededor de 1024 bits (módulo)
- ASN1 entero (exponente)
- Blob de 256 bytes (Firma)
No hay etiquetas como "---- --- comenzar" más o menos. puros valores hexadecimales en el mismo.
No hay ninguna manera de identificar su formato como si se trata de DER / PEM / etc, por lo que puedo abrirlo con bibliotecas criptográficas pitón o cripto ++ en C ++?
(O si coincide con un nombre de estructura estándar público para que lo compruebe)
Parece que no es PEM como M2crypt no puede cargarlo.
Gracias de antemano.
Solución
PEM-codificación tiene un formato obligatorio:
-----BEGIN typeName-----
base64 of DER value
-----END typeName-----
donde, para las claves públicas, typeName = "CLAVE PÚBLICA" (AFAIR) por lo que es muy fácil de comprobar con una expresión regular, como la siguiente:
/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----/
Si no es PEM, DER Es generalmente llana.
La representación de una secuencia DER ASN.1 siempre comienza con 0x30 por lo general cuando tengo que decodificar una corriente DER-o-PEM que sé a ciencia cierta que es una secuencia ASN.1 (valores más complejas secuencias son, de todos modos) verifico el primer byte: si es de 0x30, que decodificar como DER, más que decodificar como PEM
.Puede comprobar sus datos ASN.1 rápidamente usando mi propio código abierto ASN.1 analizador (que es todo JavaScript en el cliente, por lo que no verá sus datos).