29 #ifndef MBEDTLS_CIPHER_H 30 #define MBEDTLS_CIPHER_H 32 #if !defined(MBEDTLS_CONFIG_FILE) 35 #include MBEDTLS_CONFIG_FILE 41 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C) 42 #define MBEDTLS_CIPHER_MODE_AEAD 45 #if defined(MBEDTLS_CIPHER_MODE_CBC) 46 #define MBEDTLS_CIPHER_MODE_WITH_PADDING 49 #if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \ 50 defined(MBEDTLS_CHACHA20_C) 51 #define MBEDTLS_CIPHER_MODE_STREAM 54 #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ 55 !defined(inline) && !defined(__cplusplus) 56 #define inline __inline 59 #define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080 60 #define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100 61 #define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180 62 #define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200 63 #define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280 64 #define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300 65 #define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380 68 #define MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED -0x6400 70 #define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01 71 #define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02 224 #define MBEDTLS_MAX_IV_LENGTH 16 226 #define MBEDTLS_MAX_BLOCK_LENGTH 16 297 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) 301 void (*add_padding)(
unsigned char *output,
size_t olen,
size_t data_len );
302 int (*get_padding)(
unsigned char *input,
size_t ilen,
size_t *data_len );
321 #if defined(MBEDTLS_CMAC_C) 427 static inline unsigned int mbedtls_cipher_get_block_size(
466 static inline int mbedtls_cipher_get_iv_size(
507 static inline const char *mbedtls_cipher_get_name(
526 static inline int mbedtls_cipher_get_key_bitlen(
573 const unsigned char *key,
577 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) 617 const unsigned char *iv,
631 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) 647 const unsigned char *ad,
size_t ad_len );
685 size_t ilen,
unsigned char *output,
size_t *olen );
710 unsigned char *output,
size_t *olen );
712 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) 730 unsigned char *tag,
size_t tag_len );
746 const unsigned char *tag,
size_t tag_len );
783 const unsigned char *iv,
size_t iv_len,
784 const unsigned char *input,
size_t ilen,
785 unsigned char *output,
size_t *olen );
787 #if defined(MBEDTLS_CIPHER_MODE_AEAD) 819 const unsigned char *iv,
size_t iv_len,
820 const unsigned char *ad,
size_t ad_len,
821 const unsigned char *input,
size_t ilen,
822 unsigned char *output,
size_t *olen,
823 unsigned char *tag,
size_t tag_len );
861 const unsigned char *iv,
size_t iv_len,
862 const unsigned char *ad,
size_t ad_len,
863 const unsigned char *input,
size_t ilen,
864 unsigned char *output,
size_t *olen,
865 const unsigned char *tag,
size_t tag_len );
unsigned char unprocessed_data[MBEDTLS_MAX_BLOCK_LENGTH]
Definition: cipher.h:306
mbedtls_operation_t
Definition: cipher.h:206
unsigned int iv_size
Definition: cipher.h:265
mbedtls_cipher_padding_t
Definition: cipher.h:197
int flags
Definition: cipher.h:271
mbedtls_cipher_mode_t
Definition: cipher.h:182
const mbedtls_cipher_info_t * mbedtls_cipher_info_from_string(const char *cipher_name)
This function retrieves the cipher-information structure associated with the given cipher name.
Definition: cipher.c:127
int mbedtls_cipher_finish(mbedtls_cipher_context_t *ctx, unsigned char *output, size_t *olen)
The generic cipher finalization function. If data still needs to be flushed from an incomplete block,...
Definition: cipher.c:762
int mbedtls_cipher_reset(mbedtls_cipher_context_t *ctx)
This function resets the cipher state.
Definition: cipher.c:296
Configuration options (set of defines)
int mbedtls_cipher_set_iv(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len)
This function sets the initialization vector (IV) or nonce.
Definition: cipher.c:249
mbedtls_cipher_mode_t mode
Definition: cipher.h:250
int mbedtls_cipher_update(mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen)
The generic cipher update function. It encrypts or decrypts using the given cipher context....
Definition: cipher.c:349
unsigned int block_size
Definition: cipher.h:274
Definition: cipher_internal.h:44
void mbedtls_cipher_free(mbedtls_cipher_context_t *ctx)
This function frees and clears the cipher-specific context of ctx. Freeing ctx itself remains the res...
Definition: cipher.c:162
const int * mbedtls_cipher_list(void)
This function retrieves the list of ciphers supported by the generic cipher module.
Definition: cipher.c:95
mbedtls_cipher_type_t
Supported {cipher type, cipher mode} pairs.
Definition: cipher.h:104
struct mbedtls_cipher_info_t mbedtls_cipher_info_t
const mbedtls_cipher_info_t * cipher_info
Definition: cipher.h:287
const mbedtls_cipher_info_t * mbedtls_cipher_info_from_values(const mbedtls_cipher_id_t cipher_id, int key_bitlen, const mbedtls_cipher_mode_t mode)
This function retrieves the cipher-information structure associated with the given cipher ID,...
Definition: cipher.c:141
void * cipher_ctx
Definition: cipher.h:319
mbedtls_operation_t operation
Definition: cipher.h:295
mbedtls_cipher_id_t
Supported cipher types.
Definition: cipher.h:84
unsigned char iv[MBEDTLS_MAX_IV_LENGTH]
Definition: cipher.h:313
int mbedtls_cipher_setkey(mbedtls_cipher_context_t *ctx, const unsigned char *key, int key_bitlen, const mbedtls_operation_t operation)
This function sets the key to use with the given context.
Definition: cipher.c:209
#define MBEDTLS_MAX_IV_LENGTH
Definition: cipher.h:224
size_t unprocessed_len
Definition: cipher.h:309
int mbedtls_cipher_auth_decrypt(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, const unsigned char *tag, size_t tag_len)
The generic autenticated decryption (AEAD) function.
Definition: cipher.c:1090
const char * name
Definition: cipher.h:259
int mbedtls_cipher_auth_encrypt(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, unsigned char *tag, size_t tag_len)
The generic autenticated encryption (AEAD) function.
Definition: cipher.c:1035
int mbedtls_cipher_crypt(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen)
The generic all-in-one encryption/decryption function, for all ciphers except AEAD constructs.
Definition: cipher.c:1000
int key_bitlen
Definition: cipher.h:290
void mbedtls_cipher_init(mbedtls_cipher_context_t *ctx)
This function initializes a cipher_context as NONE.
Definition: cipher.c:156
int mbedtls_cipher_setup(mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info)
This function initializes and fills the cipher-context structure with the appropriate values....
Definition: cipher.c:182
struct mbedtls_cipher_context_t mbedtls_cipher_context_t
size_t iv_size
Definition: cipher.h:316
#define MBEDTLS_MAX_BLOCK_LENGTH
Definition: cipher.h:226
unsigned int key_bitlen
Definition: cipher.h:256
mbedtls_cipher_type_t type
Definition: cipher.h:247
const mbedtls_cipher_info_t * mbedtls_cipher_info_from_type(const mbedtls_cipher_type_t cipher_type)
This function retrieves the cipher-information structure associated with the given cipher type.
Definition: cipher.c:116
const mbedtls_cipher_base_t * base
Definition: cipher.h:277