]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Expose add_reply()
authorAlan T. DeKok <aland@freeradius.org>
Mon, 18 Mar 2013 18:39:25 +0000 (14:39 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 18 Mar 2013 18:39:25 +0000 (14:39 -0400)
Which is used in many, many, places

src/modules/rlm_eap/libeap/eap_tls.h
src/modules/rlm_eap/libeap/eap_types.h
src/modules/rlm_eap/libeap/eapcommon.c
src/modules/rlm_eap/libeap/mppe_keys.c
src/modules/rlm_eap/types/rlm_eap_ikev2/rlm_eap_ikev2.c
src/modules/rlm_eap/types/rlm_eap_pwd/rlm_eap_pwd.c
src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c
src/modules/rlm_eap/types/rlm_eap_tnc/rlm_eap_tnc.c

index ff45307899864e3dbf65fd1e145ae87cf3618a8a..2a91f34c64581ab5ac6ac430085335aa18888c23 100644 (file)
@@ -67,8 +67,8 @@ int           eaptls_request(EAP_DS *eap_ds, tls_session_t *ssn);
 
 
 /* MPPE key generation */
-void       eaptls_gen_mppe_keys(VALUE_PAIR **reply_vps, SSL *s,
-                                    const char *prf_label);
+void       eaptls_gen_mppe_keys(REQUEST *request, SSL *s,
+                                const char *prf_label);
 void           eapttls_gen_challenge(SSL *s, uint8_t *buffer, size_t size);
 void eaptls_gen_eap_key(RADIUS_PACKET *packet, SSL *s, uint32_t header, VALUE_PAIR **vps);
 
index 7d14189a0f953d6632d6bf152bbab2c10e5599be..875ade8f2650308fee33cf0b84e89e7d8105cd93 100644 (file)
@@ -165,5 +165,7 @@ extern int eap_basic_compose(RADIUS_PACKET *packet, eap_packet_t *reply);
 extern VALUE_PAIR *eap_packet2vp(RADIUS_PACKET *packet,
                                 const eap_packet_raw_t *reply);
 extern eap_packet_raw_t *eap_vp2packet(VALUE_PAIR *vps);
+void eap_add_reply(REQUEST *request,
+                  const char *name, const uint8_t *value, int len);
 
 #endif /* _EAP_TYPES_H */
index 9c9ec40b682a45803c3484b6253774bbe0b55941..dc843df3b2989068a95bfc2a3cc561e8704dbfaf 100644 (file)
@@ -373,3 +373,23 @@ eap_packet_raw_t *eap_vp2packet(VALUE_PAIR *vps)
 
        return eap_packet;
 }
+
+/*
+ *     Add raw hex data to the reply.
+ */
+void eap_add_reply(REQUEST *request,
+                  const char *name, const uint8_t *value, int len)
+{
+       VALUE_PAIR *vp;
+
+       vp = pairmake(name, "", T_OP_EQ);
+       if (!vp) {
+               RDEBUGE("Did not create attribute %s: %s\n",
+                       name, fr_strerror());
+               return;
+       }
+
+       memcpy(vp->vp_octets, value, len);
+       vp->length = len;
+       pairadd(&request->reply->vps, vp);
+}
index d773c12ab3b71169e9a4117780862f1bbcac400b..34ae0dbf563562b77a883bbb5146499e8eedf913 100644 (file)
@@ -28,26 +28,6 @@ RCSID("$Id$")
 #include <openssl/hmac.h>
 #include "eap_tls.h"
 
-/*
- * Add value pair to reply
- */
-static void add_reply(VALUE_PAIR** vp,
-                     const char* name, const uint8_t * value, int len)
-{
-       VALUE_PAIR *reply_attr;
-       reply_attr = pairmake(name, "", T_OP_EQ);
-       if (!reply_attr) {
-               DEBUG("rlm_eap_tls: "
-                     "add_reply failed to create attribute %s: %s\n",
-                     name, fr_strerror());
-               return;
-       }
-
-       memcpy(reply_attr->vp_octets, value, len);
-       reply_attr->length = len;
-       pairadd(vp, reply_attr);
-}
-
 /*
  * TLS PRF from RFC 2246
  */
