API improvements needed by freeradius
authorSam Hartman <hartmans@debian.org>
Thu, 17 Jul 2014 00:41:45 +0000 (20:41 -0400)
committerSam Hartman <hartmans@debian.org>
Tue, 22 Jul 2014 14:27:32 +0000 (10:27 -0400)
common/tr_dh.c
include/trust_router/tid.h
include/trust_router/tr_dh.h
tid/tid_req.c
tid/tid_resp.c
tid/tidc.c

index f7c6496..41bac2a 100644 (file)
@@ -217,3 +217,8 @@ int tr_dh_pub_hash(TID_REQ *request,
                                    *out_len = SHA_DIGEST_LENGTH;
                                    return 0;
 }
+
+void tr_dh_free(unsigned char *dh_buf)
+{
+  free(dh_buf);
+}
index 60b5dbd..391faca 100644 (file)
@@ -100,8 +100,8 @@ TR_EXPORT TID_REQ *tid_dup_req (TID_REQ *orig_req);
 void TR_EXPORT tid_req_free( TID_REQ *req);
 
 /* Utility functions for TID_RESP structure, in tid/tid_resp.c */
-TR_EXPORT TID_RC tid_resp_get_result(TID_RESP *resp);
-void tid_resp_set_result(TID_RESP *resp, TID_RC result);
+TR_EXPORT int tid_resp_get_result(TID_RESP *resp);
+void tid_resp_set_result(TID_RESP *resp, int result);
 TR_EXPORT TR_NAME *tid_resp_get_err_msg(TID_RESP *resp);
 void tid_resp_set_err_msg(TID_RESP *resp, TR_NAME *err_msg);
 TR_EXPORT TR_NAME *tid_resp_get_rp_realm(TID_RESP *resp);
@@ -116,7 +116,7 @@ TR_EXPORT TID_SRVR_BLK *tid_resp_get_server(TID_RESP *resp, size_t index);
 TR_EXPORT size_t tid_resp_get_num_servers(const TID_RESP *resp);
 /* Server blocks*/
 TR_EXPORT void tid_srvr_get_address(const TID_SRVR_BLK *,
-const struct sockaddr **out_addr);
+                                   const struct sockaddr **out_addr, size_t *out_sa_len);
 TR_EXPORT DH *tid_srvr_get_dh(TID_SRVR_BLK *);
 TR_EXPORT const TR_NAME *tid_srvr_get_key_name(const TID_SRVR_BLK *);
 
@@ -131,6 +131,8 @@ TR_EXPORT TIDC_INSTANCE *tidc_create (void);
 TR_EXPORT int tidc_open_connection (TIDC_INSTANCE *tidc, char *server, unsigned int port, gss_ctx_id_t *gssctx);
 TR_EXPORT int tidc_send_request (TIDC_INSTANCE *tidc, int conn, gss_ctx_id_t gssctx, char *rp_realm, char *realm, char *coi, TIDC_RESP_FUNC *resp_handler, void *cookie);
 TR_EXPORT int tidc_fwd_request (TIDC_INSTANCE *tidc, TID_REQ *req, TIDC_RESP_FUNC *resp_handler, void *cookie);
+TR_EXPORT DH *tidc_get_dh(TIDC_INSTANCE *);
+TR_EXPORT DH *tidc_set_dh(TIDC_INSTANCE *, DH *);
 TR_EXPORT void tidc_destroy (TIDC_INSTANCE *tidc);
 
 /* TID Server functions, in tid/tids.c */
index 41751a9..7760155 100644 (file)
@@ -46,6 +46,7 @@ TR_EXPORT DH *tr_create_matching_dh(unsigned char *key, size_t len, DH *in_dh);
 TR_EXPORT void tr_destroy_dh_params(DH *dh);
 TR_EXPORT int tr_compute_dh_key(unsigned char **pbuf,  BIGNUM *pub_key, DH *priv_dh);
 
+TR_EXPORT void tr_dh_free(unsigned char *dh_buf);
 int TR_EXPORT tr_dh_pub_hash(TID_REQ *request,
                             unsigned char **out_digest,
                             size_t *out_llen);
index d8b225c..23599ad 100644 (file)
@@ -210,7 +210,8 @@ void tid_req_free(TID_REQ *req)
 
 
 void tid_srvr_get_address(const TID_SRVR_BLK *blk,
-                         const struct sockaddr **out_addr)
+                         const struct sockaddr **out_addr,
+                         size_t *out_len)
 {
   struct sockaddr_in *sa = NULL;
     assert(blk);
@@ -219,6 +220,7 @@ void tid_srvr_get_address(const TID_SRVR_BLK *blk,
     sa->sin_addr = blk->aaa_server_addr;
     sa->sin_port = htons(2083);
     *out_addr = (struct sockaddr *) sa;
+    *out_len = sizeof( struct sockaddr_in);
 }
 
 DH *tid_srvr_get_dh( TID_SRVR_BLK *blk)
index 9ff06ba..14cc213 100644 (file)
 
 #include <tid_internal.h>
 
-TR_EXPORT TID_RC tid_resp_get_result(TID_RESP *resp)
+TR_EXPORT int tid_resp_get_result(TID_RESP *resp)
 {
   return(resp->result);
 }
 
-void tid_resp_set_result(TID_RESP *resp, TID_RC result)
+void tid_resp_set_result(TID_RESP *resp, int result)
 {
   resp->result = result;
 }
index 102e83e..103d354 100644 (file)
@@ -199,3 +199,14 @@ int tidc_fwd_request (TIDC_INSTANCE *tidc,
   return 0;
 }
 
+
+DH * tidc_get_dh(TIDC_INSTANCE *inst)
+{
+  return inst->client_dh;
+}
+
+DH *tidc_set_dh(TIDC_INSTANCE *inst, DH *dh)
+{
+  inst->client_dh = dh;
+  return dh;
+}