cipher.h
Go to the documentation of this file.
#ifndef MBEDTLS_CIPHER_H
#define MBEDTLS_CIPHER_H
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#include <stddef.h>
#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C)
#define MBEDTLS_CIPHER_MODE_AEAD
#endif
#if defined(MBEDTLS_CIPHER_MODE_CBC)
#define MBEDTLS_CIPHER_MODE_WITH_PADDING
#endif
#if defined(MBEDTLS_ARC4_C)
#define MBEDTLS_CIPHER_MODE_STREAM
#endif
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
!defined(inline) && !defined(__cplusplus)
#define inline __inline
#endif
#define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080
#define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100
#define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180
#define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200
#define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280
#define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300
#define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01
#define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
MBEDTLS_CIPHER_ID_NONE = 0,
MBEDTLS_CIPHER_ID_NULL,
MBEDTLS_CIPHER_ID_AES,
MBEDTLS_CIPHER_ID_DES,
MBEDTLS_CIPHER_ID_3DES,
MBEDTLS_CIPHER_ID_CAMELLIA,
MBEDTLS_CIPHER_ID_BLOWFISH,
MBEDTLS_CIPHER_ID_ARC4,
} mbedtls_cipher_id_t;
typedef enum {
MBEDTLS_CIPHER_NONE = 0,
MBEDTLS_CIPHER_NULL,
MBEDTLS_CIPHER_AES_128_ECB,
MBEDTLS_CIPHER_AES_192_ECB,
MBEDTLS_CIPHER_AES_256_ECB,
MBEDTLS_CIPHER_AES_128_CBC,
MBEDTLS_CIPHER_AES_192_CBC,
MBEDTLS_CIPHER_AES_256_CBC,
MBEDTLS_CIPHER_AES_128_CFB128,
MBEDTLS_CIPHER_AES_192_CFB128,
MBEDTLS_CIPHER_AES_256_CFB128,
MBEDTLS_CIPHER_AES_128_CTR,
MBEDTLS_CIPHER_AES_192_CTR,
MBEDTLS_CIPHER_AES_256_CTR,
MBEDTLS_CIPHER_AES_128_GCM,
MBEDTLS_CIPHER_AES_192_GCM,
MBEDTLS_CIPHER_AES_256_GCM,
MBEDTLS_CIPHER_CAMELLIA_128_ECB,
MBEDTLS_CIPHER_CAMELLIA_192_ECB,
MBEDTLS_CIPHER_CAMELLIA_256_ECB,
MBEDTLS_CIPHER_CAMELLIA_128_CBC,
MBEDTLS_CIPHER_CAMELLIA_192_CBC,
MBEDTLS_CIPHER_CAMELLIA_256_CBC,
MBEDTLS_CIPHER_CAMELLIA_128_CFB128,
MBEDTLS_CIPHER_CAMELLIA_192_CFB128,
MBEDTLS_CIPHER_CAMELLIA_256_CFB128,
MBEDTLS_CIPHER_CAMELLIA_128_CTR,
MBEDTLS_CIPHER_CAMELLIA_192_CTR,
MBEDTLS_CIPHER_CAMELLIA_256_CTR,
MBEDTLS_CIPHER_CAMELLIA_128_GCM,
MBEDTLS_CIPHER_CAMELLIA_192_GCM,
MBEDTLS_CIPHER_CAMELLIA_256_GCM,
MBEDTLS_CIPHER_DES_ECB,
MBEDTLS_CIPHER_DES_CBC,
MBEDTLS_CIPHER_DES_EDE_ECB,
MBEDTLS_CIPHER_DES_EDE_CBC,
MBEDTLS_CIPHER_DES_EDE3_ECB,
MBEDTLS_CIPHER_DES_EDE3_CBC,
MBEDTLS_CIPHER_BLOWFISH_ECB,
MBEDTLS_CIPHER_BLOWFISH_CBC,
MBEDTLS_CIPHER_BLOWFISH_CFB64,
MBEDTLS_CIPHER_BLOWFISH_CTR,
MBEDTLS_CIPHER_ARC4_128,
MBEDTLS_CIPHER_AES_128_CCM,
MBEDTLS_CIPHER_AES_192_CCM,
MBEDTLS_CIPHER_AES_256_CCM,
MBEDTLS_CIPHER_CAMELLIA_128_CCM,
MBEDTLS_CIPHER_CAMELLIA_192_CCM,
MBEDTLS_CIPHER_CAMELLIA_256_CCM,
} mbedtls_cipher_type_t;
typedef enum {
MBEDTLS_MODE_NONE = 0,
MBEDTLS_MODE_ECB,
MBEDTLS_MODE_CBC,
MBEDTLS_MODE_CFB,
MBEDTLS_MODE_OFB, /* Unused! */
MBEDTLS_MODE_CTR,
MBEDTLS_MODE_GCM,
MBEDTLS_MODE_STREAM,
MBEDTLS_MODE_CCM,
} mbedtls_cipher_mode_t;
typedef enum {
MBEDTLS_PADDING_PKCS7 = 0,
MBEDTLS_PADDING_ONE_AND_ZEROS,
MBEDTLS_PADDING_ZEROS_AND_LEN,
MBEDTLS_PADDING_ZEROS,
MBEDTLS_PADDING_NONE,
} mbedtls_cipher_padding_t;
typedef enum {
MBEDTLS_OPERATION_NONE = -1,
MBEDTLS_DECRYPT = 0,
MBEDTLS_ENCRYPT,
} mbedtls_operation_t;
enum {
MBEDTLS_KEY_LENGTH_NONE = 0,
MBEDTLS_KEY_LENGTH_DES = 64,
MBEDTLS_KEY_LENGTH_DES_EDE = 128,
MBEDTLS_KEY_LENGTH_DES_EDE3 = 192,
};
#define MBEDTLS_MAX_IV_LENGTH 16
#define MBEDTLS_MAX_BLOCK_LENGTH 16
typedef struct mbedtls_cipher_base_t mbedtls_cipher_base_t;
typedef struct {
mbedtls_cipher_type_t type;
mbedtls_cipher_mode_t mode;
unsigned int key_bitlen;
const char * name;
unsigned int iv_size;
int flags;
unsigned int block_size;
const mbedtls_cipher_base_t *base;
} mbedtls_cipher_info_t;
typedef struct {
const mbedtls_cipher_info_t *cipher_info;
int key_bitlen;
mbedtls_operation_t operation;
#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
void (*add_padding)( unsigned char *output, size_t olen, size_t data_len );
int (*get_padding)( unsigned char *input, size_t ilen, size_t *data_len );
#endif
unsigned char unprocessed_data[MBEDTLS_MAX_BLOCK_LENGTH];
size_t unprocessed_len;
unsigned char iv[MBEDTLS_MAX_IV_LENGTH];
size_t iv_size;
void *cipher_ctx;
} mbedtls_cipher_context_t;
const int *mbedtls_cipher_list( void );
const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string( const char *cipher_name );
const mbedtls_cipher_info_t *mbedtls_cipher_info_from_type( const mbedtls_cipher_type_t cipher_type );
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 );
void mbedtls_cipher_init( mbedtls_cipher_context_t *ctx );
void mbedtls_cipher_free( mbedtls_cipher_context_t *ctx );
int mbedtls_cipher_setup( mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info );
static inline unsigned int mbedtls_cipher_get_block_size( const mbedtls_cipher_context_t *ctx )
{
if( NULL == ctx || NULL == ctx->cipher_info )
return 0;
return ctx->cipher_info->block_size;
}
static inline mbedtls_cipher_mode_t mbedtls_cipher_get_cipher_mode( const mbedtls_cipher_context_t *ctx )
{
if( NULL == ctx || NULL == ctx->cipher_info )
return MBEDTLS_MODE_NONE;
return ctx->cipher_info->mode;
}
static inline int mbedtls_cipher_get_iv_size( const mbedtls_cipher_context_t *ctx )
{
if( NULL == ctx || NULL == ctx->cipher_info )
return 0;
if( ctx->iv_size != 0 )
return (int) ctx->iv_size;
return (int) ctx->cipher_info->iv_size;
}
static inline mbedtls_cipher_type_t mbedtls_cipher_get_type( const mbedtls_cipher_context_t *ctx )
{
if( NULL == ctx || NULL == ctx->cipher_info )
return MBEDTLS_CIPHER_NONE;
return ctx->cipher_info->type;
}
static inline const char *mbedtls_cipher_get_name( const mbedtls_cipher_context_t *ctx )
{
if( NULL == ctx || NULL == ctx->cipher_info )
return 0;
return ctx->cipher_info->name;
}
static inline int mbedtls_cipher_get_key_bitlen( const mbedtls_cipher_context_t *ctx )
{
if( NULL == ctx || NULL == ctx->cipher_info )
return MBEDTLS_KEY_LENGTH_NONE;
return (int) ctx->cipher_info->key_bitlen;
}
static inline mbedtls_operation_t mbedtls_cipher_get_operation( const mbedtls_cipher_context_t *ctx )
{
if( NULL == ctx || NULL == ctx->cipher_info )
return MBEDTLS_OPERATION_NONE;
return ctx->operation;
}
int mbedtls_cipher_setkey( mbedtls_cipher_context_t *ctx, const unsigned char *key,
int key_bitlen, const mbedtls_operation_t operation );
#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
int mbedtls_cipher_set_padding_mode( mbedtls_cipher_context_t *ctx, mbedtls_cipher_padding_t mode );
#endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx,
const unsigned char *iv, size_t iv_len );
int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx );
#if defined(MBEDTLS_GCM_C)
int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx,
const unsigned char *ad, size_t ad_len );
#endif /* MBEDTLS_GCM_C */
int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input,
size_t ilen, unsigned char *output, size_t *olen );
int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx,
unsigned char *output, size_t *olen );
#if defined(MBEDTLS_GCM_C)
int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx,
unsigned char *tag, size_t tag_len );
int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx,
const unsigned char *tag, size_t tag_len );
#endif /* MBEDTLS_GCM_C */
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 );
#if defined(MBEDTLS_CIPHER_MODE_AEAD)
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 );
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 );
#endif /* MBEDTLS_CIPHER_MODE_AEAD */
#ifdef __cplusplus
}
#endif
#endif /* MBEDTLS_CIPHER_H */
MBEDTLS_CIPHER_CAMELLIA_128_CTR
Definition: cipher.h:106
MBEDTLS_CIPHER_ID_3DES
Definition: cipher.h:73
MBEDTLS_CIPHER_AES_128_GCM
Definition: cipher.h:94
MBEDTLS_CIPHER_DES_EDE_ECB
Definition: cipher.h:114
MBEDTLS_CIPHER_AES_128_CCM
Definition: cipher.h:123
mbedtls_operation_t
mbedtls_operation_t
Definition: cipher.h:151
MBEDTLS_CIPHER_CAMELLIA_256_CFB128
Definition: cipher.h:105
mbedtls_cipher_info_t::iv_size
unsigned int iv_size
IV/NONCE size, in bytes.
Definition: cipher.h:197
MBEDTLS_KEY_LENGTH_DES_EDE
Key length, in bits (including parity), for DES in two key EDE.
Definition: cipher.h:163
MBEDTLS_CIPHER_NONE
Definition: cipher.h:80
MBEDTLS_CIPHER_AES_128_CBC
Definition: cipher.h:85
mbedtls_cipher_padding_t
mbedtls_cipher_padding_t
Definition: cipher.h:143
MBEDTLS_PADDING_NONE
never pad (full blocks only)
Definition: cipher.h:148
mbedtls_cipher_get_cipher_mode
static mbedtls_cipher_mode_t mbedtls_cipher_get_cipher_mode(const mbedtls_cipher_context_t *ctx)
Returns the mode of operation for the cipher.
Definition: cipher.h:346
MBEDTLS_CIPHER_AES_192_CBC
Definition: cipher.h:86
MBEDTLS_CIPHER_CAMELLIA_128_GCM
Definition: cipher.h:109
mbedtls_cipher_info_t::flags
int flags
Flags for variable IV size, variable key size, etc.
Definition: cipher.h:200
mbedtls_cipher_get_block_size
static unsigned int mbedtls_cipher_get_block_size(const mbedtls_cipher_context_t *ctx)
Returns the block size of the given cipher.
Definition: cipher.h:329
mbedtls_cipher_mode_t
mbedtls_cipher_mode_t
Definition: cipher.h:131
MBEDTLS_MODE_OFB
Definition: cipher.h:136
MBEDTLS_CIPHER_NULL
Definition: cipher.h:81
MBEDTLS_CIPHER_CAMELLIA_128_CCM
Definition: cipher.h:126
mbedtls_cipher_info_from_string
const mbedtls_cipher_info_t * mbedtls_cipher_info_from_string(const char *cipher_name)
Returns the cipher information structure associated with the given cipher name.
mbedtls_cipher_finish
int mbedtls_cipher_finish(mbedtls_cipher_context_t *ctx, unsigned char *output, size_t *olen)
Generic cipher finalisation function.
mbedtls_cipher_context_t
Generic cipher context.
Definition: cipher.h:213
mbedtls_cipher_reset
int mbedtls_cipher_reset(mbedtls_cipher_context_t *ctx)
Finish preparation of the given context.
MBEDTLS_CIPHER_CAMELLIA_256_ECB
Definition: cipher.h:99
MBEDTLS_CIPHER_CAMELLIA_192_CCM
Definition: cipher.h:127
MBEDTLS_CIPHER_CAMELLIA_192_CFB128
Definition: cipher.h:104
mbedtls_cipher_get_name
static const char * mbedtls_cipher_get_name(const mbedtls_cipher_context_t *ctx)
Returns the name of the given cipher, as a string.
Definition: cipher.h:397
MBEDTLS_MODE_CTR
Definition: cipher.h:137
MBEDTLS_CIPHER_AES_256_CFB128
Definition: cipher.h:90
config.h
Configuration options (set of defines)
MBEDTLS_CIPHER_BLOWFISH_CTR
Definition: cipher.h:121
mbedtls_cipher_set_iv
int mbedtls_cipher_set_iv(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len)
Set the initialization vector (IV) or nonce.
mbedtls_cipher_info_t
Cipher information.
Definition: cipher.h:181
MBEDTLS_CIPHER_AES_192_ECB
Definition: cipher.h:83
mbedtls_cipher_set_padding_mode
int mbedtls_cipher_set_padding_mode(mbedtls_cipher_context_t *ctx, mbedtls_cipher_padding_t mode)
Set padding mode, for cipher modes that use padding.
mbedtls_cipher_info_t::mode
mbedtls_cipher_mode_t mode
Cipher mode (e.g.
Definition: cipher.h:186
mbedtls_cipher_update
int mbedtls_cipher_update(mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen)
Generic cipher update function.
mbedtls_cipher_info_t::block_size
unsigned int block_size
block size, in bytes
Definition: cipher.h:203
mbedtls_cipher_base_t
Base cipher information.
Definition: cipher_internal.h:43
mbedtls_cipher_free
void mbedtls_cipher_free(mbedtls_cipher_context_t *ctx)
Free and clear the cipher-specific context of ctx.
mbedtls_cipher_get_operation
static mbedtls_operation_t mbedtls_cipher_get_operation(const mbedtls_cipher_context_t *ctx)
Returns the operation of the given cipher.
Definition: cipher.h:431
mbedtls_cipher_list
const int * mbedtls_cipher_list(void)
Returns the list of ciphers supported by the generic cipher module.
MBEDTLS_PADDING_ZEROS_AND_LEN
ANSI X.923 padding.
Definition: cipher.h:146
mbedtls_cipher_get_key_bitlen
static int mbedtls_cipher_get_key_bitlen(const mbedtls_cipher_context_t *ctx)
Returns the key length of the cipher.
Definition: cipher.h:414
mbedtls_cipher_type_t
mbedtls_cipher_type_t
Definition: cipher.h:79
MBEDTLS_CIPHER_CAMELLIA_256_CBC
Definition: cipher.h:102
MBEDTLS_CIPHER_CAMELLIA_128_ECB
Definition: cipher.h:97
MBEDTLS_ENCRYPT
Definition: cipher.h:154
mbedtls_cipher_context_t::cipher_info
const mbedtls_cipher_info_t * cipher_info
Information about the associated cipher.
Definition: cipher.h:215
MBEDTLS_CIPHER_AES_128_CFB128
Definition: cipher.h:88
MBEDTLS_CIPHER_BLOWFISH_CBC
Definition: cipher.h:119
MBEDTLS_PADDING_ZEROS
zero padding (not reversible!)
Definition: cipher.h:147
mbedtls_cipher_info_from_values
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)
Returns the cipher information structure associated with the given cipher id, key size and mode...
MBEDTLS_CIPHER_ID_CAMELLIA
Definition: cipher.h:74
MBEDTLS_CIPHER_ID_ARC4
Definition: cipher.h:76
MBEDTLS_KEY_LENGTH_DES_EDE3
Key length, in bits (including parity), for DES in three-key EDE.
Definition: cipher.h:165
MBEDTLS_CIPHER_DES_CBC
Definition: cipher.h:113
mbedtls_cipher_get_type
static mbedtls_cipher_type_t mbedtls_cipher_get_type(const mbedtls_cipher_context_t *ctx)
Returns the type of the given cipher.
Definition: cipher.h:382
MBEDTLS_KEY_LENGTH_NONE
Undefined key length.
Definition: cipher.h:159
MBEDTLS_MODE_STREAM
Definition: cipher.h:139
MBEDTLS_CIPHER_ID_NONE
Definition: cipher.h:69
mbedtls_cipher_context_t::cipher_ctx
void * cipher_ctx
Cipher-specific context.
Definition: cipher.h:242
MBEDTLS_CIPHER_AES_256_CBC
Definition: cipher.h:87
MBEDTLS_CIPHER_CAMELLIA_256_CCM
Definition: cipher.h:128
MBEDTLS_CIPHER_CAMELLIA_192_ECB
Definition: cipher.h:98
MBEDTLS_MODE_CFB
Definition: cipher.h:135
MBEDTLS_PADDING_ONE_AND_ZEROS
ISO/IEC 7816-4 padding.
Definition: cipher.h:145
mbedtls_cipher_context_t::operation
mbedtls_operation_t operation
Operation that the context&#39;s key has been initialised for.
Definition: cipher.h:221
MBEDTLS_CIPHER_AES_256_GCM
Definition: cipher.h:96
MBEDTLS_CIPHER_CAMELLIA_192_CTR
Definition: cipher.h:107
MBEDTLS_MODE_CCM
Definition: cipher.h:140
MBEDTLS_DECRYPT
Definition: cipher.h:153
mbedtls_cipher_id_t
mbedtls_cipher_id_t
Definition: cipher.h:68
MBEDTLS_CIPHER_CAMELLIA_192_CBC
Definition: cipher.h:101
mbedtls_cipher_setkey
int mbedtls_cipher_setkey(mbedtls_cipher_context_t *ctx, const unsigned char *key, int key_bitlen, const mbedtls_operation_t operation)
Set the key to use with the given context.
MBEDTLS_CIPHER_AES_256_ECB
Definition: cipher.h:84
MBEDTLS_CIPHER_CAMELLIA_256_GCM
Definition: cipher.h:111
MBEDTLS_CIPHER_BLOWFISH_CFB64
Definition: cipher.h:120
MBEDTLS_MAX_IV_LENGTH
#define MBEDTLS_MAX_IV_LENGTH
Maximum length of any IV, in bytes.
Definition: cipher.h:169
MBEDTLS_CIPHER_CAMELLIA_128_CFB128
Definition: cipher.h:103
MBEDTLS_CIPHER_ARC4_128
Definition: cipher.h:122
MBEDTLS_CIPHER_DES_EDE_CBC
Definition: cipher.h:115
mbedtls_cipher_context_t::unprocessed_len
size_t unprocessed_len
Number of bytes that still need processing.
Definition: cipher.h:233
MBEDTLS_CIPHER_CAMELLIA_192_GCM
Definition: cipher.h:110
mbedtls_cipher_auth_decrypt
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)
Generic autenticated decryption (AEAD ciphers).
mbedtls_cipher_info_t::name
const char * name
Name of the cipher.
Definition: cipher.h:193
MBEDTLS_CIPHER_BLOWFISH_ECB
Definition: cipher.h:118
MBEDTLS_MODE_CBC
Definition: cipher.h:134
MBEDTLS_CIPHER_AES_128_CTR
Definition: cipher.h:91
mbedtls_cipher_auth_encrypt
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)
Generic autenticated encryption (AEAD ciphers).
MBEDTLS_MODE_GCM
Definition: cipher.h:138
MBEDTLS_MODE_ECB
Definition: cipher.h:133
MBEDTLS_CIPHER_ID_AES
Definition: cipher.h:71
MBEDTLS_CIPHER_AES_192_CCM
Definition: cipher.h:124
MBEDTLS_PADDING_PKCS7
PKCS7 padding (default)
Definition: cipher.h:144
mbedtls_cipher_crypt
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)
Generic all-in-one encryption/decryption (for all ciphers except AEAD constructs).
MBEDTLS_OPERATION_NONE
Definition: cipher.h:152
MBEDTLS_CIPHER_CAMELLIA_128_CBC
Definition: cipher.h:100
mbedtls_cipher_context_t::key_bitlen
int key_bitlen
Key length to use.
Definition: cipher.h:218
mbedtls_cipher_init
void mbedtls_cipher_init(mbedtls_cipher_context_t *ctx)
Initialize a cipher_context (as NONE)
MBEDTLS_CIPHER_DES_EDE3_CBC
Definition: cipher.h:117
mbedtls_cipher_update_ad
int mbedtls_cipher_update_ad(mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len)
Add additional data (for AEAD ciphers).
MBEDTLS_CIPHER_ID_NULL
Definition: cipher.h:70
MBEDTLS_CIPHER_ID_BLOWFISH
Definition: cipher.h:75
mbedtls_cipher_setup
int mbedtls_cipher_setup(mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info)
Initialises and fills the cipher context structure with the appropriate values.
MBEDTLS_CIPHER_DES_EDE3_ECB
Definition: cipher.h:116
MBEDTLS_CIPHER_AES_192_CTR
Definition: cipher.h:92
MBEDTLS_CIPHER_DES_ECB
Definition: cipher.h:112
mbedtls_cipher_check_tag
int mbedtls_cipher_check_tag(mbedtls_cipher_context_t *ctx, const unsigned char *tag, size_t tag_len)
Check tag for AEAD ciphers.
mbedtls_cipher_get_iv_size
static int mbedtls_cipher_get_iv_size(const mbedtls_cipher_context_t *ctx)
Returns the size of the cipher&#39;s IV/NONCE in bytes.
Definition: cipher.h:363
MBEDTLS_KEY_LENGTH_DES
Key length, in bits (including parity), for DES keys.
Definition: cipher.h:161
mbedtls_cipher_write_tag
int mbedtls_cipher_write_tag(mbedtls_cipher_context_t *ctx, unsigned char *tag, size_t tag_len)
Write tag for AEAD ciphers.
MBEDTLS_CIPHER_AES_192_GCM
Definition: cipher.h:95
mbedtls_cipher_context_t::iv_size
size_t iv_size
IV size in bytes (for ciphers with variable-length IVs)
Definition: cipher.h:239
MBEDTLS_MAX_BLOCK_LENGTH
#define MBEDTLS_MAX_BLOCK_LENGTH
Maximum block size of any cipher, in bytes.
Definition: cipher.h:171
MBEDTLS_CIPHER_AES_128_ECB
Definition: cipher.h:82
MBEDTLS_CIPHER_AES_256_CTR
Definition: cipher.h:93
MBEDTLS_CIPHER_CAMELLIA_256_CTR
Definition: cipher.h:108
MBEDTLS_MODE_NONE
Definition: cipher.h:132
MBEDTLS_CIPHER_ID_DES
Definition: cipher.h:72
MBEDTLS_CIPHER_AES_192_CFB128
Definition: cipher.h:89
mbedtls_cipher_info_t::key_bitlen
unsigned int key_bitlen
Cipher key length, in bits (default length for variable sized ciphers) (Includes parity bits for ciph...
Definition: cipher.h:190
mbedtls_cipher_info_t::type
mbedtls_cipher_type_t type
Full cipher identifier (e.g.
Definition: cipher.h:183
mbedtls_cipher_info_from_type
const mbedtls_cipher_info_t * mbedtls_cipher_info_from_type(const mbedtls_cipher_type_t cipher_type)
Returns the cipher information structure associated with the given cipher type.
mbedtls_cipher_info_t::base
const mbedtls_cipher_base_t * base
Base cipher information and functions.
Definition: cipher.h:206
MBEDTLS_CIPHER_AES_256_CCM
Definition: cipher.h:125