Author: ArcRiley
Date: 2009-02-26 02:13:59 -0500 (Thu, 26 Feb 2009)
New Revision: 1522

Modified:
   trunk/concordance/include/concordance.h
   trunk/concordance/include/concordance.sockets.h
   trunk/concordance/src/sockets/Client.c
   trunk/concordance/src/utils.c
Log:
added session key generation

Modified: trunk/concordance/include/concordance.h
===================================================================
--- trunk/concordance/include/concordance.h     2009-02-26 02:25:06 UTC (rev 
1521)
+++ trunk/concordance/include/concordance.h     2009-02-26 07:13:59 UTC (rev 
1522)
@@ -40,6 +40,7 @@
 gchar*        concordFindAttr          (const gchar** attrs, const gchar* key);
 gchar*        concordPyUnicodeToUTF8   (PyObject* unicode);
 gboolean      concordStrToUI           (const gchar* string, guint* result);
+void          concordRandKey           (gchar* key);
 
 typedef struct {
   GMainContext*    context;              /* Concordance's Glib context */

Modified: trunk/concordance/include/concordance.sockets.h
===================================================================
--- trunk/concordance/include/concordance.sockets.h     2009-02-26 02:25:06 UTC 
(rev 1521)
+++ trunk/concordance/include/concordance.sockets.h     2009-02-26 07:13:59 UTC 
(rev 1522)
@@ -68,6 +68,7 @@
   Gsasl_session*        sctx;          /* gsasl session context */
   XML_Parser            pars;          /* expat parser for this session */
   gchar                 host[256];     /* verified hostname or NULL */
+  gchar                 skey[16];      /* session key (stream id="") */
   concordVersion        vers;          /* XMPP major.minor version */
   gboolean              tls;           /* flag for whether tls is enabled */
   gint                  state;         /* current session state */

Modified: trunk/concordance/src/sockets/Client.c
===================================================================
--- trunk/concordance/src/sockets/Client.c      2009-02-26 02:25:06 UTC (rev 
1521)
+++ trunk/concordance/src/sockets/Client.c      2009-02-26 07:13:59 UTC (rev 
1522)
@@ -350,7 +350,8 @@
       gchar**               versions;
       gchar*                error = NULL;
 
-    
+    /* generate random session key */
+    concordRandKey(session->skey);
 
     /* initialize response buffer
 
@@ -369,7 +370,7 @@
                     "<stream:stream xmlns='jabber:client'"
                     " xmlns:stream='http://etherx.jabber.org/streams'"
                     " from='%s' id='%s'",
-                    "selket.apogean.org", "concordance-1");
+                    "selket.apogean.org", session->skey);
 
     /* Parse version:
        * NULL is passed, meaning the version attribute was not found, so:

Modified: trunk/concordance/src/utils.c
===================================================================
--- trunk/concordance/src/utils.c       2009-02-26 02:25:06 UTC (rev 1521)
+++ trunk/concordance/src/utils.c       2009-02-26 07:13:59 UTC (rev 1522)
@@ -121,3 +121,20 @@
   *result = r;
   return TRUE;
 }
+
+void
+concordRandKey(gchar* key) {                                              /*\
+  cdef :                                                                  \*/
+    gint i;
+    gchar map[] = "0123456789ABCDEFGHIJKLMNOPQRSTUV";
+    
+  for (i = 0; i<15; i += 1) {
+    /* generate a 5-bit random int and map it to an alphanumeric value
+    
+       gint32           g_random_int_range       (gint32 begin,
+                                                  gint32 end);
+    */
+    key[i] = map[g_random_int_range(0,32)];
+  }
+  key[15] = 0;
+}

_______________________________________________
PySoy-SVN mailing list
PySoy-SVN@pysoy.org
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to