]> git.ipfire.org Git - people/ms/strongswan.git/commitdiff
Moved eap-tls plugin to libcharon, updated to 4.4.1 APIs
authorMartin Willi <martin@revosec.ch>
Fri, 19 Mar 2010 17:55:23 +0000 (18:55 +0100)
committerMartin Willi <martin@revosec.ch>
Tue, 3 Aug 2010 13:39:25 +0000 (15:39 +0200)
28 files changed:
src/libcharon/Makefile.am
src/libcharon/plugins/eap_tls/Makefile.am [moved from src/charon/plugins/eap_tls/Makefile.am with 85% similarity]
src/libcharon/plugins/eap_tls/eap_tls.c [moved from src/charon/plugins/eap_tls/eap_tls.c with 100% similarity]
src/libcharon/plugins/eap_tls/eap_tls.h [moved from src/charon/plugins/eap_tls/eap_tls.h with 100% similarity]
src/libcharon/plugins/eap_tls/eap_tls_plugin.c [moved from src/charon/plugins/eap_tls/eap_tls_plugin.c with 97% similarity]
src/libcharon/plugins/eap_tls/eap_tls_plugin.h [moved from src/charon/plugins/eap_tls/eap_tls_plugin.h with 96% similarity]
src/libcharon/plugins/eap_tls/tls/tls.c [moved from src/charon/plugins/eap_tls/tls/tls.c with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls.h [moved from src/charon/plugins/eap_tls/tls/tls.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_compression.c [moved from src/charon/plugins/eap_tls/tls/tls_compression.c with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_compression.h [moved from src/charon/plugins/eap_tls/tls/tls_compression.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_crypto.c [moved from src/charon/plugins/eap_tls/tls/tls_crypto.c with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_crypto.h [moved from src/charon/plugins/eap_tls/tls/tls_crypto.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_fragmentation.c [moved from src/charon/plugins/eap_tls/tls/tls_fragmentation.c with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_fragmentation.h [moved from src/charon/plugins/eap_tls/tls/tls_fragmentation.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_handshake.h [moved from src/charon/plugins/eap_tls/tls/tls_handshake.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_peer.c [moved from src/charon/plugins/eap_tls/tls/tls_peer.c with 95% similarity]
src/libcharon/plugins/eap_tls/tls/tls_peer.h [moved from src/charon/plugins/eap_tls/tls/tls_peer.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_prf.c [moved from src/charon/plugins/eap_tls/tls/tls_prf.c with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_prf.h [moved from src/charon/plugins/eap_tls/tls/tls_prf.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_protection.c [moved from src/charon/plugins/eap_tls/tls/tls_protection.c with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_protection.h [moved from src/charon/plugins/eap_tls/tls/tls_protection.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_reader.c [moved from src/charon/plugins/eap_tls/tls/tls_reader.c with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_reader.h [moved from src/charon/plugins/eap_tls/tls/tls_reader.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_server.c [moved from src/charon/plugins/eap_tls/tls/tls_server.c with 95% similarity]
src/libcharon/plugins/eap_tls/tls/tls_server.h [moved from src/charon/plugins/eap_tls/tls/tls_server.h with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_writer.c [moved from src/charon/plugins/eap_tls/tls/tls_writer.c with 100% similarity]
src/libcharon/plugins/eap_tls/tls/tls_writer.h [moved from src/charon/plugins/eap_tls/tls/tls_writer.h with 100% similarity]
src/libstrongswan/credentials/auth_cfg.c

index 44501c0d02a72b1668e2eea13e4c6ac6fa40e30a..510f5e5699b8454302faedadd5d5f76c02e963e7 100644 (file)
@@ -344,6 +344,14 @@ if MONOLITHIC
 endif
 endif
 
+if USE_EAP_TLS
+  SUBDIRS += plugins/eap_tls
+  PLUGINS += eap-tls
+if MONOLITHIC
+  libcharon_la_LIBADD += plugins/eap_tls/libstrongswan-eap-tls.la
+endif
+endif
+
 if USE_MEDSRV
   SUBDIRS += plugins/medsrv
   PLUGINS += medsrv
similarity index 85%
rename from src/charon/plugins/eap_tls/Makefile.am
rename to src/libcharon/plugins/eap_tls/Makefile.am
index d18dda2aa5d7a08a2780ff70b784113e6151d07e..bd8f82a6233a3a14a705e02eeae0191bb6c5cd70 100644 (file)
@@ -1,9 +1,14 @@
 
-INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/charon
+INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libhydra \
+       -I$(top_srcdir)/src/libcharon
 
 AM_CFLAGS = -rdynamic
 
+if MONOLITHIC
+noinst_LTLIBRARIES = libstrongswan-eap-tls.la
+else
 plugin_LTLIBRARIES = libstrongswan-eap-tls.la
+endif
 
 libstrongswan_eap_tls_la_SOURCES = eap_tls_plugin.h eap_tls_plugin.c \
        eap_tls.h eap_tls.c tls/tls.h tls/tls.c \
similarity index 97%
rename from src/charon/plugins/eap_tls/eap_tls_plugin.c
rename to src/libcharon/plugins/eap_tls/eap_tls_plugin.c
index f7da643c29693967cc8dc2b49e8d2d347d01595e..15165d99fdbc8f211fbf2e16b9215fdac448e548 100644 (file)
@@ -33,7 +33,7 @@ METHOD(plugin_t, destroy, void,
 /*
  * see header file
  */
-plugin_t *plugin_create()
+plugin_t *eap_tls_plugin_create()
 {
        eap_tls_plugin_t *this;
 
similarity index 96%
rename from src/charon/plugins/eap_tls/eap_tls_plugin.h
rename to src/libcharon/plugins/eap_tls/eap_tls_plugin.h
index 5ec38366185a03f3669bb18507df49f56281e0ff..5ea7196035452a1a8d391a210eabb91379d97422 100644 (file)
@@ -42,6 +42,6 @@ struct eap_tls_plugin_t {
 /**
  * Create a eap_tls_plugin instance.
  */
-plugin_t *plugin_create();
+plugin_t *eap_tls_plugin_create();
 
 #endif /** EAP_TLS_PLUGIN_H_ @}*/
similarity index 95%
rename from src/charon/plugins/eap_tls/tls/tls_peer.c
rename to src/libcharon/plugins/eap_tls/tls/tls_peer.c
index 21bf77c3616a425f626aa42b8c1469dccb367ce0..95973598b00de0c40adcd6c4128ee62c22fcbd75 100644 (file)
@@ -233,8 +233,8 @@ static status_t process_certreq(private_tls_peer_t *this, tls_reader_t *reader)
                        return FAILED;
                }
                id = identification_create_from_encoding(ID_DER_ASN1_DN, data);
-               cert = charon->credentials->get_cert(charon->credentials,
-                                                                                        CERT_X509, KEY_ANY, id, TRUE);
+               cert = lib->credmgr->get_cert(lib->credmgr,
+                                                                         CERT_X509, KEY_ANY, id, TRUE);
                if (cert)
                {
                        DBG1(DBG_IKE, "received cert request for '%Y", id);
@@ -397,7 +397,7 @@ static status_t send_certificate(private_tls_peer_t *this,
        tls_writer_t *certs;
        chunk_t data;
 
-       this->private = charon->credentials->get_private(charon->credentials,
+       this->private = lib->credmgr->get_private(lib->credmgr,
                                                                                KEY_ANY, this->peer, this->peer_auth);
        if (!this->private)
        {
@@ -410,22 +410,26 @@ static status_t send_certificate(private_tls_peer_t *this,
        cert = this->peer_auth->get(this->peer_auth, AUTH_RULE_SUBJECT_CERT);
        if (cert)
        {
-               DBG1(DBG_IKE, "sending TLS peer certificate '%Y'",
-                        cert->get_subject(cert));
-               data = cert->get_encoding(cert);
-               certs->write_data24(certs, data);
-               free(data.ptr);
+               if (cert->get_encoding(cert, CERT_ASN1_DER, &data))
+               {
+                       DBG1(DBG_IKE, "sending TLS peer certificate '%Y'",
+                                cert->get_subject(cert));
+                       certs->write_data24(certs, data);
+                       free(data.ptr);
+               }
        }
        enumerator = this->peer_auth->create_enumerator(this->peer_auth);
        while (enumerator->enumerate(enumerator, &rule, &cert))
        {
                if (rule == AUTH_RULE_IM_CERT)
                {
-                       DBG1(DBG_IKE, "sending TLS intermediate certificate '%Y'",
-                                cert->get_subject(cert));
-                       data = cert->get_encoding(cert);
-                       certs->write_data24(certs, data);
-                       free(data.ptr);
+                       if (cert->get_encoding(cert, CERT_ASN1_DER, &data))
+                       {
+                               DBG1(DBG_IKE, "sending TLS intermediate certificate '%Y'",
+                                        cert->get_subject(cert));
+                               certs->write_data24(certs, data);
+                               free(data.ptr);
+                       }
                }
        }
        enumerator->destroy(enumerator);
@@ -466,8 +470,8 @@ static status_t send_key_exchange(private_tls_peer_t *this,
                                                                 chunk_from_thing(this->client_random),
                                                                 chunk_from_thing(this->server_random));
 
-       enumerator = charon->credentials->create_public_enumerator(
-                               charon->credentials, KEY_ANY, this->server, this->server_auth);
+       enumerator = lib->credmgr->create_public_enumerator(lib->credmgr,
+                                                                       KEY_ANY, this->server, this->server_auth);
        while (enumerator->enumerate(enumerator, &current, &auth))
        {
                public = current->get_ref(current);
similarity index 95%
rename from src/charon/plugins/eap_tls/tls/tls_server.c
rename to src/libcharon/plugins/eap_tls/tls/tls_server.c
index ba873c847d74df78e9b31d4a47e19c3fcff2d297..60c62684e42132a96ddfbb848677d11ecc00833a 100644 (file)
@@ -250,8 +250,8 @@ static status_t process_cert_verify(private_tls_server_t *this,
        auth_cfg_t *auth;
        tls_reader_t *sig;
 
-       enumerator = charon->credentials->create_public_enumerator(
-                                       charon->credentials, KEY_ANY, this->peer, this->peer_auth);
+       enumerator = lib->credmgr->create_public_enumerator(lib->credmgr,
+                                                                               KEY_ANY, this->peer, this->peer_auth);
        while (enumerator->enumerate(enumerator, &public, &auth))
        {
                sig = tls_reader_create(reader->peek(reader));
@@ -404,7 +404,7 @@ static status_t send_certificate(private_tls_server_t *this,
        tls_writer_t *certs;
        chunk_t data;
 
-       this->private = charon->credentials->get_private(charon->credentials,
+       this->private = lib->credmgr->get_private(lib->credmgr,
                                                                        KEY_ANY, this->server, this->server_auth);
        if (!this->private)
        {
@@ -417,22 +417,26 @@ static status_t send_certificate(private_tls_server_t *this,
        cert = this->server_auth->get(this->server_auth, AUTH_RULE_SUBJECT_CERT);
        if (cert)
        {
-               DBG1(DBG_IKE, "sending TLS server certificate '%Y'",
-                        cert->get_subject(cert));
-               data = cert->get_encoding(cert);
-               certs->write_data24(certs, data);
-               free(data.ptr);
+               if (cert->get_encoding(cert, CERT_ASN1_DER, &data))
+               {
+                       DBG1(DBG_IKE, "sending TLS server certificate '%Y'",
+                                cert->get_subject(cert));
+                       certs->write_data24(certs, data);
+                       free(data.ptr);
+               }
        }
        enumerator = this->server_auth->create_enumerator(this->server_auth);
        while (enumerator->enumerate(enumerator, &rule, &cert))
        {
                if (rule == AUTH_RULE_IM_CERT)
                {
-                       DBG1(DBG_IKE, "sending TLS intermediate certificate '%Y'",
-                                cert->get_subject(cert));
-                       data = cert->get_encoding(cert);
-                       certs->write_data24(certs, data);
-                       free(data.ptr);
+                       if (cert->get_encoding(cert, CERT_ASN1_DER, &data))
+                       {
+                               DBG1(DBG_IKE, "sending TLS intermediate certificate '%Y'",
+                                        cert->get_subject(cert));
+                               certs->write_data24(certs, data);
+                               free(data.ptr);
+                       }
                }
        }
        enumerator->destroy(enumerator);
@@ -466,8 +470,8 @@ static status_t send_certificate_request(private_tls_server_t *this,
        }
 
        authorities = tls_writer_create(64);
-       enumerator = charon->credentials->create_cert_enumerator(
-                                               charon->credentials, CERT_X509, KEY_RSA, NULL, TRUE);
+       enumerator = lib->credmgr->create_cert_enumerator(lib->credmgr,
+                                                                                               CERT_X509, KEY_RSA, NULL, TRUE);
        while (enumerator->enumerate(enumerator, &cert))
        {
                id = cert->get_subject(cert);
index 0ec2a1be7eac35822dd265ac7f96dbee046bc579..1e081270e84c8dd650383b293ceadfd606eb04ac 100644 (file)
@@ -57,7 +57,9 @@ ENUM_BEGIN(eap_type_short_names, EAP_IDENTITY, EAP_GTC,
        "MD5",
        "OTP",
        "GTC");
-ENUM_NEXT(eap_type_short_names, EAP_SIM, EAP_SIM, EAP_GTC,
+ENUM_NEXT(eap_type_short_names, EAP_TLS, EAP_TLS, EAP_GTC,
+       "TLS");
+ENUM_NEXT(eap_type_short_names, EAP_SIM, EAP_SIM, EAP_TLS,
        "SIM");
 ENUM_NEXT(eap_type_short_names, EAP_AKA, EAP_AKA, EAP_SIM,
        "AKA");