Eu estava executando o Evolution no Debian buster (testando) amd64 com o GnuPG para criptografar emails. Eu tenho a minha chave privada GPG em um ato YubiKey como smartcard GPG. Como o Evolution de alguma forma não conseguiu carregar meus calendários usando o CalDAV, eu reiniciei o Evolution . O CalDAV está funcionando bem agora.
Mas após a redefinição, outro problema apareceu: A criptografia / assinatura de GPG não funciona mais. Mensagens são decifradas sem problemas.
Além disso, não consigo escolher minha própria chave GPG nas configurações da conta, mesmo que ela seja importada corretamente e listada em gpg -K
:
Agorapossoescolherminhachave.
Quandotentoenviarumemailcriptografado,issofalhacomoEvolutionmostrandooseguinteerro:
Couldnotcreatemessage.Youmayneedtoselectdifferentmailoptions.Detailederror:Failedtoencrypt:Invalidrecipient<[email protected]>specified.Acommonissueisthatthegpg2doesn’thaveimportedpublickeyforthisrecipient.
Masminhachavepúblicaéimportada.OmesmoacontecequandodesativoaopçãoAlwaysencrypttomyselfwhensendingencryptedmessageswiththisaccount
.Oerroentãoé:
Detailederror:Failedtoencrypt:Invalidrecipient<[email protected]>specified.Acommonissueisthatthegpg2doesn’thaveimportedpublickeyforthisrecipient.
Criptografar/assinarapartirdalinhadecomandocomocomandogpg
funcionabem.Usandoumachaveprivadaquenãoestáemumcartãointeligentetambémnãofuncionou.RedefiniroGPGeoEvolutionnãofuncionou.
Eunãotenhoideiaagoraoquedevofazeragora.Obrigadoatodosantecipadamente:)
EDITAR:saídadestrace-p$(pidofevolution)-f-etrace=execve
aodescriptografar(funcionabem):
[pid4613]execve("/usr/local/bin/gpg2", ["gpg2", "--verbose", "--no-secmem-warning", "--no-greeting", "--no-tty", "--status-fd=66", "--command-fd=67", "--verify-options", "show-photos", "--photo-viewer", "/usr/lib/evolution/camel-gpg-pho"..., "--decrypt", "--output", "-"], [/* 34 vars */]) = -1 ENOENT (No such file or directory)
[pid 4613] execve("/usr/bin/gpg2", ["gpg2", "--verbose", "--no-secmem-warning", "--no-greeting", "--no-tty", "--status-fd=66", "--command-fd=67", "--verify-options", "show-photos", "--photo-viewer", "/usr/lib/evolution/camel-gpg-pho"..., "--decrypt", "--output", "-"], [/* 34 vars */]) = 0
Ao criptografar (que falha):
[pid 4537] execve("/usr/local/bin/gpg2", ["gpg2", "--verbose", "--no-secmem-warning", "--no-greeting", "--no-tty", "--batch", "--yes", "--status-fd=67", "--encrypt", "--armor", "-u", "[email protected]", "-r", "<[email protected]>", "--output", "-"], [/* 34 vars */]) = -1 ENOENT (No such file or directory)
[pid 4537] execve("/usr/bin/gpg2", ["gpg2", "--verbose", "--no-secmem-warning", "--no-greeting", "--no-tty", "--batch", "--yes", "--status-fd=67", "--encrypt", "--armor", "-u", "[email protected]", "-r", "<[email protected]>", "--output", "-"], [/* 34 vars */]) = 0
O arquivo /usr/local/bin/gpg2
não existe e parece não estar parte de qualquer pacote Debian .
EDIT2 : O comando @Hauke Laging postado nos comentários funciona, mas interativamente precisei confirmar para executar a ação (como também foi quando eu criptografei manualmente usando a linha de comando):
echo foo | /usr/bin/gpg2 --status-fd=1 --encrypt --armor -u [email protected] -r [email protected] --output -
Enquanto o comando que o Evolution quer executar falhar (removi o <>
que causa problemas com o zsh):
➜ ~ gpg2 --verbose --no-secmem-warning --no-greeting --no-tty --batch --yes --status-fd=67 --encrypt --armor -u [email protected] -r [email protected] --output
gpg: Fatal: status-fd is invalid: Bad file descriptor
A configuração --status-fd=1
ainda falha, mas com erros diferentes:
➜ ~ echo "foo" | gpg2 --verbose --no-secmem-warning --no-greeting --no-tty --batch --yes --status-fd=1 --encrypt --armor -u [email protected] -r [email protected] --output -
[GNUPG:] KEY_CONSIDERED <recipient's key fingerprint> 0
gpg: using pgp trust model
gpg: using subkey <recipient's encryption subkey id> instead of primary key <recipient's primary key id>
[GNUPG:] KEY_CONSIDERED <recipient's key fingerprint> 0
gpg: automatically retrieved '[email protected]' via Local
gpg: <recipient's encryption subkey id>: There is no assurance this key belongs to the named user
[GNUPG:] INV_RECP 10 [email protected]
[GNUPG:] FAILURE encrypt 53
gpg: [stdin]: encryption failed: Unusable public key
EDIT3: Apenas testado: assinando mensagens dos trabalhos do Evolution, bem como descriptografando.
Quando criptografo manualmente uma mensagem usando a linha de comando, recebo a seguinte mensagem que, na minha opinião, causa esse problema:
➜ ~ echo "foo" | gpg --encrypt -r [email protected] --armor
gpg: automatically retrieved '[email protected]' via Local
gpg: <recipient's encryption subkey id>: There is no assurance this key belongs to the named user
sub rsa4096/<recipient's encryption subkey id> 2015-10-14 Recipient's Name <[email protected]>
Primary key fingerprint: <recipient's key fingerprint>
Subkey fingerprint: <recipient's encryption subkey fingerprint>
It is NOT certain that the key belongs to the person named
in the user ID. If you *really* know what you are doing,
you may answer the next question with yes.
Use this key anyway? (y/N) y
-----BEGIN PGP MESSAGE-----
[...]
-----END PGP MESSAGE-----
EDIT4 : Como a mensagem acima é causada pela falta de confiança do proprietário (pelo menos eu acho que sim), gostaria de definir a confiança do proprietário do destinatário usando gpg --edit-key
(que não foi definido antes):
gpg> trust
pub rsa4096/<some key id>
created: <some date in the past> expires: <some date in the future> usage: SCA
trust: unknown validity: unknown
sub rsa4096/<some other key id>
created: <some date in the past> expires: <some date in the future> usage: E
[ unknown] (1). Pecipient's Name <[email protected]>
Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu
Your decision? 3
pub rsa4096/<some key id>
created: <some date in the past> expires: <some date in the future> usage: SCA
trust: marginal validity: unknown
sub rsa4096/<some other key id>
created: <some date in the past> expires: <some date in the future> usage: E
[ unknown] (1). Pecipient's Name <[email protected]>
Por isso, defino a confiança do proprietário do destinatário, mas por que ainda há esse [ unknown]
no final?