Понадобилось в программулине приделать 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
почитайте rfc или посмотрите как это уже сделано
примеры pppd или freeraduis
> почитайте rfc или посмотрите как это уже сделано
> примеры pppd или freeraduisСамо собой читал и смотрел.
Все правильно сделал, длину атрибута CHAP-Challenge только неправильно присваивал. Поправил, все заработало.