aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-01-22 09:35:19 +0000
committerWerner Koch <[email protected]>2016-01-22 09:35:19 +0000
commitfc0c71dfe5ea8f1c683101948c23f5d2064ee4cd (patch)
treebe6b35845023c01fa8868c8493e18d9b9e178ce9
parentgpg: Improve header text of the auto-created revocations. (diff)
downloadgnupg-fc0c71dfe5ea8f1c683101948c23f5d2064ee4cd.tar.gz
gnupg-fc0c71dfe5ea8f1c683101948c23f5d2064ee4cd.zip
gpg: Allow new user ids with only the mail address.
* g10/keygen.c (ask_user_id): Allow empty name. -- The --quick-gen-key command allows this and further some mail providers require that a key has only the mail address to allow for anonymous accounts. Signed-off-by: Werner Koch <[email protected]>
-rw-r--r--g10/keygen.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/g10/keygen.c b/g10/keygen.c
index 94ea1262f..0f7a6a0aa 100644
--- a/g10/keygen.c
+++ b/g10/keygen.c
@@ -2533,8 +2533,11 @@ ask_user_id (int mode, int full, KBNODE keyblock)
}
else if( digitp(aname) )
tty_printf(_("Name may not start with a digit\n"));
- else if( strlen(aname) < 5 )
+ else if (*aname && strlen (aname) < 5)
+ {
tty_printf(_("Name must be at least 5 characters long\n"));
+ /* However, we allow an empty name. */
+ }
else
break;
}
@@ -2577,11 +2580,20 @@ ask_user_id (int mode, int full, KBNODE keyblock)
xfree(uid);
uid = p = xmalloc(strlen(aname)+strlen(amail)+strlen(acomment)+12+10);
- p = stpcpy(p, aname );
- if( *acomment )
- p = stpcpy(stpcpy(stpcpy(p," ("), acomment),")");
- if( *amail )
- p = stpcpy(stpcpy(stpcpy(p," <"), amail),">");
+ if (!*aname && *amail && !*acomment && !random_is_faked ())
+ { /* Empty name and comment but with mail address. Use
+ simplified form with only the non-angle-bracketed mail
+ address. */
+ p = stpcpy (p, amail);
+ }
+ else
+ {
+ p = stpcpy (p, aname );
+ if (*acomment)
+ p = stpcpy(stpcpy(stpcpy(p," ("), acomment),")");
+ if (*amail)
+ p = stpcpy(stpcpy(stpcpy(p," <"), amail),">");
+ }
/* Append a warning if the RNG is switched into fake mode. */
if ( random_is_faked () )