Espero ajudar, mas estou um pouco fora do assunto, porque me deparei com essa questão enquanto tenho um problema não relacionado. Durante uma atualização 2.1.6- > 2.1.10 do gpg, encontrei um problema de análise de chave privada Ed25519: link . O script que escrevi arranha minha própria coceira, pode despejar uma chave de expressão S sem proteção que consegui hexeditar e criptografar novamente.
Então, com relação a essa questão, eu escrevi um script Python ( link ) que usa o gpg-agent para extrair o desprotegido Chave privada SSH de expressão S, recuperando a chave keywrap com escape libassuan, a chave criptografada e descriptografando-a (usando libgcrypt). Ele não responde completamente a sua pergunta, pois não despeja os dados no formato SSH.
Espero que você consiga mais, já que os dados estão pelo menos em um estado analisável agora.
Outras dicas:
-
O libgcrypt tem uma biblioteca de análise de expressões-s e alguns documentos: link
-
o gpg tem código C como
sexp_key_extract
,ssh_send_key_public
,ssh_handler_request_identities
Eu estava curioso para ver se eu poderia fazer a milha extra, mas eu já perdi muito tempo escondendo ... alguém sensato teria apenas regenerado uma chave SSH: D
Atenciosamente,