From 0ee0cae9ed40a4cbe30890c841f3f7a3b3620c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sat, 3 Sep 2005 20:49:59 +0000 Subject: [PATCH] Add hx509_lock_command_string. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16020 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/hx509/lock.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/hx509/lock.c b/lib/hx509/lock.c index 5d86a3df0..d23044455 100644 --- a/lib/hx509/lock.c +++ b/lib/hx509/lock.c @@ -147,15 +147,9 @@ _hx509_lock_find_cert(hx509_lock lock, const hx509_query *q, hx509_cert *c) } int -hx509_lock_set_prompter(hx509_lock lock, hx509_prompter_fct *prompt) +hx509_lock_set_prompter(hx509_lock lock, hx509_prompter_fct *prompt, void *data) { lock->prompt = prompt; - return 0; -} - -int -hx509_lock_set_prompter_data(hx509_lock lock, void *data) -{ lock->prompt_data = data; return 0; } @@ -167,13 +161,17 @@ hx509_lock_reset_promper(hx509_lock lock) lock->prompt_data = NULL; } +static int +default_prompter(void *data, const hx509_prompt *prompter) +{ + return 1; +} + int hx509_lock_prompt(hx509_lock lock, hx509_prompt *prompt) { - if (lock->prompt == NULL) { - strlcpy(prompt->reply->data, "", prompt->reply->length); - return 0; - } + if (lock->prompt == NULL) + return HX509_CRYPTO_NO_PROMPTER; return (*lock->prompt)(lock->prompt_data, prompt); } @@ -185,3 +183,15 @@ hx509_lock_free(hx509_lock lock) memset(lock, 0, sizeof(*lock)); free(lock); } + +int +hx509_lock_command_string(hx509_lock lock, const char *string) +{ + if (strncasecmp(string, "PASS:", 5) == 0) { + hx509_lock_add_password(lock, string + 5); + } else if (strncasecmp(string, "PROMPT:", 8) == 0) { + hx509_lock_set_prompter(lock, default_prompter, NULL); + } else + return HX509_UNKNOWN_LOCK_COMMAND; + return 0; +}