Eu reinstalei meu sistema operacional (Ubuntu 16.04) e tenho um diretório .gnupg antigo contendo:
gpg-agent.conf
gpg-agent-info-<hostname>
gpg.conf
private-keys-v1.d
pubring.gpg
secring.gpg
S.gpg-agent
trustdb.gpg
Gostaria de importar minhas antigas chaves públicas e privadas para o novo gnupg. (Não copiei simplesmente o diretório .gnupg para a nova instalação, porque entendo que o novo gnupg2 possui algumas diferenças no formato do banco de dados que fazem parte das novas opções de criptografia EC.)
O seguinte funcionou para as chaves públicas, mas falhou nas chaves secretas:
gpg --export --keyring=~/.gnupg.old/pubring.gpg | gpg --import
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg | gpg --import
Este respondeu com:
gpg: can't open `~/.gnupg/secring.gpg' <== New Secret Keyring
gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
Observe que está falhando em abrir meu novo anel secreto. Dá o mesmo erro ao tentar exportar para um arquivo:
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg > secret.asc
gpg: can't open `~/.gnupg/secring.gpg' <== New Secret Keyring
gpg: WARNING: nothing exported
Como minha chave secreta tem a parte privada da chave mestra removida, também tentei o mesmo com --export-secret-subkeys
, mas a resposta foi a mesma. Colocar meu ID da chave (endereço de email) após a exportação também não funciona. Por outro lado, posso listar as chaves:
gpg --list-keys --keyring=~/.gnupg.old/secring.gpg
gpg: Oops; key lost!
node 0x1e7ee00 01/00 type=secret-key
node 0x1e9cbd0 00/00 type=user-id "Me <Me@home.com>" ....
node 0x1e99dd0 00/00 type=signature class=13 keyid=XXXXXXXX ts=1383637282
node 0x1e9c510 00/00 type=secret-subkey
node 0x1eaa210 00/00 type=signature class=18 keyid=XXXXXXXX ts=1449138073
node 0x1eaf1f0 00/00 type=secret-subkey
node 0x1eaf580 00/00 type=signature class=18 keyid=XXXXXXXX ts=138363647
(Suponho que "Chave perdida" se refira à chave mestra secreta despojada.) Alguém pode me indicar como resolver isso?
Com a ajuda de @Jens (abaixo), o seguinte funciona:
gpg --no-default-keyring --secret-keyring=~/.gnupg.old/secring.gpg --export-secret-keys | gpg --import
--no-default-keyring
e--secret-keyring
antes--list-secret-keys
produz uma saída reconhecível. Então, deixe-me ver o que tenho agora.