Tidak ada metode bawaan untuk melakukan ini, tetapi cukup sederhana untuk membuat tes yang tidak mengubah apa pun dan memungkinkan Anda untuk hanya memeriksa frasa sandi Anda.
Anda tidak menentukannya, jadi saya akan menganggap Anda menggunakan GnuPG versi kurang dari v2 dan menggunakan Linux dengan Bash untuk penerjemah baris perintah Anda.
Saya akan memberikan perintah di sini dan di bawah ini saya akan menjelaskan apa yang dilakukan setiap bagian - (catatan: berikut ini untuk seri GnuPG versi 1, lihat di bawah untuk seri GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Apa yang dilakukan adalah pertama, pipa beberapa teks untuk masuk ke GnuPG dengan echo "1234" |
- karena kami tidak benar-benar ingin menandatangani apa pun, ini hanya tes, jadi kami akan menandatangani beberapa teks yang tidak berguna.
Selanjutnya, kami memberi tahu gpg untuk tidak menggunakan agen kunci dengan --no-use-agent
; ini penting nanti karena, tergantung pada agen kunci Anda, ini mungkin tidak mengembalikan "0" pada keberhasilan, dan hanya itu yang ingin kami lakukan - verifikasi keberhasilan frasa sandi Anda.
Selanjutnya, kami memberi tahu gpg untuk meletakkan data yang ditandatangani langsung ke dalam /dev/null
file, artinya kami membuangnya dan tidak menulis hasilnya ke terminal - CATATAN: jika Anda tidak menggunakan beberapa varian Linux / Unix, file ini mungkin tidak ada. Di windows Anda mungkin harus mengizinkannya untuk menulis data yang ditandatangani ke layar dengan hanya menghilangkan -o /dev/null
bagiannya.
Selanjutnya, kami menentukan kunci yang ingin kami uji dengan menggunakan --local-user 012345
. Anda dapat menggunakan KeyID untuk kekhususan maksimum, atau menggunakan nama pengguna, mana saja yang paling sesuai dengan kebutuhan Anda.
Selanjutnya kita tentukan -as
, yang mengaktifkan mode keluaran ascii, dan menyetel mode konteks untuk penandatanganan. Selanjutnya -
hanya memberitahu GnuPG untuk mendapatkan data yang akan ditandatangani dari standar-in, yang merupakan bagian pertama dari perintah yang kami berikan echo "1234" |
.
Dan terakhir, kita memiliki && echo "A message that indicates success"
- "&&" artinya, jika perintah sebelumnya berhasil, cetak pesan ini. Ini hanya ditambahkan untuk kejelasan, karena keberhasilan perintah di atas akan ditunjukkan dengan tidak adanya keluaran sama sekali.
Saya harap itu cukup jelas bagi Anda untuk memahami apa yang sedang terjadi, dan bagaimana Anda dapat menggunakannya untuk melakukan pengujian yang ingin Anda lakukan. Jika ada bagian yang tidak jelas atau Anda tidak mengerti, saya akan dengan senang hati menjelaskan. Semoga berhasil!
[EDIT] - Jika Anda menggunakan GnuPG v2, perintah di atas perlu diubah sedikit, seperti:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Alasannya adalah, GnuPG v2 mengharapkan frasa sandi diambil melalui agen, jadi kita tidak dapat menonaktifkan penggunaan agen dengan --no-use-agent
dan mendapatkan efek yang diinginkan; sebaliknya kita perlu memberi tahu GnuPG v2 bahwa kita ingin menjalankan proses "batch", dan mengambil frasa sandi dari STDIN (standar dalam) dengan menggunakan opsi --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Ini hanya memungkinkan agen meminta frasa sandi dan memberi tahu Anda apakah itu benar (Kemudian tidak melakukan apa-apa).