implemented Expanded EAP types to support vendor specific methods
This commit is contained in:
@@ -186,7 +186,7 @@ static peer_cfg_t *process_peer_cfg_row(private_sqlite_backend_t *this,
|
||||
2, ike_cfg, local_id, remote_id, NULL, NULL, linked_list_create(),
|
||||
sqlite3_column_int(stmt, 4), /* cert_policy */
|
||||
sqlite3_column_int(stmt, 5), /* auth_method */
|
||||
sqlite3_column_int(stmt, 6), /* eap_type */
|
||||
sqlite3_column_int(stmt, 6), 0 /* eap_type, vendor */
|
||||
sqlite3_column_int(stmt, 7), /* keyingtries */
|
||||
sqlite3_column_int(stmt, 8), /* rekey_time */
|
||||
sqlite3_column_int(stmt, 9), /* reauth_time */
|
||||
|
||||
@@ -126,6 +126,11 @@ struct private_peer_cfg_t {
|
||||
*/
|
||||
eap_type_t eap_type;
|
||||
|
||||
/**
|
||||
* EAP vendor ID if vendor specific type is used
|
||||
*/
|
||||
u_int32_t eap_vendor;
|
||||
|
||||
/**
|
||||
* number of tries after giving up if peer does not respond
|
||||
*/
|
||||
@@ -338,8 +343,9 @@ static auth_method_t get_auth_method(private_peer_cfg_t *this)
|
||||
/**
|
||||
* Implementation of connection_t.get_eap_type.
|
||||
*/
|
||||
static eap_type_t get_eap_type(private_peer_cfg_t *this)
|
||||
static eap_type_t get_eap_type(private_peer_cfg_t *this, u_int32_t *vendor)
|
||||
{
|
||||
*vendor = this->eap_vendor;
|
||||
return this->eap_type;
|
||||
}
|
||||
|
||||
@@ -518,6 +524,7 @@ peer_cfg_t *peer_cfg_create(char *name, u_int ike_version, ike_cfg_t *ike_cfg,
|
||||
identification_t *my_ca, identification_t *other_ca,
|
||||
linked_list_t *groups, cert_policy_t cert_policy,
|
||||
auth_method_t auth_method, eap_type_t eap_type,
|
||||
u_int32_t eap_vendor,
|
||||
u_int32_t keyingtries, u_int32_t rekey_time,
|
||||
u_int32_t reauth_time, u_int32_t jitter_time,
|
||||
u_int32_t over_time, bool mobike,
|
||||
@@ -542,7 +549,7 @@ peer_cfg_t *peer_cfg_create(char *name, u_int ike_version, ike_cfg_t *ike_cfg,
|
||||
this->public.get_groups = (linked_list_t* (*)(peer_cfg_t *))get_groups;
|
||||
this->public.get_cert_policy = (cert_policy_t (*) (peer_cfg_t *))get_cert_policy;
|
||||
this->public.get_auth_method = (auth_method_t (*) (peer_cfg_t *))get_auth_method;
|
||||
this->public.get_eap_type = (eap_type_t (*) (peer_cfg_t *))get_eap_type;
|
||||
this->public.get_eap_type = (eap_type_t (*) (peer_cfg_t *,u_int32_t*))get_eap_type;
|
||||
this->public.get_keyingtries = (u_int32_t (*) (peer_cfg_t *))get_keyingtries;
|
||||
this->public.get_rekey_time = (u_int32_t(*)(peer_cfg_t*))get_rekey_time;
|
||||
this->public.get_reauth_time = (u_int32_t(*)(peer_cfg_t*))get_reauth_time;
|
||||
@@ -574,6 +581,7 @@ peer_cfg_t *peer_cfg_create(char *name, u_int ike_version, ike_cfg_t *ike_cfg,
|
||||
this->cert_policy = cert_policy;
|
||||
this->auth_method = auth_method;
|
||||
this->eap_type = eap_type;
|
||||
this->eap_vendor = eap_vendor;
|
||||
this->keyingtries = keyingtries;
|
||||
this->rekey_time = rekey_time;
|
||||
this->reauth_time = reauth_time;
|
||||
|
||||
@@ -229,11 +229,16 @@ struct peer_cfg_t {
|
||||
|
||||
/**
|
||||
* @brief Get the EAP type to use for peer authentication.
|
||||
*
|
||||
* If vendor specific types are used, a vendor ID != 0 is returned to
|
||||
* to vendor argument. Then the returned type is specific for that
|
||||
* vendor ID.
|
||||
*
|
||||
* @param this calling object
|
||||
* @param vendor receives vendor specifier, 0 for predefined EAP types
|
||||
* @return authentication method
|
||||
*/
|
||||
eap_type_t (*get_eap_type) (peer_cfg_t *this);
|
||||
eap_type_t (*get_eap_type) (peer_cfg_t *this, u_int32_t *vendor);
|
||||
|
||||
/**
|
||||
* @brief Get the max number of retries after timeout.
|
||||
@@ -393,6 +398,7 @@ struct peer_cfg_t {
|
||||
* @param cert_policy should we send a certificate payload?
|
||||
* @param auth_method auth method to use to authenticate us
|
||||
* @param eap_type EAP type to use for peer authentication
|
||||
* @param eap_vendor EAP vendor identifier, if vendor specific type is used
|
||||
* @param keyingtries how many keying tries should be done before giving up
|
||||
* @param rekey_time timeout before starting rekeying
|
||||
* @param reauth_time timeout before starting reauthentication
|
||||
@@ -416,6 +422,7 @@ peer_cfg_t *peer_cfg_create(char *name, u_int ikev_version, ike_cfg_t *ike_cfg,
|
||||
identification_t *my_ca, identification_t *other_ca,
|
||||
linked_list_t *groups, cert_policy_t cert_policy,
|
||||
auth_method_t auth_method, eap_type_t eap_type,
|
||||
u_int32_t eap_vendor,
|
||||
u_int32_t keyingtries, u_int32_t rekey_time,
|
||||
u_int32_t reauth_time, u_int32_t jitter_time,
|
||||
u_int32_t over_time, bool mobike,
|
||||
|
||||
Reference in New Issue
Block a user