aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2013-07-24 13:35:46 +0200
committerMartin Willi <martin@revosec.ch>2013-07-29 09:00:49 +0200
commit44bb1dc3da9683df5ba27bf7b56ff6c557307c81 (patch)
treee3252c11e21c7af5bbd56d6d8a4b8489b0d2aa56
parent3a399574c214775fa271b3dc8a0619af1a007d64 (diff)
downloadstrongswan-44bb1dc3da9683df5ba27bf7b56ff6c557307c81.tar.bz2
strongswan-44bb1dc3da9683df5ba27bf7b56ff6c557307c81.tar.xz
charon-cmd: add --eap-identity and --xauth-username options
-rw-r--r--src/charon-cmd/charon-cmd.8.in6
-rw-r--r--src/charon-cmd/cmd/cmd_connection.c25
-rw-r--r--src/charon-cmd/cmd/cmd_options.c4
-rw-r--r--src/charon-cmd/cmd/cmd_options.h2
4 files changed, 37 insertions, 0 deletions
diff --git a/src/charon-cmd/charon-cmd.8.in b/src/charon-cmd/charon-cmd.8.in
index c15c7d91f..c9d52c92f 100644
--- a/src/charon-cmd/charon-cmd.8.in
+++ b/src/charon-cmd/charon-cmd.8.in
@@ -77,6 +77,12 @@ DNS name or IP address to connect to.
.BI "\-\-identity " identity
Identity the client uses for the IKE exchange.
.TP
+.BI "\-\-eap\-identity " identity
+Identity the client uses for EAP authentication.
+.TP
+.BI "\-\-xauth\-username " username
+Username the client uses for XAuth authentication.
+.TP
.BI "\-\-remote\-identity " identity
Server identity to expect, defaults to
.IR hostname .
diff --git a/src/charon-cmd/cmd/cmd_connection.c b/src/charon-cmd/cmd/cmd_connection.c
index 2d995f0cd..5c459f99f 100644
--- a/src/charon-cmd/cmd/cmd_connection.c
+++ b/src/charon-cmd/cmd/cmd_connection.c
@@ -102,6 +102,11 @@ struct private_cmd_connection_t {
char *identity;
/**
+ * XAuth/EAP identity
+ */
+ char *xautheap;
+
+ /**
* Is a private key configured
*/
bool key_seen;
@@ -187,6 +192,22 @@ static void add_auth_cfg(private_cmd_connection_t *this, peer_cfg_t *peer_cfg,
if (local)
{
id = identification_create_from_string(this->identity);
+ if (this->xautheap)
+ {
+ switch (class)
+ {
+ case AUTH_CLASS_EAP:
+ auth->add(auth, AUTH_RULE_EAP_IDENTITY,
+ identification_create_from_string(this->xautheap));
+ break;
+ case AUTH_CLASS_XAUTH:
+ auth->add(auth, AUTH_RULE_XAUTH_IDENTITY,
+ identification_create_from_string(this->xautheap));
+ break;
+ default:
+ break;
+ }
+ }
}
else
{
@@ -411,6 +432,10 @@ METHOD(cmd_connection_t, handle, bool,
case CMD_OPT_IDENTITY:
this->identity = arg;
break;
+ case CMD_OPT_EAP_IDENTITY:
+ case CMD_OPT_XAUTH_USER:
+ this->xautheap = arg;
+ break;
case CMD_OPT_RSA:
case CMD_OPT_AGENT:
case CMD_OPT_PKCS12:
diff --git a/src/charon-cmd/cmd/cmd_options.c b/src/charon-cmd/cmd/cmd_options.c
index 175aa4269..597ccda1f 100644
--- a/src/charon-cmd/cmd/cmd_options.c
+++ b/src/charon-cmd/cmd/cmd_options.c
@@ -34,6 +34,10 @@ cmd_option_t cmd_options[CMD_OPT_COUNT] = {
"DNS name or address to connect to", {}},
{ CMD_OPT_IDENTITY, "identity", required_argument, "identity",
"identity the client uses for the IKE exchange", {}},
+ { CMD_OPT_EAP_IDENTITY, "eap-identity", required_argument, "eap-identity",
+ "identity the client uses for EAP authentication", {}},
+ { CMD_OPT_XAUTH_USER, "xauth-username", required_argument, "xauth-username",
+ "username the client uses for XAuth authentication", {}},
{ CMD_OPT_REMOTE_IDENTITY, "remote-identity", required_argument, "identity",
"server identity to expect, defaults to host", {}},
{ CMD_OPT_CERT, "cert", required_argument, "path",
diff --git a/src/charon-cmd/cmd/cmd_options.h b/src/charon-cmd/cmd/cmd_options.h
index 4e5ba6780..6b8b04cdf 100644
--- a/src/charon-cmd/cmd/cmd_options.h
+++ b/src/charon-cmd/cmd/cmd_options.h
@@ -36,6 +36,8 @@ enum cmd_option_type_t {
CMD_OPT_DEBUG,
CMD_OPT_HOST,
CMD_OPT_IDENTITY,
+ CMD_OPT_EAP_IDENTITY,
+ CMD_OPT_XAUTH_USER,
CMD_OPT_REMOTE_IDENTITY,
CMD_OPT_CERT,
CMD_OPT_RSA,