]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
TLS stack keeps a copy of server/peer identities
authorMartin Willi <martin@revosec.ch>
Tue, 9 Feb 2010 13:57:50 +0000 (14:57 +0100)
committerMartin Willi <martin@revosec.ch>
Tue, 3 Aug 2010 13:39:25 +0000 (15:39 +0200)
src/charon/plugins/eap_tls/eap_tls.c
src/charon/plugins/eap_tls/tls/tls.c

index 57f327991d590d1f761231ed233742082cbc044f..fddd5073ec97048d20792d5e81328deb6d4e1be3 100644 (file)
@@ -32,16 +32,6 @@ struct private_eap_tls_t {
         */
        eap_tls_t public;
 
-       /**
-        * ID of the server
-        */
-       identification_t *server;
-
-       /**
-        * ID of the peer
-        */
-       identification_t *peer;
-
        /**
         * Number of EAP-TLS messages processed so far
         */
@@ -399,9 +389,6 @@ METHOD(eap_method_t, is_mutual, bool,
 METHOD(eap_method_t, destroy, void,
        private_eap_tls_t *this)
 {
-       this->peer->destroy(this->peer);
-       this->server->destroy(this->server);
-
        free(this->input.ptr);
        free(this->output.ptr);
 
@@ -427,11 +414,9 @@ static eap_tls_t *eap_tls_create(identification_t *server,
                        .get_msk = _get_msk,
                        .destroy = _destroy,
                },
-               .peer = peer->clone(peer),
-               .server = server->clone(server),
                .is_server = is_server,
-               .tls = tls_create(is_server, server, peer),
        );
+       this->tls = tls_create(is_server, server, peer);
 
        return &this->public;
 }
index 7bc7869da29f60484a447c3c9f53ad334cf8113b..39a46e2ceaf81a08204b202c485a49f8bf464bf1 100644 (file)
@@ -73,6 +73,16 @@ struct private_tls_t {
         */
        bool is_server;
 
+       /**
+        * Server identity
+        */
+       identification_t *server;
+
+       /**
+        * Peer identity
+        */
+       identification_t *peer;
+
        /**
         * Negotiated TLS version
         */
@@ -148,6 +158,8 @@ METHOD(tls_t, destroy, void,
        this->fragmentation->destroy(this->fragmentation);
        this->crypto->destroy(this->crypto);
        this->handshake->destroy(this->handshake);
+       this->peer->destroy(this->peer);
+       this->server->destroy(this->server);
 
        free(this);
 }
@@ -172,18 +184,20 @@ tls_t *tls_create(bool is_server, identification_t *server,
                },
                .is_server = is_server,
                .version = TLS_1_2,
+               .server = server->clone(server),
+               .peer = peer->clone(peer),
        );
 
        this->crypto = tls_crypto_create(&this->public);
        if (is_server)
        {
                this->handshake = &tls_server_create(&this->public, this->crypto,
-                                                                                        server, peer)->handshake;
+                                                                               this->server, this->peer)->handshake;
        }
        else
        {
                this->handshake = &tls_peer_create(&this->public, this->crypto,
-                                                                                  peer, server)->handshake;
+                                                                               this->peer, this->server)->handshake;
        }
        this->fragmentation = tls_fragmentation_create(this->handshake);
        this->compression = tls_compression_create(this->fragmentation);