aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keygen.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2017-10-19 16:10:37 +0000
committerWerner Koch <[email protected]>2017-10-19 16:10:37 +0000
commit44fb3fbc85b32552c91f32f099b6b246c12ce0cc (patch)
tree6812f818ca01a32d53910bd111dae4155485a947 /g10/keygen.c
parentgpg: Print sec/sbb with --import-option import-show or show-only. (diff)
downloadgnupg-44fb3fbc85b32552c91f32f099b6b246c12ce0cc.tar.gz
gnupg-44fb3fbc85b32552c91f32f099b6b246c12ce0cc.zip
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 <[email protected]>
Diffstat (limited to 'g10/keygen.c')
-rw-r--r--g10/keygen.c3
1 files changed, 3 insertions, 0 deletions
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;
}