summaryrefslogtreecommitdiff
path: root/aes-set-encrypt-key.c
diff options
context:
space:
mode:
Diffstat (limited to 'aes-set-encrypt-key.c')
-rw-r--r--aes-set-encrypt-key.c37
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;
}