From 7089dcc54099a4909ce7d386c07ab87e1398e2eb Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 11 Sep 2017 11:29:13 +0200 Subject: gpg: Fix key generation with only an email part. * g10/keygen.c (proc_parameter_file): Special case the email only case. -- Using a parameter file like %ask-passphrase key-type: RSA key-length: 2048 key-usage: sign subkey-type: RSA subkey-length: 2048 subkey-usage: encrypt name-email: foo@example.org with "gpg --gen-key --patch" the result was this key pub rsa2048 2017-09-11 [SC] 63A8C1BA12CC289A0E8072C971C7F8D4A18CE0BE uid [ultimate] sub rsa2048 2017-09-11 [E] At least the the extra leading space the left angle bracket is wrong. Further some mail providers reject keys which consist of more than just a plain mail address. Using just a mail address is anyway the new new suggested content for a user id. With this patch the key will be pub rsa2048 2017-09-11 [SC] B302343C20EA6DECDB6A155135352F2520397080 uid [ultimate] foo@example.org sub rsa2048 2017-09-11 [E] Signed-off-by: Werner Koch --- g10/keygen.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/g10/keygen.c b/g10/keygen.c index 6a3d32345..08bc62131 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -3530,7 +3530,14 @@ proc_parameter_file (ctrl_t ctrl, struct para_data_s *para, const char *fname, if( s2 ) p = stpcpy(stpcpy(stpcpy(p," ("), s2 ),")"); if( s3 ) - p = stpcpy(stpcpy(stpcpy(p," <"), s3 ),">"); + { + /* If we have only the email part, do not add the space + * and the angle brackets. */ + if (*p) + p = stpcpy(stpcpy(stpcpy(p," <"), s3 ),">"); + else + p = stpcpy (p, s3); + } append_to_parameter (para, r); have_user_id=1; } -- cgit v1.2.3