URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5123
[ Назад ]

Исходное сообщение
"Radius CHAP"

Отправлено Harunaga , 07-Фев-06 17:26 
Понадобилось в программулине приделать 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


Содержание

Сообщения в этом обсуждении
"Radius CHAP"
Отправлено kir , 13-Фев-06 15:34 
почитайте rfc или посмотрите как это уже сделано
примеры pppd или freeraduis

"Radius CHAP"
Отправлено Harunaga , 13-Фев-06 17:07 
> почитайте rfc или посмотрите как это уже сделано
> примеры pppd или freeraduis

Само собой читал и смотрел.

Все правильно сделал, длину атрибута CHAP-Challenge только неправильно присваивал. Поправил, все заработало.