From 60ac58b5130b6ff110e9aeb569c29eeb20823840 Mon Sep 17 00:00:00 2001 From: Ken Raeburn Date: Tue, 22 Jul 2003 19:09:32 +0000 Subject: 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 --- src/lib/crypto/enc_provider/ChangeLog | 10 ++++++++++ src/lib/crypto/enc_provider/aes.c | 26 ++++---------------------- src/lib/crypto/enc_provider/arcfour.c | 35 ++++++++--------------------------- src/lib/crypto/enc_provider/des.c | 17 ++--------------- src/lib/crypto/enc_provider/des3.c | 17 ++--------------- 5 files changed, 26 insertions(+), 79 deletions(-) (limited to 'src/lib/crypto/enc_provider') 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 + * 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, -- cgit