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.