30 #ifndef POLARSSL_CIPHER_H
31 #define POLARSSL_CIPHER_H
35 #if defined(POLARSSL_GCM_C)
36 #define POLARSSL_CIPHER_MODE_AEAD
39 #if defined(POLARSSL_CIPHER_MODE_CBC)
40 #define POLARSSL_CIPHER_MODE_WITH_PADDING
45 #if defined(_MSC_VER) && !defined(inline)
46 #define inline _inline
48 #if defined(__ARMCC_VERSION) && !defined(inline)
49 #define inline __inline
53 #define POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080
54 #define POLARSSL_ERR_CIPHER_BAD_INPUT_DATA -0x6100
55 #define POLARSSL_ERR_CIPHER_ALLOC_FAILED -0x6180
56 #define POLARSSL_ERR_CIPHER_INVALID_PADDING -0x6200
57 #define POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280
58 #define POLARSSL_ERR_CIPHER_AUTH_FAILED -0x6300
166 const unsigned char *input,
unsigned char *output );
169 int (*cbc_func)(
void *ctx,
operation_t mode,
size_t length,
unsigned char *iv,
170 const unsigned char *input,
unsigned char *output );
173 int (*cfb_func)(
void *ctx,
operation_t mode,
size_t length,
size_t *iv_off,
174 unsigned char *iv,
const unsigned char *input,
unsigned char *output );
177 int (*ctr_func)(
void *ctx,
size_t length,
size_t *nc_off,
unsigned char *nonce_counter,
178 unsigned char *stream_block,
const unsigned char *input,
unsigned char *output );
181 int (*stream_func)(
void *ctx,
size_t length,
182 const unsigned char *input,
unsigned char *output );
185 int (*setkey_enc_func)(
void *ctx,
const unsigned char *key,
unsigned int key_length);
188 int (*setkey_dec_func)(
void *ctx,
const unsigned char *key,
unsigned int key_length);
191 void * (*ctx_alloc_func)( void );
194 void (*ctx_free_func)(
void *ctx );
244 void (*add_padding)(
unsigned char *output,
size_t olen,
size_t data_len );
245 int (*get_padding)(
unsigned char *input,
size_t ilen,
size_t *data_len );
470 #if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
500 const unsigned char *iv,
size_t iv_len );
512 #if defined(POLARSSL_CIPHER_MODE_AEAD)
529 const unsigned char *ad,
size_t ad_len );
562 unsigned char *output,
size_t *olen );
582 unsigned char *output,
size_t *olen );
584 #if defined(POLARSSL_CIPHER_MODE_AEAD)
597 unsigned char *tag,
size_t tag_len );
612 const unsigned char *tag,
size_t tag_len );