aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2020-12-02 10:11:47 +0000
committerWerner Koch <[email protected]>2020-12-02 10:11:47 +0000
commitacafa695e1e7998b892a6a621ef06d57bbc82722 (patch)
treef932b710112831a166b85e4080e35c323f64eed8
parentdoc: Add parameters for batch generation of ECC keys. (diff)
downloadgnupg-acafa695e1e7998b892a6a621ef06d57bbc82722.tar.gz
gnupg-acafa695e1e7998b892a6a621ef06d57bbc82722.zip
kbx: Better error message in case of a crippled Libgcrypt.
* kbx/keybox-openpgp.c (keygrip_from_keyparm): Detect missing curve.
-rw-r--r--kbx/keybox-openpgp.c12
1 files 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);