Os formatos de chave privada não são padronizados como formatos de chave pública porque, idealmente, nunca são enviados ou recebidos - portanto, a interoperabilidade não é uma grande preocupação.
No entanto, a documentação nesse formato pode ser encontrada em alguns lugares. É muito semelhante à estrutura RSAPrivateKey descrita no PKCS # 1 , que normalmente seria carregada dentro de um Recipiente PKCS # 8. No entanto, a maneira normal de armazenar uma chave DSA em um contêiner PKCS # 8 é apenas armazenar o valor privado x
, não toda a estrutura que você tem lá. Eu estou supondo que é um formato DSAPrivateKey proposto, mas nunca tecnicamente padronizado, que o OpenSSL implementou antes dos padrões se estabelecerem. A página do dsa
man do OpenSSL diz:
The DER option with a private key uses an ASN1 DER encoded form of an ASN.1 SEQUENCE consisting of the values of version (currently zero), p, q, g, the public and private key components respectively as ASN.1 INTEGERs.
e estou supondo que o OpenSSH reutilizou esse formato. Os comentários na implementação da chave DSA do PyCrypto reforçam essa ideia; lá eles chamam a estrutura "DSAPrivatKey_OpenSSL" e referem-se a ela como "a codificação OpenSSL / OpenSSH personalizada".