summaryrefslogtreecommitdiffstats
path: root/crypto/engine
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2001-06-23 12:50:06 +0000
committerDr. Stephen Henson <steve@openssl.org>2001-06-23 12:50:06 +0000
commit429266b7e4b494b72e16045d47ffc5c3e378a9bf (patch)
treec2cbc4ac27fd5a6c21b1f93d7ccc5aebee46ab69 /crypto/engine
parent2c7bc88d785b40bd12a5080fc3d2ef9445460079 (diff)
Fix hwcrhk_insert_card.
Diffstat (limited to 'crypto/engine')
-rw-r--r--crypto/engine/hw_ncipher.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/crypto/engine/hw_ncipher.c b/crypto/engine/hw_ncipher.c
index 1b9254c321..b2af378960 100644
--- a/crypto/engine/hw_ncipher.c
+++ b/crypto/engine/hw_ncipher.c
@@ -1175,7 +1175,7 @@ static int hwcrhk_insert_card(const char *prompt_info,
HWCryptoHook_PassphraseContext *ppctx,
HWCryptoHook_CallerContext *cactx)
{
- int ok = 1;
+ int ok = -1;
UI *ui;
void *callback_data = NULL;
UI_METHOD *ui_method = NULL;
@@ -1211,7 +1211,7 @@ static int hwcrhk_insert_card(const char *prompt_info,
BIO_snprintf(buf, sizeof(buf)-1,
"Current card: \"%s\"\n", wrong_info);
ok = UI_dup_info_string(ui, buf);
- if (ok == 0 && prompt_info)
+ if (ok && prompt_info)
{
BIO_snprintf(buf, sizeof(buf)-1,
"Insert card \"%s\"\n then hit <enter> or C<enter> to cancel\n", prompt_info);
@@ -1219,15 +1219,20 @@ static int hwcrhk_insert_card(const char *prompt_info,
answer, 0, sizeof(answer)-1);
}
UI_add_user_data(ui, callback_data);
- if (ok == 0)
+ if (ok)
ok = UI_process(ui);
UI_free(ui);
- if (strchr("Cc",answer[0]) == 0)
+ /* 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')
ok = 1;
+ else
+ ok = 0;
}
- if (ok == 0)
- return 0;
- return -1;
+ return ok;
}
static void hwcrhk_log_message(void *logstr, const char *message)