diff options
-rw-r--r-- | src/charon/plugins/eap_tls/eap_tls.c | 17 | ||||
-rw-r--r-- | src/charon/plugins/eap_tls/tls/tls.c | 18 |
2 files changed, 17 insertions, 18 deletions
diff --git a/src/charon/plugins/eap_tls/eap_tls.c b/src/charon/plugins/eap_tls/eap_tls.c index 57f327991..fddd5073e 100644 --- a/src/charon/plugins/eap_tls/eap_tls.c +++ b/src/charon/plugins/eap_tls/eap_tls.c @@ -33,16 +33,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 */ int processed; @@ -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; } diff --git a/src/charon/plugins/eap_tls/tls/tls.c b/src/charon/plugins/eap_tls/tls/tls.c index 7bc7869da..39a46e2ce 100644 --- a/src/charon/plugins/eap_tls/tls/tls.c +++ b/src/charon/plugins/eap_tls/tls/tls.c @@ -74,6 +74,16 @@ struct private_tls_t { bool is_server; /** + * Server identity + */ + identification_t *server; + + /** + * Peer identity + */ + identification_t *peer; + + /** * Negotiated TLS version */ tls_version_t 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); |