Move DH record from TR_GSSC_INSTANCE to TIDC_INSTANCE, where it belongs
authorJennifer Richards <jennifer@painless-security.com>
Mon, 7 May 2018 17:45:51 +0000 (13:45 -0400)
committerJennifer Richards <jennifer@painless-security.com>
Mon, 7 May 2018 17:45:51 +0000 (13:45 -0400)
common/tr_gss_client.c
include/mon_internal.h
include/tid_internal.h
include/tr_gss_client.h
mon/monc.c
tid/tidc.c

index db9f380..7b61acb 100644 (file)
 #include <tr_debug.h>
 #include <tr_gss_client.h>
 
-static int tr_gssc_destructor(void *obj)
-{
-  TR_GSSC_INSTANCE *tr_gssc=talloc_get_type_abort(obj, TR_GSSC_INSTANCE);
-  if (NULL!=tr_gssc) {
-    if (NULL!=tr_gssc->client_dh)
-      tr_destroy_dh_params(tr_gssc->client_dh);
-  }
-  return 0;
-}
-
 TR_GSSC_INSTANCE *tr_gssc_instance_new(TALLOC_CTX *mem_ctx)
 {
   TR_GSSC_INSTANCE *gssc=talloc(NULL, TR_GSSC_INSTANCE);
   if (gssc != NULL) {
     gssc->service_name = NULL;
-    gssc->client_dh = NULL;
     gssc->conn = -1;
     gssc->gss_ctx = talloc(gssc, gss_ctx_id_t);
     if (gssc->gss_ctx == NULL) {
-      talloc_free(gssc); /* before the destructor is set */
+      talloc_free(gssc);
       return NULL;
     }
-    talloc_set_destructor((void *)gssc, tr_gssc_destructor);
   }
   return gssc;
 }
@@ -145,14 +133,3 @@ cleanup:
   talloc_free(tmp_ctx);
   return resp_msg;
 }
-
-DH * tr_gssc_get_dh(TR_GSSC_INSTANCE *inst)
-{
-  return inst->client_dh;
-}
-
-DH *tr_gssc_set_dh(TR_GSSC_INSTANCE *inst, DH *dh)
-{
-  inst->client_dh = dh;
-  return dh;
-}
index 29ea514..bbd7f1b 100644 (file)
 #include <talloc.h>
 #include <stdint.h>
 #include <jansson.h>
-#include <gmodule.h>
+#include <glib.h>
 #include <gssapi.h>
 #include <trust_router/tid.h>
 #include <trp_internal.h>
 #include <tr_gss_names.h>
 #include <tr_gss_client.h>
 #include <tr_name_internal.h>
-#include <trust_router/tr_dh.h>
 #include <mon.h>
 
 /* Typedefs */
@@ -187,8 +186,6 @@ int mons_accept(MONS_INSTANCE *mons, int listen);
 /* monc.c */
 MONC_INSTANCE *monc_new(TALLOC_CTX *mem_ctx);
 void monc_free(MONC_INSTANCE *monc);
-DH *monc_get_dh(MONC_INSTANCE *inst);
-DH *monc_set_dh(MONC_INSTANCE *inst, DH *dh);
 int monc_open_connection(MONC_INSTANCE *monc, const char *server, unsigned int port);
 MON_RESP *monc_send_request(TALLOC_CTX *mem_ctx, MONC_INSTANCE *monc, MON_REQ *req);
 
index 8613eb8..ecaf647 100644 (file)
 #ifndef TID_INTERNAL_H
 #define TID_INTERNAL_H
 #include <glib.h>
+#include <jansson.h>
 
-#include <tr_rp.h>
 #include <trust_router/tid.h>
