Better error reporting through com_err
[mech_eap.git] / util.h
diff --git a/util.h b/util.h
index 7d47e98..3494aab 100644 (file)
--- a/util.h
+++ b/util.h
@@ -95,19 +95,6 @@ enum gss_eap_token_type {
 
 #define EAP_EXPORT_CONTEXT_V1           1
 
-/* util_alloc.c */
-void *
-gssEapCalloc(size_t nmemb, size_t size);
-
-void *
-gssEapMalloc(size_t size);
-
-void
-gssEapFree(void *ptr);
-
-void *
-gssEapRealloc(void *ptr, size_t size);
-
 /* util_buffer.c */
 OM_uint32
 makeStringBuffer(OM_uint32 *minor,
@@ -256,6 +243,44 @@ gssEapDeriveRfc3961Key(OM_uint32 *minor,
                        krb5_enctype enctype,
                        krb5_keyblock *pKey);
 
+/* util_exts.c */
+#define EXT_FLAG_CRITICAL               0x80000000
+#define EXT_FLAG_VERIFIED               0x40000000
+
+#define EXT_TYPE_GSS_CHANNEL_BINDINGS   0x00000000
+#define EXT_TYPE_REAUTH_CREDS           0x00000001
+#define EXT_TYPE_MASK                   (~(EXT_FLAG_CRITICAL | EXT_FLAG_VERIFIED))
+
+struct gss_eap_extension_provider {
+    OM_uint32 type;
+    int critical; /* client */
+    int required; /* server */
+    OM_uint32 (*make)(OM_uint32 *,
+                      gss_cred_id_t,
+                      gss_ctx_id_t,
+                      gss_channel_bindings_t,
+                      gss_buffer_t);
+    OM_uint32 (*verify)(OM_uint32 *,
+                        gss_cred_id_t,
+                        gss_ctx_id_t,
+                        gss_channel_bindings_t,
+                        const gss_buffer_t);
+};
+
+OM_uint32
+gssEapMakeExtensions(OM_uint32 *minor,
+                     gss_cred_id_t cred,
+                     gss_ctx_id_t ctx,
+                     gss_channel_bindings_t chanBindings,
+                     gss_buffer_t buffer);
+
+OM_uint32
+gssEapVerifyExtensions(OM_uint32 *minor,
+                       gss_cred_id_t cred,
+                       gss_ctx_id_t ctx,
+                       gss_channel_bindings_t chanBindings,
+                       const gss_buffer_t buffer);
+
 /* util_krb.c */
 OM_uint32
 gssEapKerberosInit(OM_uint32 *minor, krb5_context *context);
@@ -430,10 +455,10 @@ verifyTokenHeader(OM_uint32 *minor,
 
 /* Helper macros */
 
-#define GSSEAP_CALLOC(count, size)      (gssEapCalloc((count), (size)))
-#define GSSEAP_MALLOC(size)             (gssEapMalloc((size)))
-#define GSSEAP_FREE(ptr)                (gssEapFree((ptr)))
-#define GSSEAP_REALLOC(ptr, size)       (gssEapRealloc((ptr), (size)))
+#define GSSEAP_CALLOC                   calloc
+#define GSSEAP_MALLOC                   malloc
+#define GSSEAP_FREE                     free
+#define GSSEAP_REALLOC                  realloc
 
 #define GSSEAP_NOT_IMPLEMENTED          do {            \
         assert(0 && "not implemented");                 \