diff options
| author | Ken Raeburn <raeburn@mit.edu> | 2003-07-22 19:09:32 +0000 |
|---|---|---|
| committer | Ken Raeburn <raeburn@mit.edu> | 2003-07-22 19:09:32 +0000 |
| commit | 60ac58b5130b6ff110e9aeb569c29eeb20823840 (patch) | |
| tree | 64c1523b7c4e1f5a8e905954cb81623f2c92eac0 /src/lib/crypto/dk | |
| parent | 3610cd5cd67a4f6f9234de36410a75a2902842fe (diff) | |
| download | krb5-60ac58b5130b6ff110e9aeb569c29eeb20823840.tar.gz krb5-60ac58b5130b6ff110e9aeb569c29eeb20823840.tar.xz krb5-60ac58b5130b6ff110e9aeb569c29eeb20823840.zip | |
Change crypto "provider" structures to hold numeric values instead of function
pointers for key sizes, block sizes, etc., when the values are always constant
for each encryption or hash mechanism.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15714 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/crypto/dk')
| -rw-r--r-- | src/lib/crypto/dk/ChangeLog | 13 | ||||
| -rw-r--r-- | src/lib/crypto/dk/checksum.c | 10 | ||||
| -rw-r--r-- | src/lib/crypto/dk/derive.c | 10 | ||||
| -rw-r--r-- | src/lib/crypto/dk/dk_decrypt.c | 14 | ||||
| -rw-r--r-- | src/lib/crypto/dk/dk_encrypt.c | 29 | ||||
| -rw-r--r-- | src/lib/crypto/dk/stringtokey.c | 3 |
6 files changed, 50 insertions, 29 deletions
diff --git a/src/lib/crypto/dk/ChangeLog b/src/lib/crypto/dk/ChangeLog index 4633675eb..30107a218 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 1769b5cce..ffdb4e7ce 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 0aabdc4ed..6c8ff0bdc 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 5f35fa6ac..0c95d4079 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 9de05fc02..32cc509af 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 be13ca4a1..0e54b849f 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); |