-#include <jansson.h>
-#include "tr_gss_client.h"
+#include <trust_router/tr_dh.h>
+#include <tr_rp.h>
+#include <tr_gss_client.h>
 
 struct tid_srvr_blk {
   TID_SRVR_BLK *next;
@@ -86,6 +87,7 @@ struct tid_req {
 
 struct tidc_instance {
   TR_GSSC_INSTANCE *gssc;
+  DH *client_dh;
 };
 
 struct tid_process {
index 25024a6..3353184 100644 (file)
@@ -36,7 +36,6 @@
 #define TRUST_ROUTER_TR_GSS_CLIENT_H
 
 #include <gssapi.h>
-#include <trust_router/tr_dh.h>
 #include <tr_msg.h>
 
 typedef struct tr_gssc_instance TR_GSSC_INSTANCE;
@@ -44,7 +43,6 @@ typedef struct tr_gssc_instance TR_GSSC_INSTANCE;
 /* Client instance */
 struct tr_gssc_instance {
   const char *service_name;
-  DH *client_dh;
   gss_ctx_id_t *gss_ctx;
   int conn;
 };
@@ -54,7 +52,5 @@ TR_GSSC_INSTANCE *tr_gssc_instance_new(TALLOC_CTX *mem_ctx);
 void tr_gssc_instance_free(TR_GSSC_INSTANCE *tr_gssc);
 int tr_gssc_open_connection(TR_GSSC_INSTANCE *gssc, const char *server, unsigned int port);
 TR_MSG *tr_gssc_exchange_msgs(TALLOC_CTX *mem_ctx, TR_GSSC_INSTANCE *gssc, TR_MSG *req_msg);
-DH * tr_gssc_get_dh(TR_GSSC_INSTANCE *inst);
-DH *tr_gssc_set_dh(TR_GSSC_INSTANCE *inst, DH *dh);
 
 #endif //TRUST_ROUTER_TR_GSS_CLIENT_H
index 426b447..6e5b26a 100644 (file)
@@ -98,13 +98,3 @@ cleanup:
   talloc_free(tmp_ctx);
   return resp;
 }
-
-DH *monc_get_dh(MONC_INSTANCE *inst)
-{
-  return tr_gssc_get_dh(inst->gssc);
-}
-
-DH *monc_set_dh(MONC_INSTANCE *inst, DH *dh)
-{
-  return tr_gssc_set_dh(inst->gssc, dh);
-}
index 90335f0..1cff6f0 100644 (file)
 
 int tmp_len = 32;
 
+static int tidc_destructor(void *obj)
+{
+  TIDC_INSTANCE *tidc=talloc_get_type_abort(obj, TIDC_INSTANCE);
+  if (NULL!=tidc) {
+    if (NULL!=tidc->client_dh)
+      tr_destroy_dh_params(tidc->client_dh);
+  }
+  return 0;
+}
+
+
 /* creates struct in talloc null context */
 TIDC_INSTANCE *tidc_create(void)
 {
@@ -56,8 +67,9 @@ TIDC_INSTANCE *tidc_create(void)
       talloc_free(tidc);
       return NULL;
     }
-
     tidc->gssc->service_name = "trustidentity";
+    tidc->client_dh = NULL;
+    talloc_set_destructor((void *)tidc, tidc_destructor);
   }
   return tidc;
 }
@@ -129,7 +141,7 @@ int tidc_send_request (TIDC_INSTANCE *tidc,
     goto error;
   }
 
-  tid_req->tidc_dh = tr_dh_dup(tidc->gssc->client_dh);
+  tid_req->tidc_dh = tr_dh_dup(tidc_get_dh(tidc));
 
   /* generate an ID */
   request_id = tr_random_id(NULL);
@@ -219,12 +231,13 @@ int tidc_fwd_request(TIDC_INSTANCE *tidc,
 }
 
 
-DH * tidc_get_dh(TIDC_INSTANCE *inst)
+DH *tidc_get_dh(TIDC_INSTANCE *inst)
 {
-  return tr_gssc_get_dh(inst->gssc);
+  return inst->client_dh;
 }
 
 DH *tidc_set_dh(TIDC_INSTANCE *inst, DH *dh)
 {
-  return tr_gssc_set_dh(inst->gssc, dh);
+  inst->client_dh = dh;
+  return dh;
 }