From acafa695e1e7998b892a6a621ef06d57bbc82722 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 2 Dec 2020 11:11:47 +0100 Subject: [PATCH] kbx: Better error message in case of a crippled Libgcrypt. * kbx/keybox-openpgp.c (keygrip_from_keyparm): Detect missing curve. --- kbx/keybox-openpgp.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/kbx/keybox-openpgp.c b/kbx/keybox-openpgp.c index 6d6ed77dc..8ded6839c 100644 --- a/kbx/keybox-openpgp.c +++ b/kbx/keybox-openpgp.c @@ -240,8 +240,16 @@ keygrip_from_keyparm (int algo, struct keyparm_s *kp, unsigned char *grip) if (!err && !gcry_pk_get_keygrip (s_pkey, grip)) { - log_info ("kbx: error computing keygrip\n"); - err = gpg_error (GPG_ERR_GENERAL); + /* Some Linux distributions remove certain curves from Libgcrypt + * but not from GnuPG and thus the keygrip can't be computed. + * Emit a better error message for this case. */ + if (!gcry_pk_get_curve (s_pkey, 0, NULL)) + err = gpg_error (GPG_ERR_UNKNOWN_CURVE); + else + { + log_info ("kbx: error computing keygrip\n"); + err = gpg_error (GPG_ERR_GENERAL); + } } gcry_sexp_release (s_pkey);