aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 () )