Fixed passphrase authentication with server.
authorPekka Riikonen <priikone@silcnet.org>
Sat, 19 May 2007 12:02:43 +0000 (12:02 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sat, 19 May 2007 12:02:43 +0000 (12:02 +0000)
CHANGES
TODO
lib/silcclient/client_connect.c

diff --git a/CHANGES b/CHANGES
index c71c04bcf9d80011746e4d25c24be9845b4b06a0..0e0d89aa745d4ff3fd844bd0471abbf6913494c1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,14 @@
-Sat May 19 13:46:36 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
+Sat May 19 14:46:36 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
+
+       * 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 b091bdb41cfbcb98322e5bc1a4f509a973afe85c..e9af97dc227f5575d055939a3850d6e05b62b661 100644 (file)
--- 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)
 
index f1aedcbb8c563481eb50b485283fec5c60852814..9542363fae0588c2a5930250110d04e016b77982 100644 (file)
@@ -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);