Pergunta

Eu tenho um pubkey.dat RSA (quase óbvio o que é) que tem a seguinte estrutura de conteúdo:

  • ASN1 Integer de cerca de 1024 bits (módulo)
  • ASN1 Integer (Expoente)
  • Blob de 256 bytes (Assinatura)

Nenhuma tag como "---- começar ---" ou assim. valores hexadecimais puros nele.

Há alguma maneira de identificar o seu formato como se do DER / PEM / etc, para que eu possa abri-lo com bibliotecas python de criptografia ou criptografia ++ em c ++?

(ou se ele corresponde a um nome de estrutura padrão público para mim para verificar)

Parece que a sua não PEM como M2crypt não pode carregá-lo.

Agradecemos antecipadamente.

Foi útil?

Solução

PEM-codificação tem formato obrigatório:

-----BEGIN typeName-----
base64 of DER value
-----END typeName-----

onde, por chaves públicas, typeName = "PUBLIC KEY" (AFAIR) de modo que é muito fácil de verificar com uma expressão regular, como o seguinte:

/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----/

Se não é PEM, é geralmente DER simples.

A representação DER de uma seqüência ASN.1 sempre começa com 0x30 então normalmente quando eu tenho para decodificar um fluxo DER-ou-PEM que eu sei com certeza que é uma seqüência de ASN.1 (valores mais complexos são sequências, de qualquer maneira) Eu verifico o primeiro byte: se o de 0x30, eu decodificar como DER, eu decodificar outra coisa como PEM

.

Você pode verificar seus dados ASN.1 rapidamente usando meu próprio analisador opensource ASN.1 (é tudo Javascript, por isso não vou ver os seus dados). do lado do cliente

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top