#ifndef _UTIL_H_
#define _UTIL_H_ 1
+#include <string.h>
+#include <errno.h>
+
#include <krb5.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include "util_saml.h"
-#include "util_radius.h"
#define KRB_KEY_TYPE(key) ((key)->enctype)
#define KRB_KEY_DATA(key) ((key)->contents)
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,
gssEapAllocIov(gss_iov_buffer_t iov, size_t size);
OM_uint32
-gssEapDeriveRFC3961Key(OM_uint32 *minor,
+gssEapDeriveRfc3961Key(OM_uint32 *minor,
const unsigned char *key,
size_t keyLength,
krb5_enctype enctype,
OM_uint32
gssEapKerberosInit(OM_uint32 *minor, krb5_context *context);
+OM_uint32
+rfc3961ChecksumTypeForKey(OM_uint32 *minor,
+ krb5_keyblock *key,
+ krb5_cksumtype *cksumtype);
+
#define GSSEAP_KRB_INIT(ctx) do { \
OM_uint32 tmpMajor; \
tmpMajor = gssEapKerberosInit(minor, ctx); \
return store_buffer(&buf, vp, FALSE);
}
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _UTIL_H_ */