10
#include "crypto/aes_cbc.h"
14
#define AES_KEY_MIN_LEN 128
15
#define AES_KEY_DEF_LEN 128
16
#define AES_KEY_MAX_LEN 256
19
do_aes(u_int8_t *buf, size_t buf_len, u_int8_t *key, size_t key_size, u_int8_t *iv, bool enc)
22
char iv_bak[AES_CBC_BLOCK_SIZE];
23
char *new_iv = NULL; /* logic will avoid copy to NULL */
25
aes_set_key(&aes_ctx, key, key_size, 0);
28
* my AES cbc does not touch passed IV (optimization for
29
* ESP handling), so I must "emulate" des-like IV
34
(char*) buf + buf_len-AES_CBC_BLOCK_SIZE,
37
AES_cbc_encrypt(&aes_ctx, buf, buf, buf_len, iv, enc);
40
new_iv = (char*) buf + buf_len-AES_CBC_BLOCK_SIZE;
42
memcpy(iv, new_iv, AES_CBC_BLOCK_SIZE);
45
struct encrypt_desc algo_aes =
47
common: {algo_type: IKE_ALG_ENCRYPT,
48
algo_id: OAKLEY_AES_CBC,
50
enc_ctxsize: sizeof(aes_context),
51
enc_blocksize: AES_CBC_BLOCK_SIZE,
52
keyminlen: AES_KEY_MIN_LEN,
53
keydeflen: AES_KEY_DEF_LEN,
54
keymaxlen: AES_KEY_MAX_LEN,
57
int ike_alg_aes_init(void);
59
ike_alg_aes_init(void)
61
int ret = ike_alg_register_enc(&algo_aes);
65
IKE_ALG_INIT_NAME: ike_alg_aes_init