switch (phase) {
case 0 : //Building the challenge sequence
if ((challenge=dig_getchallenge(contact->locname))==(char *)0) {
- (void) rou_alert(0,"%s Unable to get challeng sequence (Bug!)",OPEP);
+ (void) rou_alert(0,"%s Unable to get challenge sequence (Bug!)",OPEP);
phase=999;
}
break;
break;
case 4 : //getting the user name and password
break;
- case 5 : //comparing answer
- if (dig_checkresp(resp,"xxx")==true)
- (void) rou_alert(0,"JMPDBG Bingo!");
- resp=dig_freeresp(resp);
+ case 5 : { //comparing result.
+ char *HAS;
+ char *rspauth;
+ char *b64;
+
+ if ((HAS=dig_hashresp(resp,"","xxx"))==(char *)0) {
+ (void) rou_alert(0,"%s Unable to get the hash rspauth (Bug!)",OPEP);
+ break;
+ }
+ (void) rou_asprintf(&rspauth,"rspauth=%s",HAS);
+ b64=cnv_setb64(rspauth);
+ (void) transmit(contact,true,"%d %s",SENDB64,b64);
+ b64=rou_freestr(b64);
+ rspauth=rou_freestr(rspauth);
+ HAS=rou_freestr(HAS);
+ }
+ case 6 : { //comparing result.
+ char *HA0;
+
+ if ((HA0=dig_hashresp(resp,"AUTHENTICATE","xxx"))==(char *)0) {
+ (void) rou_alert(0,"%s Unable to get the hash response (Bug!)",OPEP);
+ break;
+ }
+ if (strcmp(HA0,resp->response)!=0) {
+ phase=999; //user NOT autheticated
+ }
+ HA0=rou_freestr(HA0);
+ }
+ break;
+ case 7 : //comparing answer
+ (void) rou_alert(0,"JMPDBG Bingo!");
+ (void) rou_asprintf(&decoded,"%s%s%s%s",IOBNULL,resp->username,IOBNULL,"mailleur2");
break;
default : //SAFE Guard
proceed=false;
}
phase++;
}
+(void) rou_alert(0,"%s JMPDBG decoded=<%s>",OPEP,decoded);
return decoded;
#undef OPEP