From 890f7e6c710c3126c78fedc91335528c64456b12 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Sat, 19 May 2007 12:02:43 +0000 Subject: [PATCH] Fixed passphrase authentication with server. --- CHANGES | 12 +++++++++++- TODO | 2 +- lib/silcclient/client_connect.c | 15 +++++++++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index c71c04bc..0e0d89aa 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,14 @@ -Sat May 19 13:46:36 EEST 2007 Pekka Riikonen +Sat May 19 14:46:36 EEST 2007 Pekka Riikonen + + * Fixed passphrase authentication with server. Affected file + is lib/silcclient/client_connect.c. + + * Fixed passphrase authentication as responder. Affected file is + lib/silcske/silcconnauth.c. + + * Changed SilcAskPassphrase and SilcGetAuthMeth callbacks to + return data as const. Affected file is + lib/silcclient/silcclient.h. * Fixed timeout calculation in Symbian scheduler. Affected file is lib/silcutil/symbian/silcsymbianscheduler.c. diff --git a/TODO b/TODO index b091bdb4..e9af97dc 100644 --- a/TODO +++ b/TODO @@ -75,7 +75,7 @@ lib/silcclient, The Client Library ***PARTLY DONE**** o Connection auth request. (***DONE) - o Password auth test, public key auth test. (***TESTING NEEDED) + o Password auth test, public key auth test. (***DONE) o Starting key exchange directly, rewrite. (***DONE) diff --git a/lib/silcclient/client_connect.c b/lib/silcclient/client_connect.c index f1aedcbb..9542363f 100644 --- a/lib/silcclient/client_connect.c +++ b/lib/silcclient/client_connect.c @@ -280,14 +280,18 @@ static void silc_client_rekey_completion(SilcSKE ske, /* Callback called by application to return authentication data */ static void silc_client_connect_auth_method(SilcAuthMethod auth_meth, - void *auth, SilcUInt32 auth_len, + const void *auth, + SilcUInt32 auth_len, void *context) { SilcFSMThread fsm = context; SilcClientConnection conn = silc_fsm_get_context(fsm); conn->internal->params.auth_method = auth_meth; - conn->internal->params.auth = auth; + if (auth_meth == SILC_AUTH_PASSWORD) + conn->internal->params.auth = silc_memdup(auth, auth_len); + else + conn->internal->params.auth = (void *)auth; conn->internal->params.auth_len = auth_len; SILC_FSM_CALL_CONTINUE(fsm); @@ -676,6 +680,13 @@ SILC_FSM_STATE(silc_client_st_connected) silc_ske_free(conn->internal->ske); conn->internal->ske = NULL; + if (!conn->internal->params.auth_set && + conn->internal->params.auth_method == SILC_AUTH_PASSWORD && + conn->internal->params.auth) { + silc_free(conn->internal->params.auth); + conn->internal->params.auth = NULL; + } + if (conn->internal->disconnected) { /** Disconnected */ silc_fsm_next(fsm, silc_client_st_connect_error); -- 2.24.0