diff options
Diffstat (limited to 'g10/keygen.c')
-rw-r--r-- | g10/keygen.c | 210 |
1 files changed, 1 insertions, 209 deletions
diff --git a/g10/keygen.c b/g10/keygen.c index 3dbd9b402..bc98cee17 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -2860,184 +2860,6 @@ show_smartcard (struct agent_card_info_s *info) free_public_key( pk ); } - -static char * -smartcard_get_one_name (const char *prompt1, const char *prompt2) -{ - char *name; - int i; - - for (;;) - { - name = cpr_get (prompt1, prompt2); - if (!name) - return NULL; - trim_spaces (name); - cpr_kill_prompt (); - for (i=0; name[i] && name[i] >= ' ' && name[i] <= 126; i++) - ; - - /* The name must be in Latin-1 and not UTF-8 - lacking the code - to ensure this we restrict it to ASCII. */ - if (name[i]) - tty_printf (_("Error: Only plain ASCII is currently allowed.\n")); - else if (strchr (name, '<')) - tty_printf (_("Error: The \"<\" character may not be used.\n")); - else if (strstr (name, " ")) - tty_printf (_("Error: Double spaces are not allowed.\n")); - else - return name; - xfree (name); - } -} - -static int -smartcard_change_name (const char *current_name) -{ - char *surname = NULL, *givenname = NULL; - char *isoname, *p; - int rc; - - surname = smartcard_get_one_name ("keygen.smartcard.surname", - _("Cardholder's surname: ")); - givenname = smartcard_get_one_name ("keygen.smartcard.givenname", - _("Cardholder's given name: ")); - if (!surname || !givenname || (!*surname && !*givenname)) - { - xfree (surname); - xfree (givenname); - return -1; /*canceled*/ - } - - isoname = xmalloc ( strlen (surname) + 2 + strlen (givenname) + 1); - strcpy (stpcpy (stpcpy (isoname, surname), "<<"), givenname); - xfree (surname); - xfree (givenname); - for (p=isoname; *p; p++) - if (*p == ' ') - *p = '<'; - - log_debug ("setting Name to `%s'\n", isoname); - rc = agent_scd_setattr ("DISP-NAME", isoname, strlen (isoname) ); - if (rc) - log_error ("error setting Name: %s\n", gpg_strerror (rc)); - - xfree (isoname); - return rc; -} - - -static int -smartcard_change_url (const char *current_url) -{ - char *url; - int rc; - - url = cpr_get ("keygen.smartcard.url", _("URL to retrieve public key: ")); - if (!url) - return -1; - trim_spaces (url); - cpr_kill_prompt (); - - rc = agent_scd_setattr ("PUBKEY-URL", url, strlen (url) ); - if (rc) - log_error ("error setting URL: %s\n", gpg_strerror (rc)); - xfree (url); - return rc; -} - -static int -smartcard_change_login_data (void) -{ - char *data; - int rc; - - data = cpr_get ("keygen.smartcard.login_data", - _("Login data (account name): ")); - if (!data) - return -1; - trim_spaces (data); - cpr_kill_prompt (); - - rc = agent_scd_setattr ("LOGIN-DATA", data, strlen (data) ); - if (rc) - log_error ("error setting login data: %s\n", gpg_strerror (rc)); - xfree (data); - return rc; -} - -static int -smartcard_change_lang (void) -{ - char *data, *p; - int rc; - - data = cpr_get ("keygen.smartcard.lang", - _("Language preferences: ")); - if (!data) - return -1; - trim_spaces (data); - cpr_kill_prompt (); - - if (strlen (data) > 8 || (strlen (data) & 1)) - { - tty_printf (_("Error: invalid length of preference string.\n")); - xfree (data); - return -1; - } - - for (p=data; *p && *p >= 'a' && *p <= 'z'; p++) - ; - if (*p) - { - tty_printf (_("Error: invalid characters in preference string.\n")); - xfree (data); - return -1; - } - - rc = agent_scd_setattr ("DISP-LANG", data, strlen (data) ); - if (rc) - log_error ("error setting lang: %s\n", gpg_strerror (rc)); - xfree (data); - return rc; -} - - -static int -smartcard_change_sex (void) -{ - char *data; - const char *str; - int rc; - - data = cpr_get ("keygen.smartcard.sex", - _("Sex ((M)ale, (F)emale or space): ")); - if (!data) - return -1; - trim_spaces (data); - cpr_kill_prompt (); - - if (!*data) - str = "9"; - else if ((*data == 'M' || *data == 'm') && !data[1]) - str = "1"; - else if ((*data == 'F' || *data == 'f') && !data[1]) - str = "2"; - else - { - tty_printf (_("Error: invalid response.\n")); - xfree (data); - return -1; - } - - rc = agent_scd_setattr ("DISP-SEX", str, 1 ); - if (rc) - log_error ("error setting sex: %s\n", gpg_strerror (rc)); - xfree (data); - return rc; -} - - /* Return true if the SHA1 fingerprint FPR consists only of zeroes. */ static int fpr_is_zero (const char *fpr) @@ -3083,11 +2905,6 @@ check_smartcard (char **r_serialno) show_smartcard (&info); tty_printf ("\n" - "N - change cardholder name\n" - "U - change public key URL\n" - "D - change login data\n" - "L - change language preferences\n" - "S - change sex\n" "K - generate all keys\n" "Q - quit\n" "\n"); @@ -3098,32 +2915,7 @@ check_smartcard (char **r_serialno) continue; rc = 0; - if ( *answer == 'N' || *answer == 'n') - { - if (!smartcard_change_name (info.disp_name)) - reread = 1; - } - else if ( *answer == 'U' || *answer == 'u') - { - if (!smartcard_change_url (info.pubkey_url)) - reread = 1; - } - else if ( *answer == 'D' || *answer == 'd') - { - if (!smartcard_change_login_data ()) - reread = 1; - } - else if ( *answer == 'L' || *answer == 'l') - { - if (!smartcard_change_lang ()) - reread = 1; - } - else if ( *answer == 'S' || *answer == 's') - { - if (!smartcard_change_sex ()) - reread = 1; - } - else if ( *answer == 'K' || *answer == 'k') + if ( *answer == 'K' || *answer == 'k') { if ( (info.fpr1valid && !fpr_is_zero (info.fpr1)) || (info.fpr2valid && !fpr_is_zero (info.fpr2)) |