]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Problem with dig_hashmd5, seq is NOT always ascii
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 6 Jul 2025 21:52:56 +0000 (17:52 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 6 Jul 2025 21:52:56 +0000 (17:52 -0400)
lib/lvleml.c
lib/unidig.c
lib/unidig.h

index a8dabb5f6c4fc4bdb99e72ffb332b2d97082b59a..0a2dbac25d29439b0f6304546ad77ceccccad49f 100644 (file)
@@ -490,7 +490,7 @@ resp=(RSPTYP *)0;
 phase=0;
 proceed=true;
 while (proceed==true) {
-  (void) rou_alert(0,"%s JMPDBG phase='%d'",OPEP,phase);
+  //(void) rou_alert(0,"%s JMPDBG phase='%d'",OPEP,phase);
   switch (phase) {
     case 0      :       //Building the challenge sequence
       if ((challenge=dig_getchallenge())==(char *)0) {
index 9cddc366ba2c9535c44e2ef52ad870c47189ede9..76c47f3a7651d685eeec6370e44df2afbe4c4c81 100644 (file)
@@ -209,13 +209,11 @@ PUBLIC MD5TYP *dig_hashmd5(unsigned char *seq)
 
 MD5TYP *md5;
 EVP_MD_CTX *mdctx;
-unsigned int digestlength;
 int phase;
 _Bool proceed;
 
 md5=(MD5TYP *)0;
 mdctx=(EVP_MD_CTX *)0;
-digestlength=sizeof(MD5TYP)-1;
 phase=1;
 proceed=true;
 while (proceed==true) {
@@ -233,11 +231,16 @@ while (proceed==true) {
     case 2      :       //doing hashing
       (void) EVP_DigestInit_ex(mdctx,EVP_md5(),(ENGINE *)0);
       (void) EVP_DigestUpdate(mdctx,seq,strlen((const char *)seq));
+      (void) rou_alert(0,"%s digestup de  of <%s> '%d' long",OPEP,seq,strlen((const char *)seq));
       break;
-    case 3      :       //assign memory
+    case 3      :   {   //assign memory
+      unsigned int s;
+
       md5=calloc(1,sizeof(MD5TYP));
-      (void) EVP_DigestFinal_ex(mdctx,(unsigned char *)md5,&digestlength);
+      (void) EVP_DigestFinal_ex(mdctx,(unsigned char *)md5,&s);
+      (void) rou_alert(0,"%s got digest of '%d' char",OPEP,s);
       EVP_MD_CTX_free(mdctx);
+      }
       break;
     default     :       //SAFE Guard
       proceed=false;
@@ -409,14 +412,17 @@ while (proceed==true) {
   switch (phase) {
     case 0      :  {    //computing hash HA1
       MD5TYP *A1;
-      char strA1[sizeof(MD5TYP)+1];
+      char second[300];
 
       (void) snprintf(seq,sizeof(seq),"%s:%s:%s",resp->username,resp->realm,secret);
+      (void) rou_alert(0,"JMDPBG seq1=<%s>",seq);
       A1=dig_hashmd5((unsigned char *)seq);
-      (void) memset(strA1,'\000',sizeof(strA1));
-      (void) memmove(strA1,(char *)A1,sizeof(MD5TYP));
       //algorithm value is "MD5-sess"
-      (void) snprintf(seq,sizeof(seq),"%s:%s:%s",strA1,resp->nonce,resp->cnonce);
+      (void) memset(seq,'\000',sizeof(seq));
+      (void) memmove(seq,(char *)A1,sizeof(MD5TYP));
+      (void) snprintf(second,sizeof(seq),":%s:%s",resp->nonce,resp->cnonce);
+      (void) strcat(seq+sizeof(MD5TYP),second);
+      (void) rou_alert(0,"JMDPBG seq2=<%s>",seq);
       (void) free(A1);
       A1=dig_hashmd5((unsigned char *)seq);
       HA1=cnv_tohexa((char *)A1,sizeof(MD5TYP));
index ba1e40ef3af94c383d79801ab01422c8ebbbb2a8..cecc3c157f7ebf9bed7aa282cab1edae6222c9a6 100644 (file)
@@ -8,7 +8,7 @@
 #ifndef        UNIDIG
 #define UNIDIG
 
-#define REALM    APPNAME".email"
+#define REALM    APPNAME"-email"
 
 typedef struct  {       //DIGEST-MD5 challange response structure
         char *username; //username requesting authentication