summaryrefslogtreecommitdiffstats
path: root/sm
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2017-07-27 14:54:50 +0200
committerWerner Koch <wk@gnupg.org>2017-07-27 14:57:32 +0200
commit1bd22a85b4f06324037b3500d2fa8af62733c926 (patch)
tree6f91cd47cd0086b9c92fcc7fcbcf38148ec1dd36 /sm
parentgpg,sm: Fix compliance checking for decryption. (diff)
downloadgnupg2-1bd22a85b4f06324037b3500d2fa8af62733c926.tar.xz
gnupg2-1bd22a85b4f06324037b3500d2fa8af62733c926.zip
gpg,sm: Allow encryption (with warning) to any key in de-vs mode.
* g10/encrypt.c (encrypt_crypt): Do not abort for a non-compliant key. * sm/encrypt.c (gpgsm_encrypt): Ditto. -- GnuPG-bug-id: 3306 Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'sm')
-rw-r--r--sm/encrypt.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/sm/encrypt.c b/sm/encrypt.c
index 73519325e..0225476e7 100644
--- a/sm/encrypt.c
+++ b/sm/encrypt.c
@@ -481,15 +481,16 @@ gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp)
/* Check compliance. */
pk_algo = gpgsm_get_key_algo_info (cl->cert, &nbits);
- if (! gnupg_pk_is_allowed (opt.compliance, PK_USE_ENCRYPTION, pk_algo,
- NULL, nbits, NULL))
+ if (!gnupg_pk_is_compliant (opt.compliance, pk_algo, NULL, nbits, NULL))
{
- log_error ("certificate ID 0x%08lX not suitable for "
- "encryption while in %s mode\n",
- gpgsm_get_short_fingerprint (cl->cert, NULL),
- gnupg_compliance_option_string (opt.compliance));
- rc = gpg_error (GPG_ERR_PUBKEY_ALGO);
- goto leave;
+ char kidstr[10+1];
+
+ snprintf (kidstr, sizeof kidstr, "0x%08lX",
+ gpgsm_get_short_fingerprint (cl->cert, NULL));
+ log_info (_("WARNING: key %s is not suitable for encryption"
+ " in %s mode\n"),
+ kidstr,
+ gnupg_compliance_option_string (opt.compliance));
}
/* Fixme: When adding ECC we need to provide the curvename and