Estou usando o comando abaixo para criptografar uma string em um arquivo, mas ele sempre falha com a mensagem de erro "gpg --encrypt precisa de entrada".
gpg.exe --batch --passphrase-fd 0 --armor --sign --recipient [email protected] --homedir "c:\gnupg" --encrypt 1 > "test.gpg"
Alguma ideia?
Responder1
O GnuPG sempre espera a entrada de um arquivo ou de STDIN. Para passar uma string para STDIN, use ECHO
em sistemas Windows ou echo
em sistemas Unix e canalize para gpg
:
ECHO 1 | gpg [other options] --encrypt
echo 1 | gpg [other options] --encrypt
Como você já espera a senha do descritor de arquivo 0 (que é STDIN), você terá que
- forneça qualquer senha e dados para serem assinados de outro local
- pipe em ambas as strings separadas por um caractere de nova linha, o que é fácil com
sh
/bash
em sistemas unix (echo -e "passphrase\ndata" | gpg --sign --encrypt
), masrequer uma solução bastante hacky no Windows(Não estou muito familiarizado com o prompt de comando do Windows, mas provavelmente você terá que escolher uma das soluções comECHO
comando único).