Handle EAP MD5-Challenge.
49 {
51 const struct eap_md5 *md5req = req;
52 struct {
57 void *secret;
58 int secret_len;
60
61
62 if ( req_len < sizeof ( *md5req ) ) {
63 DBGC (
netdev,
"EAP %s underlength MD5-Challenge:\n",
67 goto err_sanity;
68 }
69 if ( ( req_len -
sizeof ( *md5req ) ) < md5req->
len ) {
70 DBGC (
netdev,
"EAP %s truncated MD5-Challenge:\n",
74 goto err_sanity;
75 }
76
77
79 DBGC (
netdev,
"EAP %s could not initialise CHAP: %s\n",
81 goto err_chap;
82 }
85 &password_setting, &secret );
86 if ( secret_len < 0 ) {
90 goto err_secret;
91 }
95 assert ( chap.response_len == sizeof ( md5rsp.value ) );
96 md5rsp.len = sizeof ( md5rsp.value );
97 memcpy ( md5rsp.value, chap.response, sizeof ( md5rsp.value ) );
98
99
101 sizeof ( md5rsp ) ) ) != 0 )
102 goto err_tx;
103
104 err_tx:
106 err_secret:
108 err_chap:
109 err_sanity:
111}
struct arbelprm_rc_send_wqe rc
#define assert(condition)
Assert a condition at run-time.
void chap_respond(struct chap_response *chap)
Respond to the CHAP challenge.
void chap_update(struct chap_response *chap, const void *data, size_t len)
Add data to the CHAP challenge.
void chap_finish(struct chap_response *chap)
Free resources used by a CHAP response.
int chap_init(struct chap_response *chap, struct digest_algorithm *digest)
Initialise CHAP challenge/response.
static void chap_set_identifier(struct chap_response *chap, unsigned int identifier)
Add identifier data to the CHAP challenge.
int eap_tx_response(struct eap_supplicant *supplicant, const void *rsp, size_t rsp_len)
Transmit EAP response.
static struct net_device * netdev
#define EINVAL
Invalid argument.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
struct digest_algorithm md5_algorithm
MD5 algorithm.
#define MD5_DIGEST_SIZE
MD5 digest size.
static struct settings * netdev_settings(struct net_device *netdev)
Get per-netdevice configuration settings block.
static void(* free)(struct refcnt *refcnt))
int fetch_raw_setting_copy(struct settings *settings, const struct setting *setting, void **data)
Fetch value of setting.
char * strerror(int errno)
Retrieve string representation of error number.
EAP MD5 challenge request/response type data.
uint8_t id
ID for current request/response.
struct net_device * netdev
Network device.