diff options
author | stas <stas@FreeBSD.org> | 2011-10-08 04:08:44 +0000 |
---|---|---|
committer | stas <stas@FreeBSD.org> | 2011-10-08 04:08:44 +0000 |
commit | 2db247d3fc10ef5304f61dbd66448efff8cc6684 (patch) | |
tree | 353454e541452788c2b3c59d1fb19ada4daf5646 /lib/krb5/crypto.c | |
parent | 33f661cecdad3182ee66b47805fa4bb212e0da6c (diff) | |
download | FreeBSD-src-2db247d3fc10ef5304f61dbd66448efff8cc6684.zip FreeBSD-src-2db247d3fc10ef5304f61dbd66448efff8cc6684.tar.gz |
- Update vendor tree of heimdal to 1.5.1.
Diffstat (limited to 'lib/krb5/crypto.c')
-rw-r--r-- | lib/krb5/crypto.c | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/lib/krb5/crypto.c b/lib/krb5/crypto.c index 37eb2c5..4b66035 100644 --- a/lib/krb5/crypto.c +++ b/lib/krb5/crypto.c @@ -51,9 +51,33 @@ static void free_key_schedule(krb5_context, struct _krb5_key_data *, struct _krb5_encryption_type *); -/************************************************************ - * * - ************************************************************/ +/* + * Converts etype to a user readable string and sets as a side effect + * the krb5_error_message containing this string. Returns + * KRB5_PROG_ETYPE_NOSUPP in not the conversion of the etype failed in + * which case the error code of the etype convesion is returned. + */ + +static krb5_error_code +unsupported_enctype(krb5_context context, krb5_enctype etype) +{ + krb5_error_code ret; + char *name; + + ret = krb5_enctype_to_string(context, etype, &name); + if (ret) + return ret; + + krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP, + N_("Encryption type %s not supported", ""), + name); + free(name); + return KRB5_PROG_ETYPE_NOSUPP; +} + +/* + * + */ KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_keysize(krb5_context context, @@ -62,10 +86,7 @@ krb5_enctype_keysize(krb5_context context, { struct _krb5_encryption_type *et = _krb5_find_enctype(type); if(et == NULL) { - krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP, - N_("encryption type %d not supported", ""), - type); - return KRB5_PROG_ETYPE_NOSUPP; + return unsupported_enctype (context, type); } *keysize = et->keytype->size; return 0; @@ -78,10 +99,7 @@ krb5_enctype_keybits(krb5_context context, { struct _krb5_encryption_type *et = _krb5_find_enctype(type); if(et == NULL) { - krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP, - "encryption type %d not supported", - type); - return KRB5_PROG_ETYPE_NOSUPP; + return unsupported_enctype (context, type); } *keybits = et->keytype->bits; return 0; @@ -95,10 +113,7 @@ krb5_generate_random_keyblock(krb5_context context, krb5_error_code ret; struct _krb5_encryption_type *et = _krb5_find_enctype(type); if(et == NULL) { - krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP, - N_("encryption type %d not supported", ""), - type); - return KRB5_PROG_ETYPE_NOSUPP; + return unsupported_enctype (context, type); } ret = krb5_data_alloc(&key->keyvalue, et->keytype->size); if(ret) @@ -121,10 +136,8 @@ _key_schedule(krb5_context context, struct _krb5_key_type *kt; if (et == NULL) { - krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP, - N_("encryption type %d not supported", ""), - key->key->keytype); - return KRB5_PROG_ETYPE_NOSUPP; + return unsupported_enctype (context, + key->key->keytype); } kt = et->keytype; @@ -684,10 +697,7 @@ krb5_enctype_to_keytype(krb5_context context, { struct _krb5_encryption_type *e = _krb5_find_enctype(etype); if(e == NULL) { - krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP, - N_("encryption type %d not supported", ""), - etype); - return KRB5_PROG_ETYPE_NOSUPP; + return unsupported_enctype (context, etype); } *keytype = e->keytype->type; /* XXX */ return 0; @@ -713,10 +723,7 @@ krb5_enctype_valid(krb5_context context, if (context == NULL) return KRB5_PROG_ETYPE_NOSUPP; if(e == NULL) { - krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP, - N_("encryption type %d not supported", ""), - etype); - return KRB5_PROG_ETYPE_NOSUPP; + return unsupported_enctype (context, etype); } /* Must be (e->flags & F_DISABLED) */ krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP, @@ -1954,10 +1961,7 @@ krb5_derive_key(krb5_context context, et = _krb5_find_enctype (etype); if (et == NULL) { - krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP, - N_("encryption type %d not supported", ""), - etype); - return KRB5_PROG_ETYPE_NOSUPP; + return unsupported_enctype (context, etype); } ret = krb5_copy_keyblock(context, key, &d.key); @@ -2035,10 +2039,7 @@ krb5_crypto_init(krb5_context context, if((*crypto)->et == NULL || ((*crypto)->et->flags & F_DISABLED)) { free(*crypto); *crypto = NULL; - krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP, - N_("encryption type %d not supported", ""), - etype); - return KRB5_PROG_ETYPE_NOSUPP; + return unsupported_enctype(context, etype); } if((*crypto)->et->keytype->size != key->keyvalue.length) { free(*crypto); |