From 44fb3fbc85b32552c91f32f099b6b246c12ce0cc Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 19 Oct 2017 18:10:37 +0200 Subject: [PATCH] gpg: Fix creating on-disk subkey with on-card primary key. * g10/keygen.c (generate_subkeypair): Ignore error code issued for trying to verify a card based key. -- We try to verify the primary key and thus seed the passphrase cache before generating the subkey. However, the verification does not yet work for on-card keys and thus the PASSWD --verify send to the agent returns an error. This patch detects this error and continues without a seeded passphrase cache. After all that pre-seeding is just a convenience. GnuPG-bug-id: 3280 Signed-off-by: Werner Koch --- g10/keygen.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/g10/keygen.c b/g10/keygen.c index 2b17a1e09..8f30b7ecc 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -5051,6 +5051,9 @@ generate_subkeypair (ctrl_t ctrl, kbnode_t keyblock, const char *algostr, err = agent_passwd (ctrl, hexgrip, desc, 1 /*=verify*/, &cache_nonce, &passwd_nonce); xfree (desc); + if (gpg_err_code (err) == GPG_ERR_NOT_IMPLEMENTED + && gpg_err_source (err) == GPG_ERR_SOURCE_GPGAGENT) + err = 0; /* Very likely that the key is on a card. */ if (err) goto leave; }