krb5_enctype *default_list,
krb5_enctype **result);
+/* Utility functions for zero-terminated enctype lists. */
+size_t k5_count_etypes(const krb5_enctype *list);
+krb5_error_code k5_copy_etypes(const krb5_enctype *old_list,
+ krb5_enctype **new_list);
+krb5_boolean k5_etypes_contains(const krb5_enctype *list, krb5_enctype etype);
+
#ifdef DEBUG_ERROR_LOCATIONS
#define krb5_set_error_message(ctx, code, ...) \
krb5_set_error_message_fl(ctx, code, __FILE__, __LINE__, __VA_ARGS__)
ret = krb5_get_tgs_ktypes (context, mcreds->server, &ktypes);
if (ret)
return ret;
- nktypes = krb5int_count_etypes (ktypes);
+ nktypes = k5_count_etypes (ktypes);
ret = krb5_cc_retrieve_cred_seq (context, id, flags, mcreds, creds,
nktypes, ktypes);
krb5_enctype *newpe;
krb5_error_code ret;
- ret = krb5int_copy_etypes(permetypes, &newpe);
+ ret = k5_copy_etypes(permetypes, &newpe);
if (ret != 0)
return ret;
*permetypes = NULL;
if (auth_context->permitted_etypes == NULL)
return 0;
- return krb5int_copy_etypes(auth_context->permitted_etypes, permetypes);
+ return k5_copy_etypes(auth_context->permitted_etypes, permetypes);
}
krb5_error_code KRB5_CALLCONV
memset(&nctx->err, 0, sizeof(nctx->err));
- ret = krb5int_copy_etypes(ctx->in_tkt_etypes, &nctx->in_tkt_etypes);
+ ret = k5_copy_etypes(ctx->in_tkt_etypes, &nctx->in_tkt_etypes);
if (ret)
goto errout;
- ret = krb5int_copy_etypes(ctx->tgs_etypes, &nctx->tgs_etypes);
+ ret = k5_copy_etypes(ctx->tgs_etypes, &nctx->tgs_etypes);
if (ret)
goto errout;
#include "int-proto.h"
size_t
-krb5int_count_etypes(const krb5_enctype *list)
+k5_count_etypes(const krb5_enctype *list)
{
size_t count;
/* Copy the zero-terminated enctype list old_list into *new_list. */
krb5_error_code
-krb5int_copy_etypes(const krb5_enctype *old_list, krb5_enctype **new_list)
+k5_copy_etypes(const krb5_enctype *old_list, krb5_enctype **new_list)
{
size_t count;
krb5_enctype *list;
*new_list = NULL;
- count = krb5int_count_etypes(old_list);
+ count = k5_count_etypes(old_list);
list = malloc(sizeof(krb5_enctype) * (count + 1));
if (list == NULL)
return ENOMEM;
*new_list = list;
return 0;
}
+
+krb5_boolean
+k5_etypes_contains(const krb5_enctype *list, krb5_enctype etype)
+{
+ size_t i;
+
+ for (i = 0; list[i] && list[i] != etype; i++);
+ return (list[i] == etype);
+}
ctx->request->nktypes * sizeof(krb5_enctype));
} else if (krb5_get_default_in_tkt_ktypes(context,
&ctx->request->ktype) == 0) {
- ctx->request->nktypes = krb5int_count_etypes(ctx->request->ktype);
+ ctx->request->nktypes = k5_count_etypes(ctx->request->ktype);
} else {
/* there isn't any useful default here. */
code = KRB5_CONFIG_ETYPE_NOSUPP;
if (addrs)
krb5_get_init_creds_opt_set_address_list(opt, (krb5_address **) addrs);
if (ktypes) {
- i = krb5int_count_etypes(ktypes);
+ i = k5_count_etypes(ktypes);
if (i)
krb5_get_init_creds_opt_set_etype_list(opt, ktypes, i);
}
/* Empty list passed in. */
if (etypes[0] == 0)
return EINVAL;
- code = krb5int_copy_etypes(etypes, &list);
+ code = k5_copy_etypes(etypes, &list);
if (code)
return code;
if (ctx_list) {
/* Use application defaults. */
- code = krb5int_copy_etypes(ctx_list, &etypes);
+ code = k5_copy_etypes(ctx_list, &etypes);
if (code)
return code;
} else {
krb5_boolean
krb5_is_permitted_enctype(krb5_context context, krb5_enctype etype)
{
- krb5_enctype *list, *ptr;
+ krb5_enctype *list;
krb5_boolean ret;
if (krb5_get_permitted_enctypes(context, &list))
- return(0);
-
-
- ret = 0;
-
- for (ptr = list; *ptr; ptr++)
- if (*ptr == etype)
- ret = 1;
-
- krb5_free_ktypes (context, list);
-
- return(ret);
+ return FALSE;
+ ret = k5_etypes_contains(list, etype);
+ krb5_free_ktypes(context, list);
+ return ret;
}
const krb5_keyblock *, krb5_keyusage,
krb5_kdc_rep ** );
-/* Utility functions for zero-terminated enctype lists. */
-size_t krb5int_count_etypes(const krb5_enctype *list);
-krb5_error_code krb5int_copy_etypes(const krb5_enctype *old_list,
- krb5_enctype **new_list);
-
krb5_error_code
krb5int_validate_times(krb5_context, krb5_ticket_times *);
if (retval != 0)
goto cleanup;
}
- permitted_etypes_len = krb5int_count_etypes(permitted_etypes);
+ permitted_etypes_len = k5_count_etypes(permitted_etypes);
} else {
permitted_etypes = NULL;
permitted_etypes_len = 0;
static inline unsigned int
etypes_len(krb5_enctype *list)
{
- return (list == NULL) ? 0 : krb5int_count_etypes(list);
+ return (list == NULL) ? 0 : k5_count_etypes(list);
}
/*
initialize_kv5m_error_table
initialize_prof_error_table
k5_ccselect_free_context
+k5_copy_etypes
+k5_count_etypes
+k5_etypes_contains
k5_free_serverlist
k5_kt_get_principal
k5_locate_kdc