(krb5_crypto_overhead): return static overhead of encryption.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20683 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2007-05-16 18:28:27 +00:00
parent 88bbe318c5
commit 5e5c20fe90

View File

@@ -3171,8 +3171,8 @@ decrypt_internal_derived(krb5_context context,
checksum_sz = CHECKSUMSIZE(et->keyed_checksum); checksum_sz = CHECKSUMSIZE(et->keyed_checksum);
if (len < checksum_sz) { if (len < checksum_sz) {
krb5_clear_error_string (context); krb5_set_error_string(context, "Encrypted data shorter then checksum");
return EINVAL; /* XXX - better error code? */ return KRB5_BAD_MSIZE;
} }
if (((len - checksum_sz) % et->padsize) != 0) { if (((len - checksum_sz) % et->padsize) != 0) {
@@ -3891,6 +3891,50 @@ krb5_get_wrapped_length (krb5_context context,
return wrapped_length (context, crypto, data_len); return wrapped_length (context, crypto, data_len);
} }
/*
* Return the size of an encrypted packet of length `data_len'
*/
static size_t
crypto_overhead (krb5_context context,
krb5_crypto crypto)
{
struct encryption_type *et = crypto->et;
size_t res;
res = CHECKSUMSIZE(et->checksum);
res += et->confoundersize;
if (et->padsize > 1)
res += et->padsize;
return res;
}
static size_t
crypto_overhead_dervied (krb5_context context,
krb5_crypto crypto)
{
struct encryption_type *et = crypto->et;
size_t res;
if (et->keyed_checksum)
res = CHECKSUMSIZE(et->keyed_checksum);
else
res = CHECKSUMSIZE(et->checksum);
res += et->confoundersize;
if (et->padsize > 1)
res += et->padsize;
return res;
}
size_t
krb5_crypto_overhead (krb5_context context, krb5_crypto crypto)
{
if (derived_crypto (context, crypto))
return crypto_overhead_dervied (context, crypto);
else
return crypto_overhead (context, crypto);
}
krb5_error_code KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_FUNCTION
krb5_random_to_key(krb5_context context, krb5_random_to_key(krb5_context context,
krb5_enctype type, krb5_enctype type,