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:

committed by
Love Hornquist Astrand

parent
d931fd0a22
commit
38df403d45
@@ -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);
|
||||
|
Reference in New Issue
Block a user