Ответ 1
В этом нет встроенного метода, но достаточно просто создать тест, который ничего не модифицирует и позволяет просто проверить вашу фразу.
Вы не указали, поэтому предположим, что вы используете версию GnuPG меньше, чем v2, и находитесь в Linux с Bash для вашего интерпретатора командной строки.
Я дам команду здесь и ниже, я объясню, что делает каждая часть (примечание: для серии GnuPG версии 1, см. ниже для серии GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Что это значит, сначала перенесите какой-либо текст в GnuPG с помощью echo "1234" |
- потому что мы действительно не хотим ничего подписывать, это просто тест, поэтому мы подпишем какой-то бесполезный текст.
Затем мы говорим, что gpg не использует ключевой агент с --no-use-agent
; это важно позже, потому что, в зависимости от вашего ключевого агента, он не может вернуть "0" на успех, и это все, что мы хотим сделать - проверить успех вашей фразы.
Затем мы сообщаем gpg помещать подписанные данные непосредственно в файл /dev/null
, то есть мы отбрасываем его и не записываем результат на терминал. ПРИМЕЧАНИЕ. Если вы не используете какой-либо вариант Linux/Unix, это файл может не существовать. В окнах вам может потребоваться просто разрешить запись подписанных данных на экран, просто опуская часть -o /dev/null
.
Затем мы укажем ключ, который хотим выполнить с помощью --local-user 012345
. Вы можете использовать KeyID для максимальной специфичности или использовать имя пользователя, в зависимости от того, что наилучшим образом соответствует вашим потребностям.
Далее мы укажем -as
, который разрешает режим вывода ascii, и устанавливает контекстный режим для подписания. После этого -
просто сообщает GnuPG, чтобы данные были подписаны со стандартного входа, что является самой первой частью команды, которую мы дали echo "1234" |
.
И, наконец, у нас есть && echo "A message that indicates success"
- "& &" означает, что если предыдущая команда была успешной, напечатайте это сообщение. Это просто добавлено для ясности, потому что успех команды выше в противном случае был бы обозначен отсутствием вывода.
Я надеюсь, что это достаточно ясно для вас, чтобы понять, что происходит, и как вы можете использовать его, чтобы провести тестирование, которое вы хотите сделать. Если какая-либо часть неясна или вы не понимаете, я буду рад прояснить. Удачи!
[EDIT] - Если вы используете GnuPG v2, указанную выше команду нужно немного изменить, например:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Причина в том, что GnuPG v2 ожидает, что кодовая фраза будет получена через агента, поэтому мы не можем отключить использование агента с помощью --no-use-agent
и иметь желаемый эффект; вместо этого нам нужно сообщить GnuPG v2, что мы хотим запустить "пакетный" процесс и получить кодовую фразу из STDIN (стандартно в) с помощью опции --passphrase-fd 1
.