X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=util.h;h=936ccea816840b36835b5d8eac1af2c847045a79;hb=1f273eda615c04331df6849cfbf3cfad069ea8b0;hp=9933615a721e6836b3152164ca200c4afe16d225;hpb=2e9fb505184d198821d094cf279894d5c97e679b;p=mech_eap.git diff --git a/util.h b/util.h index 9933615..936ccea 100644 --- a/util.h +++ b/util.h @@ -57,10 +57,18 @@ #ifndef _UTIL_H_ #define _UTIL_H_ 1 +#include +#include + #include -#include "util_saml.h" -#include "util_radius.h" +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef MIN /* Usually found in . */ +#define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) +#endif #define KRB_KEY_TYPE(key) ((key)->enctype) #define KRB_KEY_DATA(key) ((key)->contents) @@ -101,6 +109,24 @@ duplicateBuffer(OM_uint32 *minor, const gss_buffer_t src, gss_buffer_t dst); +static inline int +bufferEqual(const gss_buffer_t b1, const gss_buffer_t b2) +{ + return (b1->length == b2->length && + memcmp(b1->value, b2->value, b2->length) == 0); +} + +static inline int +bufferEqualString(const gss_buffer_t b1, const char *s) +{ + gss_buffer_desc b2; + + b2.length = strlen(s); + b2.value = (char *)s; + + return bufferEqual(b1, &b2); +} + /* util_cksum.c */ int gssEapSign(krb5_context context, @@ -209,9 +235,9 @@ OM_uint32 gssEapKerberosInit(OM_uint32 *minor, krb5_context *context); OM_uint32 -rfc3961EncTypeToChecksumType(OM_uint32 *minor, - krb5_enctype etype, - krb5_cksumtype *cksumtype); +rfc3961ChecksumTypeForKey(OM_uint32 *minor, + krb5_keyblock *key, + krb5_cksumtype *cksumtype); #define GSSEAP_KRB_INIT(ctx) do { \ OM_uint32 tmpMajor; \ @@ -262,6 +288,11 @@ enum gss_eap_attribute_type { ATTR_TYPE_RADIUS_AVP = 3 }; +typedef OM_uint32 (*gss_eap_add_attr_cb)(OM_uint32 *minor, + gss_name_t name, + gss_buffer_t attribute, + void *data); + OM_uint32 gssEapAllocName(OM_uint32 *minor, gss_name_t *pName); OM_uint32 gssEapReleaseName(OM_uint32 *minor, gss_name_t *pName); OM_uint32 gssEapExportName(OM_uint32 *minor, @@ -326,23 +357,29 @@ oidEqual(const gss_OID_desc *o1, const gss_OID_desc *o2) } /* util_ordering.c */ -int -sequenceInternalize(void **vqueue, unsigned char **buf, size_t *lenremain); +OM_uint32 +sequenceInternalize(OM_uint32 *minor, + void **vqueue, + unsigned char **buf, + size_t *lenremain); -int -sequenceExternalize(void *vqueue, unsigned char **buf, size_t *lenremain); +OM_uint32 +sequenceExternalize(OM_uint32 *minor, + void *vqueue, + unsigned char **buf, + size_t *lenremain); size_t sequenceSize(void *vqueue); -void -sequenceFree(void **vqueue); +OM_uint32 +sequenceFree(OM_uint32 *minor, void **vqueue); -int -sequenceCheck(void **vqueue, uint64_t seqnum); +OM_uint32 +sequenceCheck(OM_uint32 *minor, void **vqueue, uint64_t seqnum); -int -sequenceInit(void **vqueue, uint64_t seqnum, +OM_uint32 +sequenceInit(OM_uint32 *minor, void **vqueue, uint64_t seqnum, int do_replay, int do_sequence, int wide_nums); /* util_token.c */ @@ -394,6 +431,9 @@ verifyTokenHeader(OM_uint32 *minor, #define GSSEAP_ONCE(o, i) pthread_once((o), (i)) #define GSSEAP_ONCE_INITIALIZER PTHREAD_ONCE_INIT +#include "util_radius.h" +#include "util_saml.h" + /* Helper functions */ static inline void store_uint16_be(uint16_t val, void *vp) @@ -504,4 +544,9 @@ store_oid(gss_OID oid, void *vp) return store_buffer(&buf, vp, FALSE); } + +#ifdef __cplusplus +} +#endif + #endif /* _UTIL_H_ */