X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=util.h;h=6b472837d4f391b87d551128ce5441ee7753faed;hb=aa3e3279477f71dbe2efb212cedea1c0929f25e8;hp=f2c992af4490be8d01736099bad44a2901f39cfe;hpb=92dda90e8a01094a9b59187c076ac908bde861f1;p=mech_eap.git diff --git a/util.h b/util.h index f2c992a..6b47283 100644 --- a/util.h +++ b/util.h @@ -66,7 +66,9 @@ extern "C" { #endif -#include "util_saml.h" +#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) @@ -86,7 +88,9 @@ enum gss_eap_token_type { TOK_TYPE_DELETE_CONTEXT = 0x0405, /* RFC 2743 delete context */ TOK_TYPE_EAP_RESP = 0x0601, /* draft-howlett-eap-gss */ TOK_TYPE_EAP_REQ = 0x0602, /* draft-howlett-eap-gss */ - TOK_TYPE_GSS_CB = 0x0603, /* draft-howlett-eap-gss */ + TOK_TYPE_EXT_REQ = 0x0603, /* draft-howlett-eap-gss */ + TOK_TYPE_EXT_RESP = 0x0604, /* to be specified */ + TOK_TYPE_GSS_REAUTH = 0x0605, /* to be specified */ }; #define EAP_EXPORT_CONTEXT_V1 1 @@ -138,7 +142,7 @@ gssEapSign(krb5_context context, int gssEapVerify(krb5_context context, krb5_cksumtype type, - size_t rrc, + size_t rrc, krb5_keyblock *key, krb5_keyusage sign_usage, gss_iov_buffer_desc *iov, @@ -167,9 +171,20 @@ OM_uint32 gssEapVerifyToken(OM_uint32 *minor, gss_ctx_id_t ctx, const gss_buffer_t inputToken, - enum gss_eap_token_type tokenType, + enum gss_eap_token_type *tokenType, gss_buffer_t innerInputToken); +OM_uint32 +gssEapContextTime(OM_uint32 *minor, + gss_ctx_id_t context_handle, + OM_uint32 *time_rec); + +OM_uint32 +gssEapDisplayName(OM_uint32 *minor, + gss_name_t name, + gss_buffer_t output_name_buffer, + gss_OID *output_name_type); + /* util_cred.c */ OM_uint32 gssEapAllocCred(OM_uint32 *minor, gss_cred_id_t *pCred); OM_uint32 gssEapReleaseCred(OM_uint32 *minor, gss_cred_id_t *pCred); @@ -279,45 +294,37 @@ gssEapValidateMechs(OM_uint32 *minor, const gss_OID_set mechs); /* util_name.c */ -enum gss_eap_attribute_type { - ATTR_TYPE_NONE = 0, - ATTR_TYPE_SAML_AAA_ASSERTION = 1, - ATTR_TYPE_SAML_ATTR = 2, - ATTR_TYPE_RADIUS_AVP = 3 -}; +#define EXPORT_NAME_FLAG_OID 0x1 +#define EXPORT_NAME_FLAG_COMPOSITE 0x2 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, const gss_name_t name, - gss_buffer_t exportedName, - int composite); + gss_buffer_t exportedName); +OM_uint32 gssEapExportNameInternal(OM_uint32 *minor, + const gss_name_t name, + gss_buffer_t exportedName, + unsigned int flags); OM_uint32 gssEapImportName(OM_uint32 *minor, const gss_buffer_t input_name_buffer, gss_OID input_name_type, gss_name_t *output_name); - -enum gss_eap_attribute_type -gssEapAttributePrefixToType(const gss_buffer_t prefix); -gss_buffer_t -gssEapAttributeTypeToPrefix(enum gss_eap_attribute_type type); +OM_uint32 gssEapImportNameInternal(OM_uint32 *minor, + const gss_buffer_t input_name_buffer, + gss_name_t *output_name, + unsigned int flags); OM_uint32 -decomposeAttributeName(OM_uint32 *minor, - const gss_buffer_t attribute, - gss_buffer_t prefix, - gss_buffer_t suffix); -OM_uint32 -composeAttributeName(OM_uint32 *minor, - const gss_buffer_t prefix, - const gss_buffer_t suffix, - gss_buffer_t attribute); +gssEapDuplicateName(OM_uint32 *minor, + const gss_name_t input_name, + gss_name_t *dest_name); /* util_oid.c */ OM_uint32 composeOid(OM_uint32 *minor_status, const char *prefix, size_t prefix_len, - int suffix, + int suffix, gss_OID_desc *oid); OM_uint32 @@ -350,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 */ @@ -385,7 +398,7 @@ verifyTokenHeader(OM_uint32 *minor, size_t *body_size, unsigned char **buf_in, size_t toksize_in, - enum gss_eap_token_type tok_type); + enum gss_eap_token_type *ret_tok_type); /* Helper macros */ #define GSSEAP_CALLOC(count, size) (calloc((count), (size))) @@ -529,8 +542,27 @@ store_oid(gss_OID oid, void *vp) return store_buffer(&buf, vp, FALSE); } +static inline void +krbDataToGssBuffer(krb5_data *data, gss_buffer_t buffer) +{ + buffer->value = (void *)data->data; + buffer->length = data->length; +} + +static inline void +gssBufferToKrbData(gss_buffer_t buffer, krb5_data *data) +{ + data->data = (char *)buffer->value; + data->length = buffer->length; +} + #ifdef __cplusplus } #endif +#include "util_attr.h" +#ifdef GSSEAP_ENABLE_REAUTH +#include "util_reauth.h" +#endif + #endif /* _UTIL_H_ */