@@ -124,7 +104,7 @@ static void PRF(const unsigned char *secret, unsigned int secret_len,
 /*
  *     Generate keys according to RFC 2716 and add to reply
  */
-void eaptls_gen_mppe_keys(VALUE_PAIR **reply_vps, SSL *s,
+void eaptls_gen_mppe_keys(REQUEST *request, SSL *s,
                          const char *prf_label)
 {
        unsigned char out[4*EAPTLS_MPPE_KEY_LEN], buf[4*EAPTLS_MPPE_KEY_LEN];
@@ -133,7 +113,7 @@ void eaptls_gen_mppe_keys(VALUE_PAIR **reply_vps, SSL *s,
        size_t prf_size;
 
        if (!s->s3) {
-               DEBUG("ERROR: No SSLv3 information");
+               RDEBUG("ERROR: No SSLv3 information");
                return;
        }
 
@@ -153,12 +133,12 @@ void eaptls_gen_mppe_keys(VALUE_PAIR **reply_vps, SSL *s,
            seed, prf_size, out, buf, sizeof(out));
 
        p = out;
-       add_reply(reply_vps, "MS-MPPE-Recv-Key", p, EAPTLS_MPPE_KEY_LEN);
+       eap_add_reply(request, "MS-MPPE-Recv-Key", p, EAPTLS_MPPE_KEY_LEN);
        p += EAPTLS_MPPE_KEY_LEN;
-       add_reply(reply_vps, "MS-MPPE-Send-Key", p, EAPTLS_MPPE_KEY_LEN);
+       eap_add_reply(request, "MS-MPPE-Send-Key", p, EAPTLS_MPPE_KEY_LEN);
 
-       add_reply(reply_vps, "EAP-MSK", out, 64);
-       add_reply(reply_vps, "EAP-EMSK", out + 64, 64);
+       eap_add_reply(request, "EAP-MSK", out, 64);
+       eap_add_reply(request, "EAP-EMSK", out + 64, 64);
 }
 
 
index 9951e0b100d5e4eeaf95dbd0d492cc165bc01604..c928b768de865076e921a53daf98174f333bdf03 100644 (file)
 #define IKEV2_MPPE_KEY_LEN     32
 
 
-
-/*
- * Add value pair to reply: copied from FreeRADIUS
- */
-static void add_reply(VALUE_PAIR** vp,
-                     const char* name, const char* value, int len)
-{
-       VALUE_PAIR *reply_attr;
-       reply_attr = pairmake(name, "", T_OP_EQ);
-       if (!reply_attr) {
-               radlog(L_INFO, IKEv2_LOG_PREFIX "add_reply failed to create attribute %s: %s", name, fr_strerror());
-               return;
-       }
-
-       memcpy(reply_attr->vp_octets, value, len);
-       reply_attr->length = len;
-       pairadd(vp, reply_attr);
-}
-
 static int set_mppe_keys(eap_handler_t *handler)
 {
        unsigned char *p;
        struct IKEv2Session *session;
-       VALUE_PAIR **outvps;
 
        session = ((struct IKEv2Data*)handler->opaque)->session;
 
@@ -82,13 +62,12 @@ static int set_mppe_keys(eap_handler_t *handler)
                return 1;
        }
 
-       /* outvps is the session to the client. */
-       outvps= &handler->request->reply->vps;
-
        p = session->eapKeyData;
-       add_reply(outvps, "MS-MPPE-Recv-Key",(const char*) p, IKEV2_MPPE_KEY_LEN);
+       eap_add_reply(handler->request,
+                     "MS-MPPE-Recv-Key",(const char*) p, IKEV2_MPPE_KEY_LEN);
        p += IKEV2_MPPE_KEY_LEN;
-       add_reply(outvps, "MS-MPPE-Send-Key",(const char*) p, IKEV2_MPPE_KEY_LEN);
+       eap_add_reply(handler->request,
+                 "MS-MPPE-Send-Key",(const char*) p, IKEV2_MPPE_KEY_LEN);
        return 0;
 }
 
index bd8b57bfa095ab66dffae04a47af31bb082741f7..64bb5957e8134aac0c1edd75a86a2febdf38a9c7 100644 (file)
@@ -53,26 +53,6 @@ static CONF_PARSER pwd_module_config[] = {
     { NULL, -1, 0, NULL, NULL }
 };
 
-/*
- * stolen from rlm_eap_sim: Add value pair to reply
- */
-static void add_reply(VALUE_PAIR** vp,
-                     const char* name, const uint8_t *value, size_t len)
-{
-    VALUE_PAIR *reply_attr;
-    reply_attr = pairmake(name, "", T_OP_EQ);
-    if (!reply_attr) {
-       DEBUG("rlm_eap_pwd: "
-             "add_reply failed to create attribute %s: %s\n",
-             name, fr_strerror());
-       return;
-    }
-
-    memcpy(reply_attr->vp_strvalue, value, len);
-    reply_attr->length = len;
-    pairadd(vp, reply_attr);
-}
-
 static int
 eap_pwd_detach (void *arg)
 {
@@ -304,7 +284,7 @@ eap_pwd_authenticate (void *arg, eap_handler_t *handler)
     pwd_id_packet *id;
     eap_packet_t *response;
     REQUEST *request, *fake;
-    VALUE_PAIR *pw, **outvps, *vp;
+    VALUE_PAIR *pw, *vp;
     EAP_DS *eap_ds;
     int len, ret = 0;
     eap_pwd_t *inst = (eap_pwd_t *)arg;
@@ -609,9 +589,10 @@ eap_pwd_authenticate (void *arg, eap_handler_t *handler)
            /*
             * return the MSK (in halves)
             */
-           outvps = &handler->request->reply->vps;
-           add_reply(outvps, "MS-MPPE-Recv-Key", msk, MPPE_KEY_LEN);
-           add_reply(outvps, "MS-MPPE-Send-Key", msk+MPPE_KEY_LEN, MPPE_KEY_LEN);
+           eap_add_reply(handler->request,
+                         "MS-MPPE-Recv-Key", msk, MPPE_KEY_LEN);
+           eap_add_reply(handler->request,
+                         "MS-MPPE-Send-Key", msk+MPPE_KEY_LEN, MPPE_KEY_LEN);
            ret = 1;
            break;
        default:
index 4ddc8d8b806a4117313dae74ef30b4400b90f4b4..1afba3a7674b6b7e67dede5b9579618b2a3e31d6 100644 (file)
@@ -43,26 +43,6 @@ struct eap_sim_server_state {
        int  sim_id;
 };
 
-/*
- * Add value pair to reply
- */
-static void add_reply(VALUE_PAIR** vp,
-                     const char* name, const uint8_t *value, size_t len)
-{
-       VALUE_PAIR *reply_attr;
-       reply_attr = pairmake(name, "", T_OP_EQ);
-       if (!reply_attr) {
-               DEBUG("rlm_eap_sim: "
-                     "add_reply failed to create attribute %s: %s\n",
-                     name, fr_strerror());
-               return;
-       }
-
-       memcpy(reply_attr->vp_strvalue, value, len);
-       reply_attr->length = len;
-       pairadd(vp, reply_attr);
-}
-
 static void eap_sim_state_free(void *opaque)
 {
        struct eap_sim_server_state *ess = (struct eap_sim_server_state *)opaque;
@@ -310,24 +290,22 @@ static int eap_sim_sendsuccess(eap_handler_t *handler)
 {
        unsigned char *p;
        struct eap_sim_server_state *ess;
-       VALUE_PAIR **outvps;
-       VALUE_PAIR *newvp;
+       VALUE_PAIR *vp;
        RADIUS_PACKET *packet;
 
        /* outvps is the data to the client. */
        packet = handler->request->reply;
-       outvps= &packet->vps;
        ess = (struct eap_sim_server_state *)handler->opaque;
 
        /* set the EAP_ID - new value */
-       newvp = paircreate(packet, ATTRIBUTE_EAP_ID, 0);
-       newvp->vp_integer = ess->sim_id++;
-       pairreplace(outvps, newvp);
+       vp = paircreate(packet, ATTRIBUTE_EAP_ID, 0);
+       vp->vp_integer = ess->sim_id++;
+       pairreplace(handler->request->reply, vp);
 
        p = ess->keys.msk;
-       add_reply(outvps, "MS-MPPE-Recv-Key", p, EAPTLS_MPPE_KEY_LEN);
+       eap_add_reply(handler->request, "MS-MPPE-Recv-Key", p, EAPTLS_MPPE_KEY_LEN);
        p += EAPTLS_MPPE_KEY_LEN;
-       add_reply(outvps, "MS-MPPE-Send-Key", p, EAPTLS_MPPE_KEY_LEN);
+       eap_add_reply(handler->request, "MS-MPPE-Send-Key", p, EAPTLS_MPPE_KEY_LEN);
        return 1;
 }
 
index d1614059de14bc62d65739c41785fc275898e758..6e0003259024b8638a0bb522e98c0ad109eee780 100644 (file)
@@ -273,6 +273,7 @@ static int tnc_authenticate(UNUSED void *instance, eap_handler_t *handler)
        
        TNC_ConnectionState connection_state;
        uint8_t code = 0;
+       REQUEST *request = handler->request;
        
        if (handler->eap_ds->response->type.num != PW_EAP_TNC) {
                radlog(L_ERR, "rlm_eap_tnc: Incorrect response type");
@@ -285,7 +286,7 @@ static int tnc_authenticate(UNUSED void *instance, eap_handler_t *handler)
         */
        conn_id = *((TNC_ConnectionID *) (handler->opaque));
 
-       DEBUG2("rlm_eap_tnc: Starting authentication for connection ID %lX",
+       RDEBUG2("Starting authentication for connection ID %lX",
               conn_id);
 
        /*
@@ -300,8 +301,8 @@ static int tnc_authenticate(UNUSED void *instance, eap_handler_t *handler)
                                   handler->eap_ds->response->type.length,
                                   &data, &datalen, &connection_state);
        if (result != TNC_RESULT_SUCCESS) {
-               radlog(L_ERR, "rlm_eap_tnc: NAA-EAP processEAPTNCData returned "
-                     "an error code");
+               RDEBUG("NAA-EAP processEAPTNCData returned "
+                      "an error code");
 
                return 0;
        }