summaryrefslogtreecommitdiffstats
path: root/crypto/engine
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2001-06-23 16:46:14 +0000
committerRichard Levitte <levitte@openssl.org>2001-06-23 16:46:14 +0000
commitf13def508cdec14c02817d5e52946758fd0289b7 (patch)
treeacb95fc4a76abf5b8900db20bc37a9e6c3508245 /crypto/engine
parent1ae6ddac91fc95ddc3e8fbf11839f3e54be04421 (diff)
Use the new UI features, among others the new boolean input.
NOTE: Boolean input hasn't been very well tested yet, so this part may fail miserably.
Diffstat (limited to 'crypto/engine')
-rw-r--r--crypto/engine/hw_ncipher.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/crypto/engine/hw_ncipher.c b/crypto/engine/hw_ncipher.c
index b6403aa666..8ae08de5b0 100644
--- a/crypto/engine/hw_ncipher.c
+++ b/crypto/engine/hw_ncipher.c
@@ -1152,13 +1152,20 @@ static int hwcrhk_get_pass(const char *prompt_info,
UI_INPUT_FLAG_DEFAULT_PWD,
buf,0,(*len_io) - 1);
UI_add_user_data(ui, callback_data);
- if (ok >= 0)
- ok=UI_process(ui);
+ UI_ctrl(ui, UI_CTRL_PRINT_ERRORS, 1, 0, 0);
+
+ if (ok >= 0)
+ do
+ {
+ ok=UI_process(ui);
+ }
+ while (ok < 0 && UI_ctrl(ui, UI_CTRL_IS_REDOABLE, 0, 0, 0));
+
if (ok >= 0)
*len_io = strlen(buf);
- OPENSSL_free(prompt);
UI_free(ui);
+ OPENSSL_free(prompt);
}
}
else
@@ -1204,7 +1211,7 @@ static int hwcrhk_insert_card(const char *prompt_info,
if (ui)
{
- char answer[10];
+ char answer;
char buf[BUFSIZ];
if (wrong_info)
@@ -1214,22 +1221,22 @@ static int hwcrhk_insert_card(const char *prompt_info,
if (ok >= 0 && prompt_info)
{
BIO_snprintf(buf, sizeof(buf)-1,
- "Insert card \"%s\"\n then hit <enter> or C<enter> to cancel\n", prompt_info);
- ok = UI_dup_input_string(ui, buf, 1,
- answer, 0, sizeof(answer)-1);
+ "Insert card \"%s\"", prompt_info);
+ ok = UI_dup_input_boolean(ui, buf,
+ "\n then hit <enter> or C<enter> to cancel\n",
+ "\r\n", "Cc", UI_INPUT_FLAG_ECHO, &answer);
}
UI_add_user_data(ui, callback_data);
+
if (ok >= 0)
ok = UI_process(ui);
UI_free(ui);
- /* If canceled input treat as 'cancel' */
- if (ok == -2)
- ok = 1;
- else if(ok < 0)
- ok = -1;
- else if (answer[0] == 'c' || answer[0] == 'C')
+
+ if (ok == -2 || (ok >= 0 && answer == 'C'))
ok = 1;
- else
+ else if (ok < 0)
+ ok = -1;
+ else
ok = 0;
}
return ok;