From e75d34a68eb34a1a173f42d39479aad64f65257c Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Wed, 16 Jul 1997 01:12:54 +0000 Subject: [PATCH] recognize all encryption types actually implemented git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2334 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/context.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/lib/krb5/context.c b/lib/krb5/context.c index d5ee29250..a6b2dda6b 100644 --- a/lib/krb5/context.c +++ b/lib/krb5/context.c @@ -42,20 +42,29 @@ krb5_free_context(krb5_context context) } +/* + * XXX - This information needs to be coordinated with encrypt.c + */ + static krb5_boolean valid_etype(krb5_enctype e) { - return e == ETYPE_DES_CBC_CRC; + return e == ETYPE_DES_CBC_CRC + || e == ETYPE_DES_CBC_MD4 + || e == ETYPE_DES_CBC_MD5; } static krb5_error_code default_etypes(krb5_enctype **etype) { krb5_enctype *p; - p = ALLOC(1, krb5_enctype); + p = ALLOC(4, krb5_enctype); if(!p) return ENOMEM; - p[0] = ETYPE_DES_CBC_CRC; + p[0] = ETYPE_DES_CBC_MD5; + p[1] = ETYPE_DES_CBC_MD4; + p[2] = ETYPE_DES_CBC_CRC; + p[3] = 0; *etype = p; return 0; } @@ -66,17 +75,20 @@ krb5_set_default_in_tkt_etypes(krb5_context context, { int i; krb5_enctype *p = NULL; - if(etypes){ + + if(etypes) { i = 0; while(etypes[i]) if(!valid_etype(etypes[i++])) return KRB5_PROG_ETYPE_NOSUPP; + ++i; p = ALLOC(i, krb5_enctype); if(!p) return ENOMEM; memmove(p, etypes, i * sizeof(krb5_enctype)); } - if(context->etypes) free(context->etypes); + if(context->etypes) + free(context->etypes); context->etypes = p; return 0; } @@ -89,13 +101,15 @@ krb5_get_default_in_tkt_etypes(krb5_context context, { krb5_enctype *p; int i; - if(context->etypes){ + + if(context->etypes) { for(i = 0; context->etypes[i]; i++); + ++i; p = ALLOC(i, krb5_enctype); if(!p) return ENOMEM; memmove(p, context->etypes, i * sizeof(krb5_enctype)); - }else + } else if(default_etypes(&p)) return ENOMEM; *etypes = p;