29 #ifndef MBEDTLS_CIPHER_H
30 #define MBEDTLS_CIPHER_H
32 #if !defined(MBEDTLS_CONFIG_FILE)
35 #include MBEDTLS_CONFIG_FILE
40 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
41 #define MBEDTLS_CIPHER_MODE_AEAD
44 #if defined(MBEDTLS_CIPHER_MODE_CBC)
45 #define MBEDTLS_CIPHER_MODE_WITH_PADDING
48 #if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \
49 defined(MBEDTLS_CHACHA20_C)
50 #define MBEDTLS_CIPHER_MODE_STREAM
53 #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
54 !defined(inline) && !defined(__cplusplus)
55 #define inline __inline
58 #define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080
59 #define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100
60 #define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180
61 #define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200
62 #define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280
63 #define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300
64 #define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380
67 #define MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED -0x6400
69 #define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01
70 #define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02
223 #define MBEDTLS_MAX_IV_LENGTH 16
225 #define MBEDTLS_MAX_BLOCK_LENGTH 16
296 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
300 void (*
add_padding)(
unsigned char *output,
size_t olen,
size_t data_len );
301 int (*
get_padding)(
unsigned char *input,
size_t ilen,
size_t *data_len );
320 #if defined(MBEDTLS_CMAC_C)
549 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
585 const unsigned char *iv,
size_t iv_len );
598 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
612 const unsigned char *ad,
size_t ad_len );
647 size_t ilen,
unsigned char *output,
size_t *olen );
669 unsigned char *output,
size_t *olen );
671 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
685 unsigned char *tag,
size_t tag_len );
700 const unsigned char *tag,
size_t tag_len );
733 const unsigned char *iv,
size_t iv_len,
734 const unsigned char *input,
size_t ilen,
735 unsigned char *output,
size_t *olen );
737 #if defined(MBEDTLS_CIPHER_MODE_AEAD)
762 const unsigned char *iv,
size_t iv_len,
763 const unsigned char *ad,
size_t ad_len,
764 const unsigned char *input,
size_t ilen,
765 unsigned char *output,
size_t *olen,
766 unsigned char *tag,
size_t tag_len );
797 const unsigned char *iv,
size_t iv_len,
798 const unsigned char *ad,
size_t ad_len,
799 const unsigned char *input,
size_t ilen,
800 unsigned char *output,
size_t *olen,
801 const unsigned char *tag,
size_t tag_len );