Verify EAP-SIM/AKA AT_MAC before processing any attributes

This commit is contained in:
Martin Willi
2009-11-30 10:00:06 +01:00
parent b04e72c21c
commit bff9f824ed
4 changed files with 24 additions and 36 deletions
+10 -10
View File
@@ -196,6 +196,11 @@ static status_t process_reauthentication(private_eap_sim_server_t *this,
simaka_subtype_names, SIM_REAUTHENTICATION);
return FAILED;
}
/* verify AT_MAC attribute, signature is over "EAP packet | NONCE_S" */
if (!in->verify(in, this->nonce))
{
return FAILED;
}
enumerator = in->create_attribute_enumerator(in);
while (enumerator->enumerate(enumerator, &type, &data))
@@ -219,11 +224,6 @@ static status_t process_reauthentication(private_eap_sim_server_t *this,
}
enumerator->destroy(enumerator);
/* verify AT_MAC attribute, signature is over "EAP packet | NONCE_S" */
if (!in->verify(in, this->nonce))
{
return FAILED;
}
if (too_small)
{
DBG1(DBG_IKE, "received %N, initiating full authentication",
@@ -429,6 +429,11 @@ static status_t process_challenge(private_eap_sim_server_t *this,
simaka_subtype_names, SIM_CHALLENGE);
return FAILED;
}
/* verify AT_MAC attribute, signature is over "EAP packet | n*SRES" */
if (!in->verify(in, this->sreses))
{
return FAILED;
}
enumerator = in->create_attribute_enumerator(in);
while (enumerator->enumerate(enumerator, &type, &data))
@@ -441,11 +446,6 @@ static status_t process_challenge(private_eap_sim_server_t *this,
}
enumerator->destroy(enumerator);
/* verify AT_MAC attribute, signature is over "EAP packet | n*SRES" */
if (!in->verify(in, this->sreses))
{
return FAILED;
}
return SUCCESS;
}