X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=lib%2Finclude%2Fradsec%2Fradsec-impl.h;h=0ecd631b86744e4961877bd066bf86b94d6bf5bf;hb=787ccb8ea4a0c384749338fb4665c790c42af665;hp=9bcd208f65ad1cbda231665f0fa36360f4130428;hpb=fac0219dad91c574417f78ec674aa0dd10949e15;p=libradsec.git diff --git a/lib/include/radsec/radsec-impl.h b/lib/include/radsec/radsec-impl.h index 9bcd208..0ecd631 100644 --- a/lib/include/radsec/radsec-impl.h +++ b/lib/include/radsec/radsec-impl.h @@ -1,9 +1,12 @@ /** @file libradsec-impl.h @brief Libraray internal header file for libradsec. */ -/* See the file COPYING for licensing information. */ +/* Copyright 2010-2013 NORDUnet A/S. All rights reserved. + See LICENSE for licensing information. */ + +#ifndef _RADSEC_RADSEC_IMPL_H_ +#define _RADSEC_RADSEC_IMPL_H_ 1 -#include #include #include #if defined(RS_ENABLE_TLS) @@ -16,10 +19,19 @@ /* Data types. */ enum rs_cred_type { RS_CRED_NONE = 0, - RS_CRED_TLS_PSK_RSA, /* RFC 4279. */ + /* TLS pre-shared keys, RFC 4279. */ + RS_CRED_TLS_PSK, + /* RS_CRED_TLS_DH_PSK, */ + /* RS_CRED_TLS_RSA_PSK, */ }; typedef unsigned int rs_cred_type_t; +enum rs_key_encoding { + RS_KEY_ENCODING_UTF8 = 1, + RS_KEY_ENCODING_ASCII_HEX = 2, +}; +typedef unsigned int rs_key_encoding_t; + #if defined (__cplusplus) extern "C" { #endif @@ -28,6 +40,8 @@ struct rs_credentials { enum rs_cred_type type; char *identity; char *secret; + enum rs_key_encoding secret_encoding; + unsigned int secret_len; }; struct rs_error { @@ -35,15 +49,19 @@ struct rs_error { char buf[1024]; }; -struct rs_peer { /* Config object for a connection. */ +/** Configuration object for a connection. */ +struct rs_peer { struct rs_connection *conn; struct rs_realm *realm; - struct evutil_addrinfo *addr; - char *secret; + char *hostname; + char *service; + char *secret; /* RADIUS secret. */ + struct evutil_addrinfo *addr_cache; struct rs_peer *next; }; -struct rs_realm { /* Config object for a RADIUS realm. */ +/** Configuration object for a RADIUS realm. */ +struct rs_realm { char *name; enum rs_conn_type type; int timeout; @@ -52,16 +70,22 @@ struct rs_realm { /* Config object for a RADIUS realm. */ char *cacertpath; char *certfile; char *certkeyfile; + int disable_hostname_check; + struct rs_credentials *transport_cred; struct rs_peer *peers; struct rs_realm *next; }; -struct rs_context { +/** Top configuration object. */ +struct rs_config { struct rs_realm *realms; + cfg_t *cfg; +}; + +struct rs_context { + struct rs_config *config; struct rs_alloc_scheme alloc_scheme; struct rs_error *err; - fr_randctx fr_randctx; - cfg_t *cfg; }; struct rs_connection { @@ -69,7 +93,6 @@ struct rs_connection { struct rs_realm *realm; /* Owned by ctx. */ struct event_base *evb; /* Event base. */ struct event *tev; /* Timeout event. */ - struct rs_credentials transport_credentials; struct rs_conn_callbacks callbacks; void *user_data; struct rs_peer *peers; @@ -95,29 +118,21 @@ struct rs_connection { }; enum rs_packet_flags { - rs_packet_hdr_read_flag, - rs_packet_received_flag, - rs_packet_sent_flag, + RS_PACKET_HEADER_READ, + RS_PACKET_RECEIVED, + RS_PACKET_SENT, }; +struct radius_packet; + struct rs_packet { struct rs_connection *conn; unsigned int flags; uint8_t hdr[RS_HEADER_LEN]; - RADIUS_PACKET *rpkt; + struct radius_packet *rpkt; /* FreeRADIUS object. */ struct rs_packet *next; /* Used for UDP output queue. */ }; -struct rs_attr { - struct rs_packet *pkt; - VALUE_PAIR *vp; -}; - -/* Nonpublic functions (in radsec.c -- FIXME: move?). */ -struct rs_error *rs_resolv (struct evutil_addrinfo **addr, - rs_conn_type_t type, - const char *hostname, - const char *service); #if defined (__cplusplus) } #endif @@ -134,6 +149,8 @@ struct rs_error *rs_resolv (struct evutil_addrinfo **addr, #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b)) +#endif /* _RADSEC_RADSEC_IMPL_H_ */ + /* Local Variables: */ /* c-file-style: "stroustrup" */ /* End: */