charon-cmd: add an option to set a different server identity
authorMartin Willi <martin@revosec.ch>
Mon, 22 Apr 2013 10:42:01 +0000 (12:42 +0200)
committerMartin Willi <martin@revosec.ch>
Mon, 6 May 2013 13:54:35 +0000 (15:54 +0200)
src/charon-cmd/cmd/cmd_connection.c
src/charon-cmd/cmd/cmd_options.c
src/charon-cmd/cmd/cmd_options.h

index db5499b..965b72b 100644 (file)
@@ -81,6 +81,11 @@ struct private_cmd_connection_t {
        char *host;
 
        /**
+        * Server identity, or NULL to use host
+        */
+       char *server;
+
+       /**
         * Local identity
         */
        char *identity;
@@ -167,7 +172,14 @@ static void add_auth_cfg(private_cmd_connection_t *this, peer_cfg_t *peer_cfg,
        }
        else
        {
-               id = identification_create_from_string(this->host);
+               if (this->server)
+               {
+                       id = identification_create_from_string(this->server);
+               }
+               else
+               {
+                       id = identification_create_from_string(this->host);
+               }
        }
        auth->add(auth, AUTH_RULE_IDENTITY, id);
        peer_cfg->add_auth_cfg(peer_cfg, auth, local);
@@ -367,6 +379,9 @@ METHOD(cmd_connection_t, handle, bool,
                case CMD_OPT_HOST:
                        this->host = arg;
                        break;
+               case CMD_OPT_REMOTE_IDENTITY:
+                       this->server = arg;
+                       break;
                case CMD_OPT_IDENTITY:
                        this->identity = arg;
                        break;
index 58877a0..312d129 100644 (file)
@@ -29,6 +29,8 @@ 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_REMOTE_IDENTITY, "remote-identity", required_argument, "identity",
+         "server identity to expect, defaults to host" },
        { CMD_OPT_CERT, "cert", required_argument, "path",
          "trusted certificate, for authentication or trust chain validation" },
        { CMD_OPT_RSA, "rsa", required_argument, "path",
index 165e862..addbb50 100644 (file)
@@ -32,6 +32,7 @@ enum cmd_option_type_t {
        CMD_OPT_VERSION,
        CMD_OPT_HOST,
        CMD_OPT_IDENTITY,
+       CMD_OPT_REMOTE_IDENTITY,
        CMD_OPT_CERT,
        CMD_OPT_RSA,
        CMD_OPT_LOCAL_TS,