]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Trying to match remote and local md5
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Thu, 3 Jul 2025 00:33:43 +0000 (20:33 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Thu, 3 Jul 2025 00:33:43 +0000 (20:33 -0400)
lib/lvleml.c

index 57d5f4d8042441aa794622cdd9a9201769955660..1f6ef6cb21f9500e376b661fdaee337dfc2dbde2 100644 (file)
@@ -354,7 +354,8 @@ static char *get_auth_md5(CONTYP *contact,int delay)
 char *decoded;
 TIMESPEC cur;
 char *seq;
-char *b64;
+char *code;
+USRTYP *usr;
 char *line;
 int got;
 int phase;
@@ -366,34 +367,64 @@ cur.tv_nsec/=10000;     //100 millisec
 (void) rou_asprintf(&seq,"<%05d-%s@%s>",
                           cur.tv_nsec,contact->session->sessid,contact->locname);
 (void) rou_alert(0,"%s JMPDBG SEQ=<%s>",OPEP,seq);
-b64=cnv_setb64(seq);
+code=(char *)0;
+usr=(USRTYP *)0;
 line=(char *)0;
 got=0;
 phase=0;
 proceed=true;
 while (proceed==true) {
   switch (phase) {
-    case 0      :       //preparing a string an sending it
+    case 0      :  {    //preparing a string an sending it
+      char *b64;
+
+      b64=cnv_setb64(seq);
       (void) transmit(contact,true,"%d %s",SENDB64,b64);
       got=tcp_getline(contact->socptr,delay,&line);
+      if (got<0) 
+        phase=999;      //Answer not received in due time
+      b64=rou_freestr(b64);
+      }
       break;
-    case 1      :       //extracting B64
-      if (got>0) {
-        char *code;
+    case 1      :  {    //extracting code
+      char *name;       //extracted name
+      char *ptr;
 
-        code=cnv_getb64(line);
-        (void) rou_alert(0,"%s JMPDBG md5 Got <%s>",OPEP,code);
+      code=cnv_getb64(line);
+      name=(char *)0;
+      if ((ptr=strchr(code,' '))!=(char *)0) {
+        *ptr='\000';
+        name=strdup(code);
+        ptr++;
+        (void) memmove(code,ptr,strlen(ptr)+1);
+        }
+      if (name!=(char *)0) {
+        (void) sql_mngusr(contact->sqlptr,sql_select,name,&usr);
+        (void) rou_alert(0,"%s JMPDBG md5 name=<%s>",OPEP,name);
+        name=rou_freestr(name);
+        }
+      if (usr==(USRTYP *)0) {
         code=rou_freestr(code);
-        line=rou_freestr(line);
+        phase=999;
         }
+      line=rou_freestr(line);
+      }
       break;
+    case 2      :  {     //comparing hmac
+      char *local;
+
+      local=cnv_hashmd5(usr->passwd,(unsigned char *)seq); 
+      (void) rou_alert(0,"JMPDBG local=<%s>",local);
+      (void) rou_alert(0,"JMPDBG remote=<%s>",code);
+      local=rou_freestr(local);
+      usr=sql_freeusr(usr);
+      }
     default     :       //SAFE Guard
       proceed=false;
       break;
     }
   phase++;
   }
-b64=rou_freestr(b64);
 seq=rou_freestr(seq);
 return decoded;