charon-cmd: authenticate with EAP if no private key is given
This commit is contained in:
@@ -48,6 +48,11 @@ struct private_cmd_connection_t {
|
|||||||
* Local identity
|
* Local identity
|
||||||
*/
|
*/
|
||||||
char *identity;
|
char *identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is a private key configured
|
||||||
|
*/
|
||||||
|
bool key_seen;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -93,9 +98,18 @@ static peer_cfg_t* create_peer_cfg(private_cmd_connection_t *this)
|
|||||||
static void add_auth_cfgs(private_cmd_connection_t *this, peer_cfg_t *peer_cfg)
|
static void add_auth_cfgs(private_cmd_connection_t *this, peer_cfg_t *peer_cfg)
|
||||||
{
|
{
|
||||||
auth_cfg_t *auth;
|
auth_cfg_t *auth;
|
||||||
|
auth_class_t class;
|
||||||
|
|
||||||
|
if (this->key_seen)
|
||||||
|
{
|
||||||
|
class = AUTH_CLASS_PUBKEY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
class = AUTH_CLASS_EAP;
|
||||||
|
}
|
||||||
auth = auth_cfg_create();
|
auth = auth_cfg_create();
|
||||||
auth->add(auth, AUTH_RULE_AUTH_CLASS, AUTH_CLASS_PUBKEY);
|
auth->add(auth, AUTH_RULE_AUTH_CLASS, class);
|
||||||
auth->add(auth, AUTH_RULE_IDENTITY,
|
auth->add(auth, AUTH_RULE_IDENTITY,
|
||||||
identification_create_from_string(this->identity));
|
identification_create_from_string(this->identity));
|
||||||
peer_cfg->add_auth_cfg(peer_cfg, auth, TRUE);
|
peer_cfg->add_auth_cfg(peer_cfg, auth, TRUE);
|
||||||
@@ -183,6 +197,9 @@ METHOD(cmd_connection_t, handle, bool,
|
|||||||
case CMD_OPT_IDENTITY:
|
case CMD_OPT_IDENTITY:
|
||||||
this->identity = arg;
|
this->identity = arg;
|
||||||
break;
|
break;
|
||||||
|
case CMD_OPT_RSA:
|
||||||
|
this->key_seen = TRUE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user