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) {
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;
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));