diff options
43 files changed, 196 insertions, 235 deletions
diff --git a/src/include/ChangeLog b/src/include/ChangeLog index eb2606dea6..4f8012c3ac 100644 --- a/src/include/ChangeLog +++ b/src/include/ChangeLog @@ -2,6 +2,9 @@ * k5-int.h (krb5int_zap_data, zap): New macros; call memset with volatile cast for now. + (struct krb5_enc_provider, struct krb5_hash_provider, struct + krb5_keyhash_provider): Use numeric values for block size, + key size, hash size, etc, instead of function pointers. 2003-07-21 Alexandra Ellwood <lxs@mit.edu> diff --git a/src/include/k5-int.h b/src/include/k5-int.h index 3c2e382f82..2be8ce5900 100644 --- a/src/include/k5-int.h +++ b/src/include/k5-int.h @@ -565,11 +565,9 @@ krb5int_locate_server (krb5_context, /* new encryption provider api */ struct krb5_enc_provider { - void (*block_size) (size_t *output); - /* keybytes is the input size to make_key; keylength is the output size */ - void (*keysize) (size_t *keybytes, size_t *keylength); + size_t block_size, keybytes, keylength; /* cipher-state == 0 fresh state thrown away at end */ krb5_error_code (*encrypt) (const krb5_keyblock *key, @@ -592,9 +590,7 @@ struct krb5_enc_provider { }; struct krb5_hash_provider { - void (*hash_size) (size_t *output); - - void (*block_size) (size_t *output); + size_t hashsize, blocksize; /* this takes multiple inputs to avoid lots of copying. */ krb5_error_code (*hash) (unsigned int icount, const krb5_data *input, @@ -602,7 +598,7 @@ struct krb5_hash_provider { }; struct krb5_keyhash_provider { - void (*hash_size) (size_t *output); + size_t hashsize; krb5_error_code (*hash) (const krb5_keyblock *key, krb5_keyusage keyusage, diff --git a/src/lib/crypto/ChangeLog b/src/lib/crypto/ChangeLog index a1f135c09b..e02d9790e2 100644 --- a/src/lib/crypto/ChangeLog +++ b/src/lib/crypto/ChangeLog @@ -1,4 +1,17 @@ -2003-07-13 Kenneth Raeburn <raeburn@mit.edu> +2003-07-22 Ken Raeburn <raeburn@mit.edu> + + * block_size.c (krb5_c_block_size): Read new numeric fields for + key/block/hash sizes instead of calling functions. + * checksum_length.c (krb5_c_checksum_length): Likewise. + * combine_keys.c (krb5int_c_combine_keys, dr): Likewise. + * hmac.c (krb5_hmac): Likewise. + * make_checksum.c (krb5_c_make_checksum): Likewise. + * make_random_key.c (krb5_c_make_random_key): Likewise. + * pbkdf2.c (hmac1): Likewise. + * string_to_key.c (krb5_c_string_to_key_with_params): Likewise. + * t_hmac.c (hmac1): Likewise. + +2003-07-13 Ken Raeburn <raeburn@mit.edu> * pbkdf2.c (foo): Never call com_err. diff --git a/src/lib/crypto/arcfour/ChangeLog b/src/lib/crypto/arcfour/ChangeLog index 3a536e30c9..3f901cbcfe 100644 --- a/src/lib/crypto/arcfour/ChangeLog +++ b/src/lib/crypto/arcfour/ChangeLog @@ -1,3 +1,9 @@ +2003-07-22 Ken Raeburn <raeburn@mit.edu> + + * arcfour.c (krb5_arcfour_encrypt_length, krb5_arcfour_encrypt, + krb5_arcfour_decrypt): Use new numeric fields for block/hash/key + sizes instead of calling functions. + 2003-07-17 Ken Raeburn <raeburn@mit.edu> * Makefile.in (LIBNAME) [##WIN16##]: Don't define. diff --git a/src/lib/crypto/arcfour/arcfour.c b/src/lib/crypto/arcfour/arcfour.c index a6759700a9..67e0f91894 100644 --- a/src/lib/crypto/arcfour/arcfour.c +++ b/src/lib/crypto/arcfour/arcfour.c @@ -19,9 +19,8 @@ krb5_arcfour_encrypt_length(enc, hash, inputlen, length) { size_t blocksize, hashsize; - (*(enc->block_size))(&blocksize); - (*(hash->hash_size))(&hashsize); - + blocksize = enc->block_size; + hashsize = hash->hashsize; /* checksum + (confounder + inputlen, in even blocksize) */ *length = hashsize + krb5_roundup(8 + inputlen, blocksize); @@ -78,9 +77,10 @@ krb5_arcfour_encrypt(enc, hash, key, usage, ivec, input, output) size_t keylength, keybytes, blocksize, hashsize; krb5_error_code ret; - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); - (*(hash->hash_size))(&hashsize); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; + hashsize = hash->hashsize; d1.length=keybytes; d1.data=malloc(d1.length); @@ -206,9 +206,10 @@ krb5_arcfour_decrypt(enc, hash, key, usage, ivec, input, output) size_t keybytes, keylength, hashsize, blocksize; krb5_error_code ret; - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); - (*(hash->hash_size))(&hashsize); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; + hashsize = hash->hashsize; d1.length=keybytes; d1.data=malloc(d1.length); diff --git a/src/lib/crypto/block_size.c b/src/lib/crypto/block_size.c index c759ad8b95..021f3819be 100644 --- a/src/lib/crypto/block_size.c +++ b/src/lib/crypto/block_size.c @@ -43,7 +43,7 @@ krb5_c_block_size(context, enctype, blocksize) if (i == krb5_enctypes_length) return(KRB5_BAD_ENCTYPE); - (*(krb5_enctypes_list[i].enc->block_size))(blocksize); + *blocksize = krb5_enctypes_list[i].enc->block_size; return(0); } diff --git a/src/lib/crypto/checksum_length.c b/src/lib/crypto/checksum_length.c index f3886f4a97..4a0294c5d5 100644 --- a/src/lib/crypto/checksum_length.c +++ b/src/lib/crypto/checksum_length.c @@ -44,11 +44,11 @@ krb5_c_checksum_length(context, cksumtype, length) return(KRB5_BAD_ENCTYPE); if (krb5_cksumtypes_list[i].keyhash) - (*(krb5_cksumtypes_list[i].keyhash->hash_size))(length); + *length = krb5_cksumtypes_list[i].keyhash->hashsize; else if (krb5_cksumtypes_list[i].trunc_size) *length = krb5_cksumtypes_list[i].trunc_size; else - (*(krb5_cksumtypes_list[i].hash->hash_size))(length); + *length = krb5_cksumtypes_list[i].hash->hashsize; return(0); } diff --git a/src/lib/crypto/combine_keys.c b/src/lib/crypto/combine_keys.c index 9aad8f5432..3d97651640 100644 --- a/src/lib/crypto/combine_keys.c +++ b/src/lib/crypto/combine_keys.c @@ -100,7 +100,8 @@ krb5_error_code krb5int_c_combine_keys enc = krb5_enctypes_list[i].enc; - (*(enc->keysize))(&keybytes, &keylength); + keybytes = enc->keybytes; + keylength = enc->keylength; /* * Allocate and set up buffers @@ -290,8 +291,9 @@ static krb5_error_code dr unsigned char *inblockdata, *outblockdata; krb5_data inblock, outblock; - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; /* allocate and set up buffers */ diff --git a/src/lib/crypto/dk/ChangeLog b/src/lib/crypto/dk/ChangeLog index 4633675eb3..30107a2180 100644 --- a/src/lib/crypto/dk/ChangeLog +++ b/src/lib/crypto/dk/ChangeLog @@ -1,3 +1,16 @@ +2003-07-22 Ken Raeburn <raeburn@mit.edu> + + * checksum.c (krb5_dk_make_checksum, krb5_marc_dk_make_checksum): + Use new numeric fields for key/bolck sizes instead of calling + functions. + * derive.c (krb5_derive_key, krb5_derive_random): Likewise. + * dk_decrypt.c (krb5_dk_decrypt_maybe_trunc_hmac, + krb5_marc_dk_decrypt): Likewise. + * dk_encrypt.c (krb5_dk_encrypt_length, krb5_dk_encrypt, + krb5int_aes_encrypt_length, trunc_hmac, krb5int_aes_dk_encrypt, + krb5_marc_dk_encrypt_length, krb5_mark_dk_encrypt): Likewise. + * stringtokey.c (krb5int_dk_string_to_key): Likewise. + 2003-07-17 Ken Raeburn <raeburn@mit.edu> * Makefile.in (LIBNAME) [##WIN16##]: Don't define. diff --git a/src/lib/crypto/dk/checksum.c b/src/lib/crypto/dk/checksum.c index 1769b5cce6..ffdb4e7cea 100644 --- a/src/lib/crypto/dk/checksum.c +++ b/src/lib/crypto/dk/checksum.c @@ -59,8 +59,9 @@ krb5_dk_make_checksum(hash, key, usage, input, output) /* allocate and set to-be-derived keys */ - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; /* key->length will be tested in enc->encrypt output->length will be tested in krb5_hmac */ @@ -133,8 +134,9 @@ krb5_marc_dk_make_checksum(hash, key, usage, input, output) /* allocate and set to-be-derived keys */ - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; /* key->length will be tested in enc->encrypt output->length will be tested in krb5_hmac */ diff --git a/src/lib/crypto/dk/derive.c b/src/lib/crypto/dk/derive.c index 0aabdc4ed4..6c8ff0bdc3 100644 --- a/src/lib/crypto/dk/derive.c +++ b/src/lib/crypto/dk/derive.c @@ -38,8 +38,9 @@ krb5_derive_key(enc, inkey, outkey, in_constant) unsigned char *inblockdata, *outblockdata, *rawkey; krb5_data inblock, outblock; - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; if ((inkey->length != keylength) || (outkey->length != keylength)) @@ -124,8 +125,9 @@ krb5_derive_random(enc, inkey, outrnd, in_constant) unsigned char *inblockdata, *outblockdata, *rawkey; krb5_data inblock, outblock; - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; if ((inkey->length != keylength) || (outrnd->length != keybytes)) diff --git a/src/lib/crypto/dk/dk_decrypt.c b/src/lib/crypto/dk/dk_decrypt.c index 5f35fa6ace..0c95d40798 100644 --- a/src/lib/crypto/dk/dk_decrypt.c +++ b/src/lib/crypto/dk/dk_decrypt.c @@ -88,9 +88,10 @@ krb5_dk_decrypt_maybe_trunc_hmac(enc, hash, key, usage, ivec, input, output, /* allocate and set up ciphertext and to-be-derived keys */ - (*(hash->hash_size))(&hashsize); - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + hashsize = hash->hashsize; + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; if (hmacsize == 0) hmacsize = hashsize; @@ -223,9 +224,10 @@ krb5_marc_dk_decrypt(enc, hash, key, usage, ivec, input, output) /* allocate and set up ciphertext and to-be-derived keys */ - (*(hash->hash_size))(&hashsize); - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + hashsize = hash->hashsize; + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; enclen = input->length - hashsize; diff --git a/src/lib/crypto/dk/dk_encrypt.c b/src/lib/crypto/dk/dk_encrypt.c index 9de05fc02b..32cc509afc 100644 --- a/src/lib/crypto/dk/dk_encrypt.c +++ b/src/lib/crypto/dk/dk_encrypt.c @@ -45,9 +45,8 @@ krb5_dk_encrypt_length(enc, hash, inputlen, length) { size_t blocksize, hashsize; - (*(enc->block_size))(&blocksize); - (*(hash->hash_size))(&hashsize); - + blocksize = enc->block_size; + hashsize = hash->hashsize; *length = krb5_roundup(blocksize+inputlen, blocksize) + hashsize; } @@ -70,8 +69,9 @@ krb5_dk_encrypt(enc, hash, key, usage, ivec, input, output) /* allocate and set up plaintext and to-be-derived keys */ - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; plainlen = krb5_roundup(blocksize+input->length, blocksize); krb5_dk_encrypt_length(enc, hash, input->length, &enclen); @@ -188,7 +188,7 @@ krb5int_aes_encrypt_length(enc, hash, inputlen, length) { size_t blocksize, hashsize; - (*(enc->block_size))(&blocksize); + blocksize = enc->block_size; hashsize = 96 / 8; /* No roundup, since CTS requires no padding once we've hit the @@ -205,7 +205,7 @@ trunc_hmac (const struct krb5_hash_provider *hash, krb5_data tmp; krb5_error_code ret; - (hash->hash_size)(&hashsize); + hashsize = hash->hashsize; if (hashsize < output->length) return KRB5_CRYPTO_INTERNAL; tmp.length = hashsize; @@ -239,8 +239,9 @@ krb5int_aes_dk_encrypt(enc, hash, key, usage, ivec, input, output) /* allocate and set up plaintext and to-be-derived keys */ - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; plainlen = blocksize+input->length; krb5int_aes_encrypt_length(enc, hash, input->length, &enclen); @@ -359,9 +360,8 @@ krb5_marc_dk_encrypt_length(enc, hash, inputlen, length) { size_t blocksize, hashsize; - (*(enc->block_size))(&blocksize); - (*(hash->hash_size))(&hashsize); - + blocksize = enc->block_size; + hashsize = hash->hashsize; *length = krb5_roundup(blocksize+4+inputlen, blocksize) + hashsize; } @@ -384,8 +384,9 @@ krb5_marc_dk_encrypt(enc, hash, key, usage, ivec, input, output) /* allocate and set up plaintext and to-be-derived keys */ - (*(enc->block_size))(&blocksize); - (*(enc->keysize))(&keybytes, &keylength); + blocksize = enc->block_size; + keybytes = enc->keybytes; + keylength = enc->keylength; plainlen = krb5_roundup(blocksize+4+input->length, blocksize); krb5_marc_dk_encrypt_length(enc, hash, input->length, &enclen); diff --git a/src/lib/crypto/dk/stringtokey.c b/src/lib/crypto/dk/stringtokey.c index be13ca4a1e..0e54b849ff 100644 --- a/src/lib/crypto/dk/stringtokey.c +++ b/src/lib/crypto/dk/stringtokey.c @@ -42,7 +42,8 @@ krb5int_dk_string_to_key(const struct krb5_enc_provider *enc, /* key->length is checked by krb5_derive_key */ - (*(enc->keysize))(&keybytes, &keylength); + keybytes = enc->keybytes; + keylength = enc->keylength; concatlen = string->length+(salt?salt->length:0); diff --git a/src/lib/crypto/enc_provider/ChangeLog b/src/lib/crypto/enc_provider/ChangeLog index bd0a5febec..89bf6dec9b 100644 --- a/src/lib/crypto/enc_provider/ChangeLog +++ b/src/lib/crypto/enc_provider/ChangeLog @@ -1,5 +1,15 @@ 2003-07-22 Ken Raeburn <raeburn@mit.edu> + * aes.c (aes_block_size, aes128_keysize, aes256_keysize): + Deleted. + (krb5int_enc_aes128, krb5int_enc_aes256): Updated. + * arcfour.c (k5_arcfour_blocksize, k5_arcfour_keysize): Deleted. + (krb5int_enc_arcfour): Updated. + * des.c (k5_des_block_size, k5_des_keysize): Deleted. + (krb5int_enc_des): Updated. + * des3.c (k5_des3_block_size, k5_des3_keysize): Deleted. + (krb5int_enc_des3): Updated. + * des3.c (validate_and_schedule): Split out from old k5_des3_docrypt. (k5_des3_encrypt, k5_des3_decrypt): Call it, and diff --git a/src/lib/crypto/enc_provider/aes.c b/src/lib/crypto/enc_provider/aes.c index 013a688eb1..c6b77f0ecf 100644 --- a/src/lib/crypto/enc_provider/aes.c +++ b/src/lib/crypto/enc_provider/aes.c @@ -2,24 +2,6 @@ #include "enc_provider.h" #include "aes.h" -static void -aes_block_size(size_t *blocksize) -{ - *blocksize = 16; -} - -static void -aes128_keysize(size_t *keybytes, size_t *keylength) -{ - *keybytes = *keylength = 16; -} - -static void -aes256_keysize(size_t *keybytes, size_t *keylength) -{ - *keybytes = *keylength = 32; -} - #if 0 aes_rval aes_blk_len(unsigned int blen, aes_ctx cx[1]); aes_rval aes_enc_key(const unsigned char in_key[], unsigned int klen, aes_ctx cx[1]); @@ -199,8 +181,8 @@ krb5int_aes_init_state (const krb5_keyblock *key, krb5_keyusage usage, } const struct krb5_enc_provider krb5int_enc_aes128 = { - aes_block_size, - aes128_keysize, + 16, + 16, 16, krb5int_aes_encrypt, krb5int_aes_decrypt, k5_aes_make_key, @@ -209,8 +191,8 @@ const struct krb5_enc_provider krb5int_enc_aes128 = { }; const struct krb5_enc_provider krb5int_enc_aes256 = { - aes_block_size, - aes256_keysize, + 16, + 32, 32, krb5int_aes_encrypt, krb5int_aes_decrypt, k5_aes_make_key, diff --git a/src/lib/crypto/enc_provider/arcfour.c b/src/lib/crypto/enc_provider/arcfour.c index bfdc193724..d3a600b299 100644 --- a/src/lib/crypto/enc_provider/arcfour.c +++ b/src/lib/crypto/enc_provider/arcfour.c @@ -29,13 +29,6 @@ static krb5_error_code k5_arcfour_docrypt(const krb5_keyblock *, const krb5_data *, const krb5_data *, krb5_data *); - -/* The blocksize for the enctype */ -static void k5_arcfour_blocksize(size_t *); - -/* keysize for the enctype (number of bytes, and length of key (parity/etc) */ -static void k5_arcfour_keysize(size_t *, size_t *); - /* from a random bitstrem, construct a key */ static krb5_error_code k5_arcfour_make_key(const krb5_data *, krb5_keyblock *); @@ -121,24 +114,6 @@ k5_arcfour_init(ArcfourContext *ctx, const unsigned char *key, return 0; } -/* This seems to work... although I am not sure what the implications are - in other places in the kerberos library */ -static void -k5_arcfour_blocksize(size_t *blocksize) -{ - *blocksize = 1; -} - -/* Keysize is arbitrary in arcfour, but the constraints of the system, and - to attempt to work with the MSFT system forces us to 16byte/128bit. - Since there is no parity in the key, the byte and length are the same. -*/ -static void -k5_arcfour_keysize(size_t *keybytes, size_t *keylength) -{ - *keybytes = 16; - *keylength = 16; -} /* The workhorse of the arcfour system, this impliments the cipher */ static krb5_error_code @@ -224,8 +199,14 @@ k5_arcfour_init_state (const krb5_keyblock *key, we just call "docrypt" directly */ const struct krb5_enc_provider krb5int_enc_arcfour = { - k5_arcfour_blocksize, - k5_arcfour_keysize, + /* This seems to work... although I am not sure what the + implications are in other places in the kerberos library */ + 1, + /* Keysize is arbitrary in arcfour, but the constraints of the + system, and to attempt to work with the MSFT system forces us + to 16byte/128bit. Since there is no parity in the key, the + byte and length are the same. */ + 16, 16, k5_arcfour_docrypt, k5_arcfour_docrypt, k5_arcfour_make_key, diff --git a/src/lib/crypto/enc_provider/des.c b/src/lib/crypto/enc_provider/des.c index e9ecb72e1e..70082bc245 100644 --- a/src/lib/crypto/enc_provider/des.c +++ b/src/lib/crypto/enc_provider/des.c @@ -30,19 +30,6 @@ static const mit_des_cblock mit_des_zeroblock[8] /* = all zero */; -static void -k5_des_block_size(size_t *blocksize) -{ - *blocksize = 8; -} - -static void -k5_des_keysize(size_t *keybytes, size_t *keylength) -{ - *keybytes = 7; - *keylength = 8; -} - static krb5_error_code k5_des_docrypt(const krb5_keyblock *key, const krb5_data *ivec, const krb5_data *input, krb5_data *output, int enc) @@ -122,8 +109,8 @@ k5_des_make_key(const krb5_data *randombits, krb5_keyblock *key) } const struct krb5_enc_provider krb5int_enc_des = { - k5_des_block_size, - k5_des_keysize, + 8, + 7, 8, k5_des_encrypt, k5_des_decrypt, k5_des_make_key, diff --git a/src/lib/crypto/enc_provider/des3.c b/src/lib/crypto/enc_provider/des3.c index 54fbb69afc..048a220e60 100644 --- a/src/lib/crypto/enc_provider/des3.c +++ b/src/lib/crypto/enc_provider/des3.c @@ -29,19 +29,6 @@ static const mit_des_cblock mit_des_zeroblock[8] /* = all zero */; -static void -k5_des3_block_size(size_t *blocksize) -{ - *blocksize = 8; -} - -static void -k5_des3_keysize(size_t *keybytes, size_t *keylength) -{ - *keybytes = 21; - *keylength = 24; -} - static krb5_error_code validate_and_schedule(const krb5_keyblock *key, const krb5_data *ivec, const krb5_data *input, const krb5_data *output, @@ -145,8 +132,8 @@ k5_des3_make_key(const krb5_data *randombits, krb5_keyblock *key) } const struct krb5_enc_provider krb5int_enc_des3 = { - k5_des3_block_size, - k5_des3_keysize, + 8, + 21, 24, k5_des3_encrypt, k5_des3_decrypt, k5_des3_make_key, diff --git a/src/lib/crypto/hash_provider/ChangeLog b/src/lib/crypto/hash_provider/ChangeLog index 974fa34037..d1fa657331 100644 --- a/src/lib/crypto/hash_provider/ChangeLog +++ b/src/lib/crypto/hash_provider/ChangeLog @@ -1,3 +1,15 @@ +2003-07-22 Ken Raeburn <raeburn@mit.edu> + + * hash_crc32.c (k5_crc32_hash_size, k5_crc32_block_size): + Deleted. + (krb5int_hash_crc32): Updated. + * hash_md4.c (k5_md4_hash_size, k5_md4_block_size): Deleted. + (krb5int_hash_md4): Updated. + * hash_md5.c (k5_md5_hash_size, k5_md5_block_size): Deleted. + (krb5int_hash_md5): Updated. + * hash_sha1.c (k5_sha1_hash_size, k5_sha1_block_size): Deleted. + (krb5int_hash_sha1): Updated. + 2003-07-17 Ken Raeburn <raeburn@mit.edu> * Makefile.in (LIBNAME) [##WIN16##]: Don't define. diff --git a/src/lib/crypto/hash_provider/hash_crc32.c b/src/lib/crypto/hash_provider/hash_crc32.c index 7c06fa3a6b..b48b3b3634 100644 --- a/src/lib/crypto/hash_provider/hash_crc32.c +++ b/src/lib/crypto/hash_provider/hash_crc32.c @@ -28,18 +28,6 @@ #include "crc-32.h" #include "hash_provider.h" -static void -k5_crc32_hash_size(size_t *output) -{ - *output = CRC32_CKSUM_LENGTH; -} - -static void -k5_crc32_block_size(size_t *output) -{ - *output = 1; -} - static krb5_error_code k5_crc32_hash(unsigned int icount, const krb5_data *input, krb5_data *output) @@ -65,7 +53,7 @@ k5_crc32_hash(unsigned int icount, const krb5_data *input, } const struct krb5_hash_provider krb5int_hash_crc32 = { - k5_crc32_hash_size, - k5_crc32_block_size, + CRC32_CKSUM_LENGTH, + 1, k5_crc32_hash }; diff --git a/src/lib/crypto/hash_provider/hash_md4.c b/src/lib/crypto/hash_provider/hash_md4.c index 5c9d6b1538..97487923b2 100644 --- a/src/lib/crypto/hash_provider/hash_md4.c +++ b/src/lib/crypto/hash_provider/hash_md4.c @@ -28,18 +28,6 @@ #include "rsa-md4.h" #include "hash_provider.h" -static void -k5_md4_hash_size(size_t *output) -{ - *output = RSA_MD4_CKSUM_LENGTH; -} - -static void -k5_md4_block_size(size_t *output) -{ - *output = 64; -} - static krb5_error_code k5_md4_hash(unsigned int icount, const krb5_data *input, krb5_data *output) @@ -61,7 +49,7 @@ k5_md4_hash(unsigned int icount, const krb5_data *input, } const struct krb5_hash_provider krb5int_hash_md4 = { - k5_md4_hash_size, - k5_md4_block_size, + RSA_MD4_CKSUM_LENGTH, + 64, k5_md4_hash }; diff --git a/src/lib/crypto/hash_provider/hash_md5.c b/src/lib/crypto/hash_provider/hash_md5.c index c08755fb50..4087293376 100644 --- a/src/lib/crypto/hash_provider/hash_md5.c +++ b/src/lib/crypto/hash_provider/hash_md5.c @@ -28,18 +28,6 @@ #include "rsa-md5.h" #include "hash_provider.h" -static void -k5_md5_hash_size(size_t *output) -{ - *output = RSA_MD5_CKSUM_LENGTH; -} - -static void -k5_md5_block_size(size_t *output) -{ - *output = 64; -} - static krb5_error_code k5_md5_hash(unsigned int icount, const krb5_data *input, krb5_data *output) @@ -61,7 +49,7 @@ k5_md5_hash(unsigned int icount, const krb5_data *input, } const struct krb5_hash_provider krb5int_hash_md5 = { - k5_md5_hash_size, - k5_md5_block_size, + RSA_MD5_CKSUM_LENGTH, + 64, k5_md5_hash }; diff --git a/src/lib/crypto/hash_provider/hash_sha1.c b/src/lib/crypto/hash_provider/hash_sha1.c index 8b7166c209..2ee56ad21c 100644 --- a/src/lib/crypto/hash_provider/hash_sha1.c +++ b/src/lib/crypto/hash_provider/hash_sha1.c @@ -28,18 +28,6 @@ #include "shs.h" #include "hash_provider.h" -static void -k5_sha1_hash_size(size_t *output) -{ - *output = SHS_DIGESTSIZE; -} - -static void -k5_sha1_block_size(size_t *output) -{ - *output = SHS_DATASIZE; -} - static krb5_error_code k5_sha1_hash(unsigned int icount, const krb5_data *input, krb5_data *output) @@ -66,7 +54,7 @@ k5_sha1_hash(unsigned int icount, const krb5_data *input, } const struct krb5_hash_provider krb5int_hash_sha1 = { - k5_sha1_hash_size, - k5_sha1_block_size, + SHS_DIGESTSIZE, + SHS_DATASIZE, k5_sha1_hash }; diff --git a/src/lib/crypto/hmac.c b/src/lib/crypto/hmac.c index 763744c0f8..ec39520960 100644 --- a/src/lib/crypto/hmac.c +++ b/src/lib/crypto/hmac.c @@ -52,8 +52,8 @@ krb5_hmac(hash, key, icount, input, output) krb5_data *hashin, hashout; krb5_error_code ret; - (*(hash->hash_size))(&hashsize); - (*(hash->block_size))(&blocksize); + hashsize = hash->hashsize; + blocksize = hash->blocksize; if (key->length > blocksize) return(KRB5_CRYPTO_INTERNAL); diff --git a/src/lib/crypto/keyhash_provider/ChangeLog b/src/lib/crypto/keyhash_provider/ChangeLog index 3667e0f05f..6f0931f1db 100644 --- a/src/lib/crypto/keyhash_provider/ChangeLog +++ b/src/lib/crypto/keyhash_provider/ChangeLog @@ -1,3 +1,16 @@ +2003-07-22 Ken Raeburn <raeburn@mit.edu> + + * descbc.c (k5_descbc_hash_size): Deleted. + (krb5int_keyhash_descbc): Updated. + * hmac_md5.c (k5_hmac_md5_hash_size): Deleted. + (krb5int_keyhash_hmac_md5): Updated. + * k5_md4des.c (k5_md4des_hash_size): Deleted. + (krb5int_keyhash_md4des): Updated. + * k5_md5des.c (k5_md5des_hash_size): Deleted. + (krb5int_keyhash_md5des): Updated. + * t_cksum.c (main): Use the hashsize field instead of calling a + function. + 2003-07-17 Ken Raeburn <raeburn@mit.edu> * Makefile.in (LIBNAME) [##WIN16##]: Don't define. diff --git a/src/lib/crypto/keyhash_provider/descbc.c b/src/lib/crypto/keyhash_provider/descbc.c index 9682fbb3b0..e13b39b853 100644 --- a/src/lib/crypto/keyhash_provider/descbc.c +++ b/src/lib/crypto/keyhash_provider/descbc.c @@ -30,12 +30,6 @@ static const mit_des_cblock mit_des_zeroblock[8] /* = all zero */; -static void -k5_descbc_hash_size(size_t *output) -{ - *output = 8; -} - static krb5_error_code k5_descbc_hash(const krb5_keyblock *key, krb5_keyusage usage, const krb5_data *ivec, const krb5_data *input, krb5_data *output) @@ -72,7 +66,7 @@ k5_descbc_hash(const krb5_keyblock *key, krb5_keyusage usage, const krb5_data *i } const struct krb5_keyhash_provider krb5int_keyhash_descbc = { - k5_descbc_hash_size, + 8, k5_descbc_hash, NULL }; diff --git a/src/lib/crypto/keyhash_provider/hmac_md5.c b/src/lib/crypto/keyhash_provider/hmac_md5.c index 08808ff911..a2472a8329 100644 --- a/src/lib/crypto/keyhash_provider/hmac_md5.c +++ b/src/lib/crypto/keyhash_provider/hmac_md5.c @@ -36,12 +36,6 @@ #include "rsa-md5.h" #include "hash_provider.h" -static void -k5_hmac_md5_hash_size (size_t *output) -{ - *output = 16; -} - static krb5_error_code k5_hmac_md5_hash (const krb5_keyblock *key, krb5_keyusage usage, const krb5_data *iv, @@ -95,7 +89,7 @@ k5_hmac_md5_hash (const krb5_keyblock *key, krb5_keyusage usage, const struct krb5_keyhash_provider krb5int_keyhash_hmac_md5 = { - k5_hmac_md5_hash_size, + 16, k5_hmac_md5_hash, NULL /*checksum again*/ }; diff --git a/src/lib/crypto/keyhash_provider/k5_md4des.c b/src/lib/crypto/keyhash_provider/k5_md4des.c index 5ff50bfdfa..d31eb54a85 100644 --- a/src/lib/crypto/keyhash_provider/k5_md4des.c +++ b/src/lib/crypto/keyhash_provider/k5_md4des.c @@ -36,12 +36,6 @@ static const mit_des_cblock mit_des_zeroblock[8] /* = all zero */; -static void -k5_md4des_hash_size(size_t *output) -{ - *output = CONFLENGTH+RSA_MD4_CKSUM_LENGTH; -} - /* des-cbc(xorkey, conf | rsa-md4(conf | data)) */ /* this could be done in terms of the md4 and des providers, but @@ -192,7 +186,7 @@ k5_md4des_verify(const krb5_keyblock *key, krb5_keyusage usage, } const struct krb5_keyhash_provider krb5int_keyhash_md4des = { - k5_md4des_hash_size, + CONFLENGTH+RSA_MD4_CKSUM_LENGTH, k5_md4des_hash, k5_md4des_verify }; diff --git a/src/lib/crypto/keyhash_provider/k5_md5des.c b/src/lib/crypto/keyhash_provider/k5_md5des.c index 2a2bef38d4..1735310836 100644 --- a/src/lib/crypto/keyhash_provider/k5_md5des.c +++ b/src/lib/crypto/keyhash_provider/k5_md5des.c @@ -36,12 +36,6 @@ static const mit_des_cblock mit_des_zeroblock[8] /* = all zero */; -static void -k5_md5des_hash_size(size_t *output) -{ - *output = CONFLENGTH+RSA_MD5_CKSUM_LENGTH; -} - /* des-cbc(xorkey, conf | rsa-md5(conf | data)) */ /* this could be done in terms of the md5 and des providers, but @@ -189,7 +183,7 @@ k5_md5des_verify(const krb5_keyblock *key, krb5_keyusage usage, const krb5_data } const struct krb5_keyhash_provider krb5int_keyhash_md5des = { - k5_md5des_hash_size, + CONFLENGTH+RSA_MD5_CKSUM_LENGTH, k5_md5des_hash, k5_md5des_verify }; diff --git a/src/lib/crypto/keyhash_provider/t_cksum.c b/src/lib/crypto/keyhash_provider/t_cksum.c index 80b820afe9..98187f7f16 100644 --- a/src/lib/crypto/keyhash_provider/t_cksum.c +++ b/src/lib/crypto/keyhash_provider/t_cksum.c @@ -89,7 +89,7 @@ main(argc, argv) keyblock.length = sizeof(testkey); keyblock.contents = testkey; - (*(khp.hash_size))(&length); + length = khp.hashsize; newstyle_checksum.length = length; diff --git a/src/lib/crypto/make_checksum.c b/src/lib/crypto/make_checksum.c index 8a384e710a..9d272eb796 100644 --- a/src/lib/crypto/make_checksum.c +++ b/src/lib/crypto/make_checksum.c @@ -52,9 +52,9 @@ krb5_c_make_checksum(context, cksumtype, key, usage, input, cksum) return(KRB5_BAD_ENCTYPE); if (krb5_cksumtypes_list[i].keyhash) - (*(krb5_cksumtypes_list[i].keyhash->hash_size))(&cksumlen); + cksumlen = krb5_cksumtypes_list[i].keyhash->hashsize; else - (*(krb5_cksumtypes_list[i].hash->hash_size))(&cksumlen); + cksumlen = krb5_cksumtypes_list[i].hash->hashsize; cksum->length = cksumlen; diff --git a/src/lib/crypto/make_random_key.c b/src/lib/crypto/make_random_key.c index d5e4fcb7dc..c0c0debde4 100644 --- a/src/lib/crypto/make_random_key.c +++ b/src/lib/crypto/make_random_key.c @@ -50,7 +50,8 @@ krb5_c_make_random_key(context, enctype, random_key) enc = krb5_enctypes_list[i].enc; - (*(enc->keysize))(&keybytes, &keylength); + keybytes = enc->keybytes; + keylength = enc->keylength; if ((bytes = (unsigned char *) malloc(keybytes)) == NULL) return(ENOMEM); diff --git a/src/lib/crypto/old/ChangeLog b/src/lib/crypto/old/ChangeLog index 1f58bf9837..126b2f1ad4 100644 --- a/src/lib/crypto/old/ChangeLog +++ b/src/lib/crypto/old/ChangeLog @@ -1,3 +1,10 @@ +2003-07-22 Ken Raeburn <raeburn@mit.edu> + + * old_decrypt.c (krb5_old_decrypt): Use block_size and hashsize + fields instead of calling functions. + * old_encrypt.c (krb5_old_encrypt_length, krb5_old_encrypt): + Likewise. + 2003-07-17 Ken Raeburn <raeburn@mit.edu> * Makefile.in (LIBNAME) [##WIN16##]: Don't define. diff --git a/src/lib/crypto/old/old_decrypt.c b/src/lib/crypto/old/old_decrypt.c index a43090c27d..cfbbd7272a 100644 --- a/src/lib/crypto/old/old_decrypt.c +++ b/src/lib/crypto/old/old_decrypt.c @@ -42,8 +42,8 @@ krb5_old_decrypt(const struct krb5_enc_provider *enc, krb5_data output, cksum, crcivec; int alloced; - (*(enc->block_size))(&blocksize); - (*(hash->hash_size))(&hashsize); + blocksize = enc->block_size; + hashsize = hash->hashsize; plainsize = input->length - blocksize - hashsize; diff --git a/src/lib/crypto/old/old_encrypt.c b/src/lib/crypto/old/old_encrypt.c index 0f7ea8d0cd..98bd109e0e 100644 --- a/src/lib/crypto/old/old_encrypt.c +++ b/src/lib/crypto/old/old_encrypt.c @@ -35,8 +35,8 @@ krb5_old_encrypt_length(const struct krb5_enc_provider *enc, { size_t blocksize, hashsize; - (*(enc->block_size))(&blocksize); - (*(hash->hash_size))(&hashsize); + blocksize = enc->block_size; + hashsize = hash->hashsize; *length = krb5_roundup(blocksize+hashsize+inputlen, blocksize); } @@ -55,8 +55,8 @@ krb5_old_encrypt(const struct krb5_enc_provider *enc, krb5_data datain, crcivec; int real_ivec; - (*(enc->block_size))(&blocksize); - (*(hash->hash_size))(&hashsize); + blocksize = enc->block_size; + hashsize = hash->hashsize; krb5_old_encrypt_length(enc, hash, input->length, &enclen); diff --git a/src/lib/crypto/pbkdf2.c b/src/lib/crypto/pbkdf2.c index ce9f215fa6..d7aba026ea 100644 --- a/src/lib/crypto/pbkdf2.c +++ b/src/lib/crypto/pbkdf2.c @@ -221,8 +221,8 @@ static krb5_error_code hmac1(const struct krb5_hash_provider *h, if (debug_hmac) printk(" test key", key); - h->block_size(&blocksize); - h->hash_size(&hashsize); + blocksize = h->blocksize; + hashsize = h->hashsize; if (hashsize > sizeof(tmp)) abort(); if (key->length > blocksize) { diff --git a/src/lib/crypto/raw/ChangeLog b/src/lib/crypto/raw/ChangeLog index 33e6afd8d0..1bd2a019ae 100644 --- a/src/lib/crypto/raw/ChangeLog +++ b/src/lib/crypto/raw/ChangeLog @@ -1,3 +1,8 @@ +2003-07-22 Ken Raeburn <raeburn@mit.edu> + + * raw_encrypt.c (krb5_raw_encrypt_length): Use block_size field + instead of calling a function. + 2003-07-17 Ken Raeburn <raeburn@mit.edu> * Makefile.in (LIBNAME) [##WIN16##]: Don't define. diff --git a/src/lib/crypto/raw/raw_encrypt.c b/src/lib/crypto/raw/raw_encrypt.c index 8505534ec3..97e1bb5ee8 100644 --- a/src/lib/crypto/raw/raw_encrypt.c +++ b/src/lib/crypto/raw/raw_encrypt.c @@ -36,7 +36,7 @@ krb5_raw_encrypt_length(enc, hash, inputlen, length) { size_t blocksize; - (*(enc->block_size))(&blocksize); + blocksize = enc->block_size; *length = krb5_roundup(inputlen, blocksize); } diff --git a/src/lib/crypto/string_to_key.c b/src/lib/crypto/string_to_key.c index 412583185b..27f49aabe7 100644 --- a/src/lib/crypto/string_to_key.c +++ b/src/lib/crypto/string_to_key.c @@ -85,8 +85,8 @@ krb5_c_string_to_key_with_params(context, enctype, string, salt, params, key) } } - - (*(enc->keysize))(&keybytes, &keylength); + keybytes = enc->keybytes; + keylength = enc->keylength; if ((key->contents = (krb5_octet *) malloc(keylength)) == NULL) return(ENOMEM); diff --git a/src/lib/crypto/t_hmac.c b/src/lib/crypto/t_hmac.c index 96c2357a5b..8208eddede 100644 --- a/src/lib/crypto/t_hmac.c +++ b/src/lib/crypto/t_hmac.c @@ -101,8 +101,8 @@ static krb5_error_code hmac1(const struct krb5_hash_provider *h, krb5_error_code err; printk(" test key", key); - h->block_size(&blocksize); - h->hash_size(&hashsize); + blocksize = h->blocksize; + hashsize = h->hashsize; if (hashsize > sizeof(tmp)) abort(); if (key->length > blocksize) { diff --git a/src/lib/crypto/yarrow/ChangeLog b/src/lib/crypto/yarrow/ChangeLog index da6fc5a15a..f64c1a2b5c 100644 --- a/src/lib/crypto/yarrow/ChangeLog +++ b/src/lib/crypto/yarrow/ChangeLog @@ -1,3 +1,8 @@ +2003-07-22 Ken Raeburn <raeburn@mit.edu> + + * ycipher.c (krb5int_yarrow_cipher_init): Use keybytes and + keylength fields instead of calling a function. + 2003-07-17 Ken Raeburn <raeburn@mit.edu> * Makefile.in (LIBNAME) [##WIN16##]: Don't define. diff --git a/src/lib/crypto/yarrow/ycipher.c b/src/lib/crypto/yarrow/ycipher.c index 983f7a2a3a..b763815be9 100644 --- a/src/lib/crypto/yarrow/ycipher.c +++ b/src/lib/crypto/yarrow/ycipher.c @@ -42,7 +42,8 @@ krb5int_yarrow_cipher_init const struct krb5_enc_provider *enc = &yarrow_enc_provider; krb5_error_code ret; krb5_data randombits; - enc->keysize (&keybytes, &keylength); + keybytes = enc->keybytes; + keylength = enc->keylength; assert (keybytes == CIPHER_KEY_SIZE); if (ctx->key.contents) { memset (ctx->key.contents, 0, ctx->key.length); |