]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
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 db5499b7c6688b9111f28dd0aa12bf510f9e7d5a..965b72bc0544a6d68b7c1c6f5c34ab1c6cd7c2fb 100644 (file)
@@ -80,6 +80,11 @@ struct private_cmd_connection_t {
         */
        char *host;
 
+       /**
+        * Server identity, or NULL to use host
+        */
+       char *server;
+
        /**
         * Local 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 58877a0435f514921319152227fb4a789820de4e..312d12964249cc4e782f446aa02c613befc1f4d6 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 165e862122879cd770516db3bb8da0e4ca86ea30..addbb50d81ebaf7cdbf2a025c876f3223dc21ffd 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,