30 #ifndef POLARSSL_CIPHER_H
31 #define POLARSSL_CIPHER_H
33 #if !defined(POLARSSL_CONFIG_FILE)
36 #include POLARSSL_CONFIG_FILE
39 #if defined(POLARSSL_GCM_C) || defined(POLARSSL_CCM_C)
40 #define POLARSSL_CIPHER_MODE_AEAD
43 #if defined(POLARSSL_CIPHER_MODE_CBC)
44 #define POLARSSL_CIPHER_MODE_WITH_PADDING
49 #if defined(_MSC_VER) && !defined(inline)
50 #define inline _inline
52 #if defined(__ARMCC_VERSION) && !defined(inline)
53 #define inline __inline
57 #define POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080
58 #define POLARSSL_ERR_CIPHER_BAD_INPUT_DATA -0x6100
59 #define POLARSSL_ERR_CIPHER_ALLOC_FAILED -0x6180
60 #define POLARSSL_ERR_CIPHER_INVALID_PADDING -0x6200
61 #define POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280
62 #define POLARSSL_ERR_CIPHER_AUTH_FAILED -0x6300
64 #define POLARSSL_CIPHER_VARIABLE_IV_LEN 0x01
65 #define POLARSSL_CIPHER_VARIABLE_KEY_LEN 0x02
172 #define POLARSSL_MAX_IV_LENGTH 16
174 #define POLARSSL_MAX_BLOCK_LENGTH 16
186 const unsigned char *input,
unsigned char *output );
190 unsigned char *iv,
const unsigned char *input,
191 unsigned char *output );
194 int (*cfb_func)(
void *ctx,
operation_t mode,
size_t length,
size_t *iv_off,
195 unsigned char *iv,
const unsigned char *input,
196 unsigned char *output );
199 int (*ctr_func)(
void *ctx,
size_t length,
size_t *nc_off,
200 unsigned char *nonce_counter,
unsigned char *stream_block,
201 const unsigned char *input,
unsigned char *output );
204 int (*stream_func)(
void *ctx,
size_t length,
205 const unsigned char *input,
unsigned char *output );
208 int (*setkey_enc_func)(
void *ctx,
const unsigned char *key,
209 unsigned int key_length );
212 int (*setkey_dec_func)(
void *ctx,
const unsigned char *key,
213 unsigned int key_length);
216 void * (*ctx_alloc_func)( void );
219 void (*ctx_free_func)(
void *ctx );
269 void (*add_padding)(
unsigned char *output,
size_t olen,
size_t data_len );
270 int (*get_padding)(
unsigned char *input,
size_t ilen,
size_t *data_len );
512 #if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
542 const unsigned char *iv,
size_t iv_len );
554 #if defined(POLARSSL_GCM_C)
567 const unsigned char *ad,
size_t ad_len );
600 size_t ilen,
unsigned char *output,
size_t *olen );
620 unsigned char *output,
size_t *olen );
622 #if defined(POLARSSL_GCM_C)
635 unsigned char *tag,
size_t tag_len );
649 const unsigned char *tag,
size_t tag_len );
680 const unsigned char *iv,
size_t iv_len,
681 const unsigned char *input,
size_t ilen,
682 unsigned char *output,
size_t *olen );
684 #if defined(POLARSSL_CIPHER_MODE_AEAD)
708 const unsigned char *iv,
size_t iv_len,
709 const unsigned char *ad,
size_t ad_len,
710 const unsigned char *input,
size_t ilen,
711 unsigned char *output,
size_t *olen,
712 unsigned char *tag,
size_t tag_len );
742 const unsigned char *iv,
size_t iv_len,
743 const unsigned char *ad,
size_t ad_len,
744 const unsigned char *input,
size_t ilen,
745 unsigned char *output,
size_t *olen,
746 const unsigned char *tag,
size_t tag_len );