Gostaria de descriptografar um arquivo e editá-lo sem gravar seu conteúdo claro em um arquivo temporário, para evitar vazamentos de dados confidenciais.
Já criei o arquivo original com este comando:
echo -n "hello world" | gpg --encrypt --symmetric --output sensitive.gpg
Posso descriptografar este arquivo e exibi-lo:
$ gpg --decrypt sensitive.gpg
gpg: AES256.OCB encrypted session key
gpg: encrypted with 1 passphrase
gpg: encrypted with cv25519 key, ID <blablabla>
hello world
Entretanto, quando tento canalizar a saída para gpg --encrypt
, parece que os dois processos estão sendo executados simultaneamente e tentam consumir stdin ao mesmo tempo:
gpg --no-symkey-cache --pinentry-mode loopback --decrypt sensitive.gpg | gpg --encrypt --symmetric --pinentry-mode loopback --output sensitive.gpg
Antes de digitar qualquer senha, aqui está a saída:
gpg: AES256.OCB encrypted session key
Enter passphrase: Enter passphrase:
Você pode ver que ele está me pedindo a senha duas vezes.
E aqui estão os processos em execução:
$ ps | grep gpg
49716 ttys002 0:00.02 gpg --no-symkey-cache --pinentry-mode loopback --decrypt sensitive.gpg
49717 ttys002 0:00.01 gpg --encrypt --symmetric --pinentry-mode loopback --output sensitive.gpg
Existe alguma solução para gpg --encrypt
esperar que o programa gpg --decrypt
faça seu trabalho?
Gostaria de adicionar um editor vipe
entre esses dois comandos.