rchap
struct rchap *
struct rchap *rchap;
rchap = calloc(1, sizeof(*rchap));
if (rchap == NULL)
rchap->rchap_secret = checked_strdup(secret);
return (rchap);
rchap_receive_bin(struct rchap *rchap, const unsigned char id,
rchap->rchap_id = id;
rchap->rchap_challenge = calloc(challenge_len, 1);
if (rchap->rchap_challenge == NULL)
memcpy(rchap->rchap_challenge, challenge, challenge_len);
rchap->rchap_challenge_len = challenge_len;
rchap_receive(struct rchap *rchap, const char *id, const char *challenge)
rchap_receive_bin(rchap, id_bin, challenge_bin, challenge_bin_len);
rchap_get_response_bin(struct rchap *rchap,
chap_compute_md5(rchap->rchap_id, rchap->rchap_secret,
rchap->rchap_challenge, rchap->rchap_challenge_len,
rchap_get_response(struct rchap *rchap)
rchap_get_response_bin(rchap, &response, &response_len);
rchap_delete(struct rchap *rchap)
free(rchap->rchap_secret);
free(rchap->rchap_challenge);
free(rchap);
struct rchap *rchap_new(const char *secret);
int rchap_receive(struct rchap *rchap,
char *rchap_get_response(struct rchap *rchap);
void rchap_delete(struct rchap *rchap);
struct rchap *rchap;
rchap = rchap_new(auth->mutual_secret());
error = rchap_receive(rchap, chap_i, chap_c);
chap_r = rchap_get_response(rchap);
rchap_delete(rchap);
struct rchap *rchap;
rchap = rchap_new(conn->conn_conf.isc_secret);
error = rchap_receive(rchap, chap_i, chap_c);
chap_r = rchap_get_response(rchap);
rchap_delete(rchap);