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_key_data *,
|
||||||
struct _krb5_encryption_type *);
|
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);
|
struct _krb5_encryption_type *et = _krb5_find_enctype(type);
|
||||||
if(et == NULL) {
|
if(et == NULL) {
|
||||||
krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP,
|
return _krb5_unsupported_enctype (context, type);
|
||||||
N_("encryption type %d not supported", ""),
|
|
||||||
type);
|
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
|
||||||
}
|
}
|
||||||
*keysize = et->keytype->size;
|
*keysize = et->keytype->size;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -78,10 +78,7 @@ krb5_enctype_keybits(krb5_context context,
|
|||||||
{
|
{
|
||||||
struct _krb5_encryption_type *et = _krb5_find_enctype(type);
|
struct _krb5_encryption_type *et = _krb5_find_enctype(type);
|
||||||
if(et == NULL) {
|
if(et == NULL) {
|
||||||
krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP,
|
return _krb5_unsupported_enctype (context, type);
|
||||||
"encryption type %d not supported",
|
|
||||||
type);
|
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
|
||||||
}
|
}
|
||||||
*keybits = et->keytype->bits;
|
*keybits = et->keytype->bits;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -95,10 +92,7 @@ krb5_generate_random_keyblock(krb5_context context,
|
|||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
struct _krb5_encryption_type *et = _krb5_find_enctype(type);
|
struct _krb5_encryption_type *et = _krb5_find_enctype(type);
|
||||||
if(et == NULL) {
|
if(et == NULL) {
|
||||||
krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP,
|
return _krb5_unsupported_enctype (context, type);
|
||||||
N_("encryption type %d not supported", ""),
|
|
||||||
type);
|
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
|
||||||
}
|
}
|
||||||
ret = krb5_data_alloc(&key->keyvalue, et->keytype->size);
|
ret = krb5_data_alloc(&key->keyvalue, et->keytype->size);
|
||||||
if(ret)
|
if(ret)
|
||||||
@@ -121,10 +115,8 @@ _key_schedule(krb5_context context,
|
|||||||
struct _krb5_key_type *kt;
|
struct _krb5_key_type *kt;
|
||||||
|
|
||||||
if (et == NULL) {
|
if (et == NULL) {
|
||||||
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
|
return _krb5_unsupported_enctype (context,
|
||||||
N_("encryption type %d not supported", ""),
|
key->key->keytype);
|
||||||
key->key->keytype);
|
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kt = et->keytype;
|
kt = et->keytype;
|
||||||
@@ -684,10 +676,7 @@ krb5_enctype_to_keytype(krb5_context context,
|
|||||||
{
|
{
|
||||||
struct _krb5_encryption_type *e = _krb5_find_enctype(etype);
|
struct _krb5_encryption_type *e = _krb5_find_enctype(etype);
|
||||||
if(e == NULL) {
|
if(e == NULL) {
|
||||||
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
|
return _krb5_unsupported_enctype (context, etype);
|
||||||
N_("encryption type %d not supported", ""),
|
|
||||||
etype);
|
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
|
||||||
}
|
}
|
||||||
*keytype = e->keytype->type; /* XXX */
|
*keytype = e->keytype->type; /* XXX */
|
||||||
return 0;
|
return 0;
|
||||||
@@ -713,10 +702,7 @@ krb5_enctype_valid(krb5_context context,
|
|||||||
if (context == NULL)
|
if (context == NULL)
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
return KRB5_PROG_ETYPE_NOSUPP;
|
||||||
if(e == NULL) {
|
if(e == NULL) {
|
||||||
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
|
return _krb5_unsupported_enctype (context, etype);
|
||||||
N_("encryption type %d not supported", ""),
|
|
||||||
etype);
|
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
|
||||||
}
|
}
|
||||||
/* Must be (e->flags & F_DISABLED) */
|
/* Must be (e->flags & F_DISABLED) */
|
||||||
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
|
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
|
||||||
@@ -1954,10 +1940,7 @@ krb5_derive_key(krb5_context context,
|
|||||||
|
|
||||||
et = _krb5_find_enctype (etype);
|
et = _krb5_find_enctype (etype);
|
||||||
if (et == NULL) {
|
if (et == NULL) {
|
||||||
krb5_set_error_message(context, KRB5_PROG_ETYPE_NOSUPP,
|
return _krb5_unsupported_enctype (context, etype);
|
||||||
N_("encryption type %d not supported", ""),
|
|
||||||
etype);
|
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = krb5_copy_keyblock(context, key, &d.key);
|
ret = krb5_copy_keyblock(context, key, &d.key);
|
||||||
@@ -1972,6 +1955,32 @@ krb5_derive_key(krb5_context context,
|
|||||||
return ret;
|
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
|
static krb5_error_code
|
||||||
_get_derived_key(krb5_context context,
|
_get_derived_key(krb5_context context,
|
||||||
krb5_crypto crypto,
|
krb5_crypto crypto,
|
||||||
@@ -2035,10 +2044,7 @@ krb5_crypto_init(krb5_context context,
|
|||||||
if((*crypto)->et == NULL || ((*crypto)->et->flags & F_DISABLED)) {
|
if((*crypto)->et == NULL || ((*crypto)->et->flags & F_DISABLED)) {
|
||||||
free(*crypto);
|
free(*crypto);
|
||||||
*crypto = NULL;
|
*crypto = NULL;
|
||||||
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
|
return _krb5_unsupported_enctype (context, etype);
|
||||||
N_("encryption type %d not supported", ""),
|
|
||||||
etype);
|
|
||||||
return KRB5_PROG_ETYPE_NOSUPP;
|
|
||||||
}
|
}
|
||||||
if((*crypto)->et->keytype->size != key->keyvalue.length) {
|
if((*crypto)->et->keytype->size != key->keyvalue.length) {
|
||||||
free(*crypto);
|
free(*crypto);
|
||||||
|
Reference in New Issue
Block a user