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).gpg -o /dev/null --local-user <KEYID> -as <(echo 1234) && echo "The correct passphrase was entered for this key"
--passphrase-fd 1
? ler do stdout? Isso funciona para mim:gpg2 -aso - <(echo 1234); echo $?
. Useecho RELOADAGENT | gpg-connect-agent
para esquecer frases secretas.Esta é uma linha de comando mais curta para verificar se a senha longa está OK:
fonte
Para mim, a maneira simplista de verificar a senha longa é usar uma
gpg --passwd
abreviação. Ele tenta alterar a frase-senha e o passo é confirmar a frase-senha antiga, e então você pode clicar em 'cancelar' no prompt da nova frase-senha e isso mantém a frase-senha intacta.fonte
Aviso, não use eco
gpg -o /dev/null
como sugerido pela resposta principal aqui. Isso fará com que / dev / null tenha permissão inválida e corrompa o/dev/null
arquivo. Você pode verificar a permissão do arquivo / dev / null ao executar este comando para provar isso.Você pode usar isto:
Eu também criei um script bash para isso (este está trabalhando com o Centos 8). Este script pedirá uma frase-senha; se for inválida, continuará solicitando a entrada de uma frase-senha válida. Além disso, se você inserir KEY_ID incorreto ou não existente como um argumento, ele também pode validar isso:
Exemplo de saída se nenhuma senha for armazenada em cache no gpg-agent:
Exemplo de saída se uma senha inválida for inserida (continuará perguntando):
Exemplo de saída se a senha longa for inserida:
Quando uma frase-senha válida é armazenada em cache, na próxima vez que você executar este script, ele não pedirá que você insira a frase-senha. Portanto, este script fornece a solução para sua pergunta; "Apenas confirme que estou usando a senha longa certa"
fonte