1386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari/* 2386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari * aes_icm.h 3386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari * 4386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari * Header for AES Integer Counter Mode. 5386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari * 6386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari * David A. McGrew 7386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari * Cisco Systems, Inc. 8386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari * 9386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari */ 10386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 11386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari#ifndef AES_ICM_H 12386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari#define AES_ICM_H 13386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 14386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari#include "aes.h" 15386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari#include "cipher.h" 16386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 17386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaritypedef struct { 18386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari v128_t counter; /* holds the counter value */ 19386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari v128_t offset; /* initial offset value */ 20386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari v128_t keystream_buffer; /* buffers bytes of keystream */ 21386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari aes_expanded_key_t expanded_key; /* the cipher key */ 22386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari int bytes_in_buffer; /* number of unused bytes in buffer */ 23386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari} aes_icm_ctx_t; 24386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 25386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 26386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarierr_status_t 27386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariaes_icm_context_init(aes_icm_ctx_t *c, 28386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari const unsigned char *key); 29386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 30386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarierr_status_t 31386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariaes_icm_set_iv(aes_icm_ctx_t *c, void *iv); 32386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 33386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarierr_status_t 34386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariaes_icm_encrypt(aes_icm_ctx_t *c, 35386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari unsigned char *buf, unsigned int *bytes_to_encr); 36386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 37386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarierr_status_t 38386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariaes_icm_output(aes_icm_ctx_t *c, 39386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari unsigned char *buf, int bytes_to_output); 40386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 41386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarierr_status_t 42386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariaes_icm_dealloc(cipher_t *c); 43386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 44386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarierr_status_t 45386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariaes_icm_encrypt_ismacryp(aes_icm_ctx_t *c, 46386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari unsigned char *buf, 47386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari unsigned int *enc_len, 48386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari int forIsmacryp); 49386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 50386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarierr_status_t 51386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariaes_icm_alloc_ismacryp(cipher_t **c, 52386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari int key_len, 53386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari int forIsmacryp); 54386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 55386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari#endif /* AES_ICM_H */ 56386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari 57