From b48941ae165171d4ed41927f1952d515872bb998 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Tue, 26 Mar 2013 17:47:28 +0100 Subject: [PATCH] charon-cmd: authenticate with EAP if no private key is given --- src/charon-cmd/cmd/cmd_connection.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/charon-cmd/cmd/cmd_connection.c b/src/charon-cmd/cmd/cmd_connection.c index f58df5cec..b3aad00ca 100644 --- a/src/charon-cmd/cmd/cmd_connection.c +++ b/src/charon-cmd/cmd/cmd_connection.c @@ -48,6 +48,11 @@ struct private_cmd_connection_t { * Local 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) { 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->add(auth, AUTH_RULE_AUTH_CLASS, AUTH_CLASS_PUBKEY); + auth->add(auth, AUTH_RULE_AUTH_CLASS, class); auth->add(auth, AUTH_RULE_IDENTITY, identification_create_from_string(this->identity)); peer_cfg->add_auth_cfg(peer_cfg, auth, TRUE); @@ -183,6 +197,9 @@ METHOD(cmd_connection_t, handle, bool, case CMD_OPT_IDENTITY: this->identity = arg; break; + case CMD_OPT_RSA: + this->key_seen = TRUE; + break; default: return FALSE; }