Понадобилось в программулине приделать radius сервер. Все замечательно, только проблема с чапом. Приходят атрибуты CHAP-Password и CHAP-Challenge, а что делать с ними, непонятно.
MD5_CTX context;
MD5_Init (&context);
MD5_Update (&context, radauthdata->chap_id, 1);
MD5_Update (&context, radauthdata->realpassword, strlen(radauthdata->realpassword));
MD5_Update (&context, radauthdata->challenge, radauthdata->challengeleng);
MD5_Final(digest, &context);
if (!memcmp (digest, radauthdata->chap, 16))
//успешная авторизация
...
else
//неуспешная авторизация
...
но digest и chap у меня никогда не совпадают при заведомо верных паролях. В чем может быть дело?
radauthdata->realpassword - рельный пароль, char*
radauthdata->chap_id - CHAP id, первый байт атрибута, uint8_t*
radauthdata->chap - собственно chap, char*
radauthdata->challenge - CHAP challenge, char*
radauthdata->challengeleng - длина CHAP challenge, uint8_t