diff options
Diffstat (limited to 'aes-set-encrypt-key.c')
-rw-r--r-- | aes-set-encrypt-key.c | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/aes-set-encrypt-key.c b/aes-set-encrypt-key.c index 8de474dc..ed417fcd 100644 --- a/aes-set-encrypt-key.c +++ b/aes-set-encrypt-key.c @@ -36,32 +36,27 @@ # include "config.h" #endif -#include <assert.h> #include <stdlib.h> -#include "aes-internal.h" +#include "aes.h" void aes_set_encrypt_key(struct aes_ctx *ctx, - size_t keysize, const uint8_t *key) + size_t key_size, const uint8_t *key) { - unsigned nk, nr; - - assert(keysize >= AES_MIN_KEY_SIZE); - assert(keysize <= AES_MAX_KEY_SIZE); + switch (key_size) + { + default: abort(); + case AES128_KEY_SIZE: + aes128_set_encrypt_key(&ctx->u.ctx128, key); + break; + case AES192_KEY_SIZE: + aes192_set_encrypt_key(&ctx->u.ctx192, key); + break; + case AES256_KEY_SIZE: + aes256_set_encrypt_key(&ctx->u.ctx256, key); + break; + } - /* Truncate keysizes to the valid key sizes provided by Rijndael */ - if (keysize == AES256_KEY_SIZE) { - nk = 8; - nr = _AES256_ROUNDS; - } else if (keysize >= AES192_KEY_SIZE) { - nk = 6; - nr = _AES192_ROUNDS; - } else { /* must be 16 or more */ - nk = 4; - nr = _AES128_ROUNDS; - } - - ctx->rounds = nr; - _aes_set_key (nr, nk, ctx->keys, key); + ctx->key_size = key_size; } |