Como usar o gpg --gen-key em um script?

5

O GnuPG é uma dessas ferramentas irritantes que tem uma linha de comando não-scriptável.

Eu quero executar gpg --gen-key em um script, o resto do processo é simples comandos. Alguém teve alguma sorte com isso? Digitar a senha parece ser suportado, mas não as outras perguntas que ele faz, tipo de chave, tamanho da chave, validade, nome.

Se você usar a opção --yes , ainda mostrará as caixas de diálogo de confirmação.

Existe alguma ferramenta mais amigável como openssl pode ser usada para gerar chaves?

    
por teknopaul 21.11.2015 / 00:15

1 resposta

8

O OpenSSL não suporta o OpenPGP, portanto você não pode usá-lo para geração de chaves. De qualquer forma, o GnuPG é bastante fácil de usar script usando --with-colons junto com --batch . Para a maioria das operações, o uso de GPGME é o caminho a ser seguido, pelo menos para linguagens de programação de alto nível onde existem bibliotecas para fazer interface com o GnuPG sem ter que analisar a saída por conta própria.

Também é possível gerar uma geração de chave com script: você está procurando uma geração de chaves autônoma , o que é bem possível. No final, resume-se a armazenar uma descrição sobre como gerar as chaves em um arquivo e executar gpg --batch --genkey [filename] .

A documentação vinculada acima dos hosts segue o exemplo de geração de chave não assistida:

$ cat >foo <<EOF
     %echo Generating a basic OpenPGP key
     Key-Type: DSA
     Key-Length: 1024
     Subkey-Type: ELG-E
     Subkey-Length: 1024
     Name-Real: Joe Tester
     Name-Comment: with stupid passphrase
     Name-Email: [email protected]
     Expire-Date: 0
     Passphrase: abc
     %pubring foo.pub
     %secring foo.sec
     # Do a commit here, so that we can later print "done" :-)
     %commit
     %echo done
EOF
$ gpg2 --batch --gen-key foo
 [...]
$ gpg2 --no-default-keyring --secret-keyring ./foo.sec \
       --keyring ./foo.pub --list-secret-keys
/home/wk/work/gnupg-stable/scratch/foo.sec
------------------------------------------
sec  1024D/915A878D 2000-03-09 Joe Tester (with stupid passphrase) <[email protected]>
ssb  1024g/8F70E2C0 2000-03-09
    
por 21.11.2015 / 10:35