Non esiste un metodo integrato per farlo, ma è abbastanza semplice creare un test che non modifica nulla e ti consente di controllare semplicemente la tua passphrase.
Non hai specificato, quindi presumo che tu stia utilizzando la versione di GnuPG inferiore alla v2 e che tu sia su Linux con Bash come interprete a riga di comando.
Darò il comando qui e di seguito spiegherò cosa fa ciascuna parte - (nota: quanto segue è per la serie GnuPG versione 1, vedi sotto per la serie GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Ciò che fa è innanzitutto inviare del testo con cui firmare a GnuPG echo "1234" |
- perché non vogliamo firmare nulla, questo è solo un test, quindi firmeremo del testo inutile.
Successivamente, diciamo a gpg di non usare l'agente chiave con --no-use-agent
; questo è importante in seguito perché, a seconda dell'agente chiave, potrebbe non restituire "0" in caso di successo, e questo è tutto ciò che vogliamo fare: verificare il successo della tua passphrase.
Successivamente, diciamo a gpg di mettere i dati firmati direttamente nel /dev/null
file, il che significa che lo scartiamo e non scriviamo il risultato sul terminale - NOTA: se non stai usando qualche variante di Linux / Unix, questo file potrebbe non esistere. Su Windows potrebbe essere necessario consentire semplicemente di scrivere i dati firmati sullo schermo omettendo semplicemente la -o /dev/null
parte.
Successivamente, specifichiamo la chiave con cui vogliamo eseguire il nostro test utilizzando --local-user 012345
. È possibile utilizzare il KeyID per la massima specificità o utilizzare un nome utente, a seconda di quale si adatta meglio alle proprie esigenze.
Successivamente specifichiamo -as
, che abilita la modalità di output ASCII, e imposta la modalità contesto per la firma. Il -
successivo dice semplicemente a GnuPG di ottenere i dati da firmare dallo standard-in, che è la primissima parte del comando che abbiamo dato echo "1234" |
.
Infine, abbiamo && echo "A message that indicates success"
- il "&&" significa, se il comando precedente ha avuto successo, stampa questo messaggio. Questo è solo aggiunto per chiarezza, perché il successo del comando sopra sarebbe altrimenti indicato da nessun output.
Spero che sia abbastanza chiaro per farti capire cosa sta succedendo e come puoi usarlo per i test che vuoi fare. Se qualche parte non è chiara o non si capisce, sarò lieto di chiarire. In bocca al lupo!
[MODIFICA] - Se stai usando GnuPG v2, il comando precedente dovrà essere leggermente modificato, in questo modo:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Il motivo è che GnuPG v2 si aspetta che la passphrase venga recuperata tramite un agente, quindi non possiamo disabilitare l'uso dell'agente con --no-use-agent
e avere l'effetto desiderato; invece dobbiamo dire a GnuPG v2 che vogliamo eseguire un processo "batch" e recuperare la passphrase da STDIN (standard in) usando l'opzione --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Ciò consente all'agente di chiedere la passphrase e di dirti se era corretta (quindi non fa nulla).