Não existe um método embutido para fazer isso, mas é simples o suficiente para criar um teste que não modifica nada e permite que você apenas verifique sua senha.
Você não especificou, então assumirei que você está usando uma versão do GnuPG anterior à v2 e está no Linux com Bash como seu interpretador de linha de comando.
Eu darei o comando aqui e abaixo explicarei o que cada parte faz - (nota: o seguinte é para a série GnuPG versão 1, veja abaixo para a série GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
O que isso faz primeiro é enviar algum texto para assinar no GnuPG echo "1234" |
- porque não queremos realmente assinar nada, isso é apenas um teste, então assinaremos algum texto inútil.
Em seguida, dizemos ao gpg para não usar o agente principal com --no-use-agent
; isso é importante mais tarde porque, dependendo do seu agente principal, ele pode não retornar "0" em caso de sucesso, e isso é tudo o que queremos fazer - verificar o sucesso de sua senha.
Em seguida, dizemos ao gpg para colocar os dados assinados diretamente no /dev/null
arquivo, o que significa que os descartamos e não gravamos o resultado no terminal - NOTA: se você não estiver usando alguma variante do Linux / Unix, este arquivo pode não existir. No Windows, você pode apenas permitir que ele grave os dados assinados na tela, apenas omitindo a -o /dev/null
parte.
Em seguida, especificamos a chave com a qual queremos fazer nosso teste usando --local-user 012345
. Você pode usar o KeyID para especificidade máxima ou usar um nome de usuário, o que melhor se adequar às suas necessidades.
Em seguida, especificamos -as
, o que ativa o modo de saída ascii e define o modo de contexto para assinatura. Em -
seguida, apenas diz ao GnuPG para obter os dados a serem assinados do padrão-in, que é a primeira parte do comando que demos echo "1234" |
.
E por último, temos && echo "A message that indicates success"
- o "&&" significa, se o comando anterior foi bem-sucedido, imprima esta mensagem. Isso é apenas adicionado para maior clareza, porque o sucesso do comando acima seria indicado por nenhuma saída.
Espero que esteja claro o suficiente para você entender o que está acontecendo e como você pode usar isso para fazer os testes que deseja fazer. Se alguma parte não estiver clara ou você não entender, terei o maior prazer em esclarecer. Boa sorte!
[EDITAR] - Se você estiver usando GnuPG v2, o comando acima precisará ser ligeiramente modificado, assim:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
O motivo é que o GnuPG v2 espera que a senha seja recuperada por meio de um agente, portanto, não podemos desabilitar o uso do agente com --no-use-agent
e ter o efeito desejado; em vez disso, precisamos dizer ao GnuPG v2 que queremos executar um processo em "lote" e recuperar a frase-senha de STDIN (entrada padrão) usando a opção --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Isso apenas permite que o agente solicite a frase secreta e diga se ela estava correta (então não faz nada).