krb5_boolean krb5_is_permitted_enctype_ext ( krb5_context context, krb5_etypes_permitted *etypes) { krb5_enctype *list, *ptr; krb5_boolean ret = 0; int i = 0; if (krb5_get_permitted_enctypes(context, &list)) return(0); for ( i=0; i< etypes->etype_count; i++ ) { for (ptr = list; *ptr; ptr++) { if (*ptr == etypes->etype[i]) { etypes->etype_ok[i] = TRUE; ret = 1; } } } krb5_free_ktypes (context, list); return(ret); }
krb5_error_code KRB5_CALLCONV krb5_set_default_tgs_enctypes (krb5_context context, const krb5_enctype *ktypes) { krb5_enctype * new_ktypes; int i; if (ktypes) { for (i = 0; ktypes[i]; i++) { if (!krb5_c_valid_enctype(ktypes[i])) return KRB5_PROG_ETYPE_NOSUPP; } /* Now copy the default ktypes into the context pointer */ if ((new_ktypes = (krb5_enctype *)malloc(sizeof(krb5_enctype) * i))) memcpy(new_ktypes, ktypes, sizeof(krb5_enctype) * i); else return ENOMEM; } else { i = 0; new_ktypes = (krb5_enctype *)NULL; } if (context->tgs_ktypes) krb5_free_ktypes(context, context->tgs_ktypes); context->tgs_ktypes = new_ktypes; context->tgs_ktype_count = i; return 0; }
void free_kerberos_etypes(krb5_context context, krb5_enctype *enctypes) { #if defined(HAVE_KRB5_FREE_KTYPES) krb5_free_ktypes(context, enctypes); return; #else SAFE_FREE(enctypes); return; #endif }
krb5_boolean krb5_is_permitted_enctype(krb5_context context, krb5_enctype etype) { krb5_enctype *list, *ptr; 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); }