assina e confia na chave gpg automaticamente via bash

1

Eu tenho uma pergunta sobre o gpg e assino uma chave automaticamente via bash: Eu tenho um script, que está fazendo o começo da assinatura:

gpg --recv $schluessel1
gpg --edit $schluessel1

Se eu tentar algo assim:

lsign

é ignorado e mostra-me a saída abaixo.

gpg>

No prompt acima, posso escrever manualmente lsign e depois y in.

É possível fazer essas duas etapas automaticamente?

    
por Franklin84 28.05.2014 / 19:04

2 respostas

1

Eu escrevi um script que faz algo similar (alemão, mas que não parece ser um problema aqui: link ):

echo addkey$'\n'8$'\n'e$'\n'q$'\n'${length}$'\n'"$expire"$'\n'save$'\n' |
  LC_ALL= LANGUAGE=en gpg --batch --display-charset utf-8 --utf8-strings \
  --passphrase "$PASSPHRASE" --command-fd 0 --edit-key $x_short_id

Isso funciona com o GnuPG 1.4.xe 2.0.x.

Com o 1.4.x, a operação lsign deve ser facilmente possível de maneira semelhante. Com o 2.0.x você também precisa se preocupar com gpg-agent . Isso é possível, mas ainda não implementei isso. A ideia básica é:

  1. Inicie o gpg-agent com uma configuração que substitua pinentry .
  2. Use uma substituição pinentry que leia os dados necessários de um FIFO (porque o script foi iniciado por gpg-agent ).
  3. Iniciar um processo em segundo plano que grava os dados necessários no FIFO.

Exemplo de código:

echo "OK - what's up?"
while read cmd rest; do
        # echo "cmd=$cmd rest=$rest" >&2
        : ${PINENTRY_USER_DATA}
        case "$cmd" in
                \#*)
                        :
                ;;
                GETINFO)
                        if [ "pid" = "$rest" ]; then
                                echo "D $$"
                        fi
                        echo "OK"
                ;;
                GETPIN)
                        read PASSPHRASE <"$input_fifo_path"
                        echo "D ${PASSPHRASE}"
                        echo "OK"
                ;;
                BYE)
                        echo "OK"
                        exit 0
                ;;
                *)
                        echo "OK"
                ;;
        esac
done
    
por 28.05.2014 / 20:13
0

Acabei de encontrar a resposta correta:

gpg --recv $key                     # receive Key from Keyserver
xdotool key y; xdotool key Return   # press y and then return
gpg --edit $key lsign save          # Sign and save the key

Primeiro eu tive que instalar o xdotool sudo apt-get install xdotool , então foi possível executá-lo automaticamente. Até agora eu não tentei salvar, mas espero que esteja tudo bem.

    
por 31.05.2014 / 12:09

Tags