Converta a chave pública EC do formulário SubjectPublicKeyInfo para o formato “tradicional”

0

Espero ter os termos corretos.

Atualmente, tenho uma chave pública EC no formato

-----BEGIN PUBLIC KEY-----
xxxxx
-----END PUBLIC KEY-----

que eu entendo é o formulário SubjectPublicKeyInfo . Eu gostaria de converter isso na forma

-----BEGIN EC PUBLIC KEY-----
xxxxx
-----END EC PUBLIC KEY-----

usando comandos como openssl ou similar. Não consigo encontrar um RSAPublicKey_{in|out} para o comando openssl ec . Gostaria de poder converter a chave pública em DER e PEM forms.

Existe alguma outra maneira de fazer isso?

    
por Lawliet 07.03.2017 / 04:01

1 resposta

2

O OpenSSL não suporta nenhum formato "BEGIN EC PUBLIC KEY" e (AFAIK) esse formato não existe. Existe um formato de chave pública "tradicional" para o RSA ("BEGIN RSA PUBLIC KEY"), que é essencialmente uma estrutura PKCS # 1 codificada pelo PEM. Os padrões posteriores definiram como codificar chaves públicas de maneira agnóstica em um algoritmo (SubjectPublicKeyInfo) e, portanto, nem sempre há uma versão em formato "tradicional".

Você pode verificar os tipos OpenSSL PEM conhecidos procurando no arquivo de cabeçalho openssl pem (include / openssl / pem.h). Você notará que não há entrada "EC PUBLIC KEY". Há uma "chave pública de RSA", "chave pública de DSA" e "ECDSA PUBLIC KEY", mas os dois últimos não são usados em qualquer lugar na base de código OpenSSL (ou seja, eles só existem no arquivo de cabeçalho).

Existem formatos "tradicionais" para chaves privadas. Para converter uma chave privada PKCS8 para o uso de formulário tradicional:

openssl ec -in p8file.pem -out tradfile.pem

O comando ec também reconhece as opções "-inform DER" e "-outform DER". Por exemplo, para converter um arquivo de chave privada DER PKCS8 em PEM tradicional, você poderia usar:

openssl ec -inform DER -in p8file.der -out tradfile.pem

Ou para converter um arquivo de chave privada PEM PKCS8 em uso tradicional do DER:

openssl ec -in p8file.pem -outform DER -out tradfile.der

Você também pode ir por outro caminho, isto é, chave privada de formulário tradicional para PKCS8:

openssl pkcs8 -topk8 -nocrypt -in tradfile.pem -out p8file.pem

O comando pkcs8 acima também reconhece as opções -inform e -outform.

    
por 07.03.2017 / 10:16

Tags