Move common code to krb5_unsupported_enctype() and make error message contain string instead of error number

Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
This commit is contained in:
Harald Barth
2011-09-02 13:44:34 +02:00
committed by Love Hornquist Astrand
parent d931fd0a22
commit 38df403d45

View File

@@ -51,6 +51,9 @@ static void free_key_schedule(krb5_context,
struct _krb5_key_data *,
struct _krb5_encryption_type *);
static krb5_error_code _krb5_unsupported_enctype(krb5_context,
krb5_enctype);
/************************************************************
* *
************************************************************/
@@ -62,10 +65,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 _krb5_unsupported_enctype (context, type);
}
*keysize = et->keytype->size;
return 0;
@@ -78,10 +78,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 _krb5_unsupported_enctype (context, type);
}
*keybits = et->keytype->bits;
return 0;
@@ -95,10 +92,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 _krb5_unsupported_enctype (context, type);
}
ret = krb5_data_alloc(&key->keyvalue, et->keytype->size);
if(ret)
@@ -121,10 +115,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 _krb5_unsupported_enctype (context,
key->key->keytype);
}
kt = et->keytype;
@@ -684,10 +676,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 _krb5_unsupported_enctype (context, etype);
}
*keytype = e->keytype->type; /* XXX */
return 0;
@@ -713,10 +702,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 _krb5_unsupported_enctype (context, etype);
}
/* Must be (e->flags & F_DISABLED) */
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
@@ -1954,10 +1940,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 _krb5_unsupported_enctype (context, etype);
}
ret = krb5_copy_keyblock(context, key, &d.key);
@@ -1972,6 +1955,32 @@ krb5_derive_key(krb5_context context,
return ret;
}
/*
* _krb5_unsupported_enctype() 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
_krb5_unsupported_enctype(krb5_context context,
krb5_enctype etype)
{
int errcode;
char *etypename = NULL;
if (errcode = krb5_enctype_to_string (context, etype, &etypename))
return errcode;
else {
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
N_("encryption type %s not supported", ""),
etypename);
free(etypename);
return KRB5_PROG_ETYPE_NOSUPP;
}
}
static krb5_error_code
_get_derived_key(krb5_context context,
krb5_crypto crypto,
@@ -2035,10 +2044,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 _krb5_unsupported_enctype (context, etype);
}
if((*crypto)->et->keytype->size != key->keyvalue.length) {
free(*crypto);