No hay un método incorporado para hacer esto, pero es lo suficientemente simple como para crear una prueba que no modifica nada y le permite simplemente verificar su frase de contraseña.
No lo especificó, así que asumiré que está usando la versión GnuPG menor que v2 y está en Linux con Bash para su intérprete de línea de comandos.
Daré el comando aquí y a continuación explicaré qué hace cada parte - (nota: lo siguiente es para la serie GnuPG versión 1, ver más abajo para 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"
Lo que hace es primero, canalizar algo de texto para firmar en GnuPG echo "1234" |
, porque realmente no queremos firmar nada, esto es solo una prueba, por lo que firmaremos un texto inútil.
A continuación, le decimos a gpg que no use el agente clave con --no-use-agent
; esto es importante más adelante porque, dependiendo de su agente clave, es posible que no devuelva "0" en caso de éxito, y eso es todo lo que queremos hacer: verificar el éxito de su frase de contraseña.
A continuación, le decimos a gpg que coloque los datos firmados directamente en el /dev/null
archivo, lo que significa que lo descartamos y no escribimos el resultado en la terminal. NOTA: si no está utilizando alguna variante de Linux / Unix, es posible que este archivo no exista. En Windows, puede que tenga que permitirle que escriba los datos firmados en la pantalla simplemente omitiendo la -o /dev/null
parte.
A continuación, especificamos la clave con la que queremos hacer nuestra prueba usando --local-user 012345
. Puede usar KeyID para una máxima especificidad, o usar un nombre de usuario, lo que mejor se adapte a sus necesidades.
A continuación, especificamos -as
, que habilita el modo de salida ascii y establece el modo de contexto para la firma. A -
continuación, solo le dice a GnuPG que obtenga los datos para firmar desde la entrada estándar, que es la primera parte del comando que le dimos echo "1234" |
.
Y por último, tenemos && echo "A message that indicates success"
- el "&&" significa, si el comando anterior fue exitoso, imprima este mensaje. Esto solo se agrega para mayor claridad, porque de lo contrario, el éxito del comando anterior se indicaría sin ningún resultado.
Espero que sea lo suficientemente claro para que comprenda lo que está sucediendo y cómo puede usarlo para realizar las pruebas que desea hacer. Si alguna parte no está clara o no la entiende, estaré encantado de aclarar. ¡Buena suerte!
[EDITAR] - Si está utilizando GnuPG v2, el comando anterior deberá modificarse ligeramente, así:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
La razón es que GnuPG v2 espera que la frase de contraseña se recupere a través de un agente, por lo que no podemos deshabilitar el uso del agente con --no-use-agent
y tener el efecto deseado; en su lugar, necesitamos decirle a GnuPG v2 que queremos ejecutar un proceso "por lotes" y recuperar la frase de contraseña de STDIN (estándar en) usando la opción --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Esto solo permite que el agente solicite la contraseña y le diga si fue correcta (luego no hace nada).