giving up EAP-SIM authentication after 3 failed challenges
This commit is contained in:
@@ -27,6 +27,8 @@
|
|||||||
#include <daemon.h>
|
#include <daemon.h>
|
||||||
#include <library.h>
|
#include <library.h>
|
||||||
|
|
||||||
|
#define MAX_TRIES 3
|
||||||
|
|
||||||
ENUM(sim_subtype_names, SIM_START, SIM_CLIENT_ERROR,
|
ENUM(sim_subtype_names, SIM_START, SIM_CLIENT_ERROR,
|
||||||
"SIM_START",
|
"SIM_START",
|
||||||
"SIM_CHALLENGE",
|
"SIM_CHALLENGE",
|
||||||
@@ -98,6 +100,11 @@ struct private_eap_sim_t {
|
|||||||
*/
|
*/
|
||||||
void *handle;
|
void *handle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* how many times we try to authenticate
|
||||||
|
*/
|
||||||
|
int tries;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* version this implementation uses
|
* version this implementation uses
|
||||||
*/
|
*/
|
||||||
@@ -420,6 +427,13 @@ static status_t process_challenge(private_eap_sim_t *this, eap_payload_t *in,
|
|||||||
signer_t *signer;
|
signer_t *signer;
|
||||||
hasher_t *hasher;
|
hasher_t *hasher;
|
||||||
prf_t *prf;
|
prf_t *prf;
|
||||||
|
|
||||||
|
if (this->tries-- <= 0)
|
||||||
|
{
|
||||||
|
/* give up without notification. This hack is required as some buggy
|
||||||
|
* server implementations won't respect our client-error. */
|
||||||
|
return FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
identifier = in->get_identifier(in);
|
identifier = in->get_identifier(in);
|
||||||
message = in->get_data(in);
|
message = in->get_data(in);
|
||||||
@@ -676,6 +690,7 @@ eap_sim_t *eap_create(eap_role_t role,
|
|||||||
|
|
||||||
/* private data */
|
/* private data */
|
||||||
this->peer = peer;
|
this->peer = peer;
|
||||||
|
this->tries = MAX_TRIES;
|
||||||
this->version.ptr = version;
|
this->version.ptr = version;
|
||||||
this->version.len = sizeof(version);
|
this->version.len = sizeof(version);
|
||||||
this->version_list = chunk_empty;
|
this->version_list = chunk_empty;
|
||||||
|
|||||||
Reference in New Issue
Block a user