Windows 7 expects an uncompressed EAP Identity request
This commit is contained in:
@@ -53,7 +53,12 @@ METHOD(eap_peap_avp_t, build, void,
|
|||||||
|
|
||||||
pkt = (eap_packet_t*)data.ptr;
|
pkt = (eap_packet_t*)data.ptr;
|
||||||
|
|
||||||
if (pkt->code == EAP_SUCCESS || pkt->code == EAP_FAILURE)
|
if (pkt->code == EAP_REQUEST && pkt->type == EAP_IDENTITY)
|
||||||
|
{
|
||||||
|
/* uncompressed EAP Identity request */
|
||||||
|
avp_data = data;
|
||||||
|
}
|
||||||
|
else if (pkt->code == EAP_SUCCESS || pkt->code == EAP_FAILURE)
|
||||||
{
|
{
|
||||||
code = (this->is_server) ? EAP_REQUEST : EAP_RESPONSE;
|
code = (this->is_server) ? EAP_REQUEST : EAP_RESPONSE;
|
||||||
writer->write_uint8(writer, code);
|
writer->write_uint8(writer, code);
|
||||||
@@ -86,26 +91,35 @@ METHOD(eap_peap_avp_t, process, status_t,
|
|||||||
}
|
}
|
||||||
pkt = (eap_packet_t*)avp_data.ptr;
|
pkt = (eap_packet_t*)avp_data.ptr;
|
||||||
|
|
||||||
if (len == 11 && pkt->code == code && untoh16(&pkt->length) == len &&
|
if (len > 4 && pkt->code == code && untoh16(&pkt->length) == len)
|
||||||
pkt->type == EAP_MSTLV)
|
|
||||||
{
|
{
|
||||||
if (memeq(&pkt->data, MS_AVP_Success.ptr, MS_AVP_Success.len))
|
if (len == 5 && pkt->type == EAP_IDENTITY)
|
||||||
{
|
{
|
||||||
DBG2(DBG_IKE, "MS Success Result AVP");
|
/* uncompressed EAP Identity request */
|
||||||
code = EAP_SUCCESS;
|
*data = chunk_clone(avp_data);
|
||||||
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
else if (memeq(&pkt->data, MS_AVP_Failure.ptr, MS_AVP_Failure.len))
|
else if (len == 11 && pkt->type == EAP_MSTLV)
|
||||||
{
|
{
|
||||||
DBG2(DBG_IKE, "MS Failure Result AVP");
|
/* currently only MS Success/Failure AVPs are supported */
|
||||||
code = EAP_FAILURE;
|
if (memeq(&pkt->data, MS_AVP_Success.ptr, MS_AVP_Success.len))
|
||||||
|
{
|
||||||
|
DBG2(DBG_IKE, "MS Success Result AVP");
|
||||||
|
code = EAP_SUCCESS;
|
||||||
|
}
|
||||||
|
else if (memeq(&pkt->data, MS_AVP_Failure.ptr, MS_AVP_Failure.len))
|
||||||
|
{
|
||||||
|
DBG2(DBG_IKE, "MS Failure Result AVP");
|
||||||
|
code = EAP_FAILURE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DBG1(DBG_IKE, "unknown MS AVP message");
|
||||||
|
return FAILED;
|
||||||
|
}
|
||||||
|
identifier = pkt->identifier;
|
||||||
|
len = 0;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
DBG1(DBG_IKE, "unknown MS AVP message");
|
|
||||||
return FAILED;
|
|
||||||
}
|
|
||||||
identifier = pkt->identifier;
|
|
||||||
len = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*data = chunk_alloc(4 + len);
|
*data = chunk_alloc(4 + len);
|
||||||
|
|||||||
Reference in New Issue
Block a user