mbed TLS v2.16.3
cipher.h
Go to the documentation of this file.
1 
10 /*
11  * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved
12  * SPDX-License-Identifier: Apache-2.0
13  *
14  * Licensed under the Apache License, Version 2.0 (the "License"); you may
15  * not use this file except in compliance with the License.
16  * You may obtain a copy of the License at
17  *
18  * http://www.apache.org/licenses/LICENSE-2.0
19  *
20  * Unless required by applicable law or agreed to in writing, software
21  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
22  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23  * See the License for the specific language governing permissions and
24  * limitations under the License.
25  *
26  * This file is part of Mbed TLS (https://tls.mbed.org)
27  */
28 
29 #ifndef MBEDTLS_CIPHER_H
30 #define MBEDTLS_CIPHER_H
31 
32 #if !defined(MBEDTLS_CONFIG_FILE)
33 #include "config.h"
34 #else
35 #include MBEDTLS_CONFIG_FILE
36 #endif
37 
38 #include <stddef.h>
39 #include "platform_util.h"
40 
41 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
42 #define MBEDTLS_CIPHER_MODE_AEAD
43 #endif
44 
45 #if defined(MBEDTLS_CIPHER_MODE_CBC)
46 #define MBEDTLS_CIPHER_MODE_WITH_PADDING
47 #endif
48 
49 #if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \
50  defined(MBEDTLS_CHACHA20_C)
51 #define MBEDTLS_CIPHER_MODE_STREAM
52 #endif
53 
54 #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
55  !defined(inline) && !defined(__cplusplus)
56 #define inline __inline
57 #endif
58 
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
67 /* MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED is deprecated and should not be used. */
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
73 #ifdef __cplusplus
74 extern "C" {
75 #endif
76 
84 typedef enum {
96 
104 typedef enum {
180 
182 typedef enum {
195 
197 typedef enum {
204 
206 typedef enum {
211 
212 enum {
221 };
222 
224 #define MBEDTLS_MAX_IV_LENGTH 16
226 #define MBEDTLS_MAX_BLOCK_LENGTH 16
227 
232 
237 
242 typedef struct mbedtls_cipher_info_t
243 {
248 
251 
256  unsigned int key_bitlen;
257 
259  const char * name;
260 
265  unsigned int iv_size;
266 
271  int flags;
272 
274  unsigned int block_size;
275 
278 
280 
285 {
288 
291 
296 
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 );
303 #endif
304 
307 
310 
313  unsigned char iv[MBEDTLS_MAX_IV_LENGTH];
314 
316  size_t iv_size;
317 
319  void *cipher_ctx;
320 
321 #if defined(MBEDTLS_CMAC_C)
323  mbedtls_cmac_context_t *cmac_ctx;
324 #endif
326 
334 const int *mbedtls_cipher_list( void );
335 
347 const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string( const char *cipher_name );
348 
360 
376  int key_bitlen,
377  const mbedtls_cipher_mode_t mode );
378 
385 
396 
397 
417  const mbedtls_cipher_info_t *cipher_info );
418 
427 static inline unsigned int mbedtls_cipher_get_block_size(
428  const mbedtls_cipher_context_t *ctx )
429 {
430  MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 );
431  if( ctx->cipher_info == NULL )
432  return 0;
433 
434  return ctx->cipher_info->block_size;
435 }
436 
447  const mbedtls_cipher_context_t *ctx )
448 {
450  if( ctx->cipher_info == NULL )
451  return MBEDTLS_MODE_NONE;
452 
453  return ctx->cipher_info->mode;
454 }
455 
466 static inline int mbedtls_cipher_get_iv_size(
467  const mbedtls_cipher_context_t *ctx )
468 {
469  MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 );
470  if( ctx->cipher_info == NULL )
471  return 0;
472 
473  if( ctx->iv_size != 0 )
474  return (int) ctx->iv_size;
475 
476  return (int) ctx->cipher_info->iv_size;
477 }
478 
488  const mbedtls_cipher_context_t *ctx )
489 {
491  ctx != NULL, MBEDTLS_CIPHER_NONE );
492  if( ctx->cipher_info == NULL )
493  return MBEDTLS_CIPHER_NONE;
494 
495  return ctx->cipher_info->type;
496 }
497 
507 static inline const char *mbedtls_cipher_get_name(
508  const mbedtls_cipher_context_t *ctx )
509 {
510  MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 );
511  if( ctx->cipher_info == NULL )
512  return 0;
513 
514  return ctx->cipher_info->name;
515 }
516 
527  const mbedtls_cipher_context_t *ctx )
528 {
530  ctx != NULL, MBEDTLS_KEY_LENGTH_NONE );
531  if( ctx->cipher_info == NULL )
533 
534  return (int) ctx->cipher_info->key_bitlen;
535 }
536 
546  const mbedtls_cipher_context_t *ctx )
547 {
549  ctx != NULL, MBEDTLS_OPERATION_NONE );
550  if( ctx->cipher_info == NULL )
551  return MBEDTLS_OPERATION_NONE;
552 
553  return ctx->operation;
554 }
555 
573  const unsigned char *key,
574  int key_bitlen,
575  const mbedtls_operation_t operation );
576 
577 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
596 #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
597 
617  const unsigned char *iv,
618  size_t iv_len );
619 
630 
631 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
647  const unsigned char *ad, size_t ad_len );
648 #endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */
649 
684 int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input,
685  size_t ilen, unsigned char *output, size_t *olen );
686 
710  unsigned char *output, size_t *olen );
711 
712 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
730  unsigned char *tag, size_t tag_len );
731 
746  const unsigned char *tag, size_t tag_len );
747 #endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */
748 
783  const unsigned char *iv, size_t iv_len,
784  const unsigned char *input, size_t ilen,
785  unsigned char *output, size_t *olen );
786 
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 );
824 
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 );
866 #endif /* MBEDTLS_CIPHER_MODE_AEAD */
867 
868 #ifdef __cplusplus
869 }
870 #endif
871 
872 #endif /* MBEDTLS_CIPHER_H */
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....
mbedtls_cipher_type_t
Supported {cipher type, cipher mode} pairs.
Definition: cipher.h:104
@ MBEDTLS_CIPHER_AES_128_ECB
Definition: cipher.h:107
@ MBEDTLS_CIPHER_ARIA_256_CTR
Definition: cipher.h:165
@ MBEDTLS_CIPHER_CAMELLIA_128_GCM
Definition: cipher.h:134
@ MBEDTLS_CIPHER_AES_128_XTS
Definition: cipher.h:175
@ MBEDTLS_CIPHER_CHACHA20
Definition: cipher.h:177
@ MBEDTLS_CIPHER_DES_EDE3_CBC
Definition: cipher.h:142
@ MBEDTLS_CIPHER_DES_ECB
Definition: cipher.h:137
@ MBEDTLS_CIPHER_ARIA_128_GCM
Definition: cipher.h:166
@ MBEDTLS_CIPHER_AES_128_CBC
Definition: cipher.h:110
@ MBEDTLS_CIPHER_AES_192_GCM
Definition: cipher.h:120
@ MBEDTLS_CIPHER_BLOWFISH_CTR
Definition: cipher.h:146
@ MBEDTLS_CIPHER_AES_128_OFB
Definition: cipher.h:172
@ MBEDTLS_CIPHER_ARIA_192_ECB
Definition: cipher.h:155
@ MBEDTLS_CIPHER_CAMELLIA_256_GCM
Definition: cipher.h:136
@ MBEDTLS_CIPHER_DES_EDE_ECB
Definition: cipher.h:139
@ MBEDTLS_CIPHER_BLOWFISH_CFB64
Definition: cipher.h:145
@ MBEDTLS_CIPHER_ARIA_256_CFB128
Definition: cipher.h:162
@ MBEDTLS_CIPHER_ARIA_192_CBC
Definition: cipher.h:158
@ MBEDTLS_CIPHER_CAMELLIA_192_CBC
Definition: cipher.h:126
@ MBEDTLS_CIPHER_ARIA_128_CTR
Definition: cipher.h:163
@ MBEDTLS_CIPHER_ARIA_192_CCM
Definition: cipher.h:170
@ MBEDTLS_CIPHER_CAMELLIA_192_GCM
Definition: cipher.h:135
@ MBEDTLS_CIPHER_AES_192_OFB
Definition: cipher.h:173
@ MBEDTLS_CIPHER_AES_256_ECB
Definition: cipher.h:109
@ MBEDTLS_CIPHER_AES_256_CTR
Definition: cipher.h:118
@ MBEDTLS_CIPHER_AES_192_CCM
Definition: cipher.h:149
@ MBEDTLS_CIPHER_AES_128_CFB128
Definition: cipher.h:113
@ MBEDTLS_CIPHER_CAMELLIA_192_CFB128
Definition: cipher.h:129
@ MBEDTLS_CIPHER_CAMELLIA_128_CCM
Definition: cipher.h:151
@ MBEDTLS_CIPHER_AES_128_CTR
Definition: cipher.h:116
@ MBEDTLS_CIPHER_ARIA_192_GCM
Definition: cipher.h:167
@ MBEDTLS_CIPHER_AES_256_XTS
Definition: cipher.h:176
@ MBEDTLS_CIPHER_AES_192_CFB128
Definition: cipher.h:114
@ MBEDTLS_CIPHER_ARIA_256_ECB
Definition: cipher.h:156
@ MBEDTLS_CIPHER_CAMELLIA_256_CCM
Definition: cipher.h:153
@ MBEDTLS_CIPHER_AES_256_GCM
Definition: cipher.h:121
@ MBEDTLS_CIPHER_DES_CBC
Definition: cipher.h:138
@ MBEDTLS_CIPHER_CAMELLIA_128_CFB128
Definition: cipher.h:128
@ MBEDTLS_CIPHER_CAMELLIA_128_CBC
Definition: cipher.h:125
@ MBEDTLS_CIPHER_AES_256_CCM
Definition: cipher.h:150
@ MBEDTLS_CIPHER_CAMELLIA_256_CFB128
Definition: cipher.h:130
@ MBEDTLS_CIPHER_ARIA_192_CTR
Definition: cipher.h:164
@ MBEDTLS_CIPHER_BLOWFISH_CBC
Definition: cipher.h:144
@ MBEDTLS_CIPHER_CAMELLIA_256_ECB
Definition: cipher.h:124
@ MBEDTLS_CIPHER_AES_128_GCM
Definition: cipher.h:119
@ MBEDTLS_CIPHER_CAMELLIA_192_ECB
Definition: cipher.h:123
@ MBEDTLS_CIPHER_AES_256_CFB128
Definition: cipher.h:115
@ MBEDTLS_CIPHER_NONE
Definition: cipher.h:105
@ MBEDTLS_CIPHER_CHACHA20_POLY1305
Definition: cipher.h:178
@ MBEDTLS_CIPHER_CAMELLIA_128_ECB
Definition: cipher.h:122
@ MBEDTLS_CIPHER_AES_192_CBC
Definition: cipher.h:111
@ MBEDTLS_CIPHER_CAMELLIA_192_CCM
Definition: cipher.h:152
@ MBEDTLS_CIPHER_ARIA_128_CCM
Definition: cipher.h:169
@ MBEDTLS_CIPHER_AES_192_CTR
Definition: cipher.h:117
@ MBEDTLS_CIPHER_AES_128_CCM
Definition: cipher.h:148
@ MBEDTLS_CIPHER_DES_EDE_CBC
Definition: cipher.h:140
@ MBEDTLS_CIPHER_NULL
Definition: cipher.h:106
@ MBEDTLS_CIPHER_ARIA_256_CBC
Definition: cipher.h:159
@ MBEDTLS_CIPHER_AES_256_OFB
Definition: cipher.h:174
@ MBEDTLS_CIPHER_ARIA_192_CFB128
Definition: cipher.h:161
@ MBEDTLS_CIPHER_CAMELLIA_128_CTR
Definition: cipher.h:131
@ MBEDTLS_CIPHER_BLOWFISH_ECB
Definition: cipher.h:143
@ MBEDTLS_CIPHER_AES_256_CBC
Definition: cipher.h:112
@ MBEDTLS_CIPHER_ARC4_128
Definition: cipher.h:147
@ MBEDTLS_CIPHER_CAMELLIA_192_CTR
Definition: cipher.h:132
@ MBEDTLS_CIPHER_AES_192_ECB
Definition: cipher.h:108
@ MBEDTLS_CIPHER_ARIA_256_GCM
Definition: cipher.h:168
@ MBEDTLS_CIPHER_DES_EDE3_ECB
Definition: cipher.h:141
@ MBEDTLS_CIPHER_ARIA_128_CBC
Definition: cipher.h:157
@ MBEDTLS_CIPHER_CAMELLIA_256_CTR
Definition: cipher.h:133
@ MBEDTLS_CIPHER_ARIA_128_ECB
Definition: cipher.h:154
@ MBEDTLS_CIPHER_CAMELLIA_256_CBC
Definition: cipher.h:127
@ MBEDTLS_CIPHER_ARIA_256_CCM
Definition: cipher.h:171
@ MBEDTLS_CIPHER_ARIA_128_CFB128
Definition: cipher.h:160
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.
@ MBEDTLS_KEY_LENGTH_DES
Definition: cipher.h:216
@ MBEDTLS_KEY_LENGTH_NONE
Definition: cipher.h:214
@ MBEDTLS_KEY_LENGTH_DES_EDE
Definition: cipher.h:218
@ MBEDTLS_KEY_LENGTH_DES_EDE3
Definition: cipher.h:220
struct mbedtls_cipher_info_t mbedtls_cipher_info_t
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.
int mbedtls_cipher_reset(mbedtls_cipher_context_t *ctx)
This function resets the cipher state.
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.
mbedtls_cipher_padding_t
Definition: cipher.h:197
@ MBEDTLS_PADDING_ZEROS
Definition: cipher.h:201
@ MBEDTLS_PADDING_ONE_AND_ZEROS
Definition: cipher.h:199
@ MBEDTLS_PADDING_PKCS7
Definition: cipher.h:198
@ MBEDTLS_PADDING_ZEROS_AND_LEN
Definition: cipher.h:200
@ MBEDTLS_PADDING_NONE
Definition: cipher.h:202
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.
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,...
static int mbedtls_cipher_get_key_bitlen(const mbedtls_cipher_context_t *ctx)
This function returns the key length of the cipher.
Definition: cipher.h:526
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.
const int * mbedtls_cipher_list(void)
This function retrieves the list of ciphers supported by the generic cipher module.
struct mbedtls_cipher_context_t mbedtls_cipher_context_t
void mbedtls_cipher_init(mbedtls_cipher_context_t *ctx)
This function initializes a cipher_context as NONE.
int mbedtls_cipher_update_ad(mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len)
This function adds additional data for AEAD ciphers. Currently supported with GCM and ChaCha20+Poly13...
int mbedtls_cipher_write_tag(mbedtls_cipher_context_t *ctx, unsigned char *tag, size_t tag_len)
This function writes a tag for AEAD ciphers. Currently supported with GCM and ChaCha20+Poly1305....
static mbedtls_operation_t mbedtls_cipher_get_operation(const mbedtls_cipher_context_t *ctx)
This function returns the operation of the given cipher.
Definition: cipher.h:545
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.
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...
static int mbedtls_cipher_get_iv_size(const mbedtls_cipher_context_t *ctx)
This function returns the size of the IV or nonce of the cipher, in Bytes.
Definition: cipher.h:466
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....
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,...
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.
static mbedtls_cipher_type_t mbedtls_cipher_get_type(const mbedtls_cipher_context_t *ctx)
This function returns the type of the given cipher.
Definition: cipher.h:487
static unsigned int mbedtls_cipher_get_block_size(const mbedtls_cipher_context_t *ctx)
This function returns the block size of the given cipher.
Definition: cipher.h:427
struct mbedtls_cipher_base_t mbedtls_cipher_base_t
Definition: cipher.h:231
mbedtls_operation_t
Definition: cipher.h:206
@ MBEDTLS_DECRYPT
Definition: cipher.h:208
@ MBEDTLS_OPERATION_NONE
Definition: cipher.h:207
@ MBEDTLS_ENCRYPT
Definition: cipher.h:209
#define MBEDTLS_MAX_BLOCK_LENGTH
Definition: cipher.h:226
static const char * mbedtls_cipher_get_name(const mbedtls_cipher_context_t *ctx)
This function returns the name of the given cipher as a string.
Definition: cipher.h:507
int mbedtls_cipher_check_tag(mbedtls_cipher_context_t *ctx, const unsigned char *tag, size_t tag_len)
This function checks the tag for AEAD ciphers. Currently supported with GCM and ChaCha20+Poly1305....
static mbedtls_cipher_mode_t mbedtls_cipher_get_cipher_mode(const mbedtls_cipher_context_t *ctx)
This function returns the mode of operation for the cipher. For example, MBEDTLS_MODE_CBC.
Definition: cipher.h:446
mbedtls_cipher_mode_t
Definition: cipher.h:182
@ MBEDTLS_MODE_ECB
Definition: cipher.h:184
@ MBEDTLS_MODE_CCM
Definition: cipher.h:191
@ MBEDTLS_MODE_STREAM
Definition: cipher.h:190
@ MBEDTLS_MODE_NONE
Definition: cipher.h:183
@ MBEDTLS_MODE_CFB
Definition: cipher.h:186
@ MBEDTLS_MODE_CTR
Definition: cipher.h:188
@ MBEDTLS_MODE_GCM
Definition: cipher.h:189
@ MBEDTLS_MODE_CBC
Definition: cipher.h:185
@ MBEDTLS_MODE_OFB
Definition: cipher.h:187
@ MBEDTLS_MODE_CHACHAPOLY
Definition: cipher.h:193
@ MBEDTLS_MODE_XTS
Definition: cipher.h:192
#define MBEDTLS_MAX_IV_LENGTH
Definition: cipher.h:224
mbedtls_cipher_id_t
Supported cipher types.
Definition: cipher.h:84
@ MBEDTLS_CIPHER_ID_3DES
Definition: cipher.h:89
@ MBEDTLS_CIPHER_ID_CAMELLIA
Definition: cipher.h:90
@ MBEDTLS_CIPHER_ID_DES
Definition: cipher.h:88
@ MBEDTLS_CIPHER_ID_ARC4
Definition: cipher.h:92
@ MBEDTLS_CIPHER_ID_NULL
Definition: cipher.h:86
@ MBEDTLS_CIPHER_ID_AES
Definition: cipher.h:87
@ MBEDTLS_CIPHER_ID_ARIA
Definition: cipher.h:93
@ MBEDTLS_CIPHER_ID_NONE
Definition: cipher.h:85
@ MBEDTLS_CIPHER_ID_CHACHA20
Definition: cipher.h:94
@ MBEDTLS_CIPHER_ID_BLOWFISH
Definition: cipher.h:91
int mbedtls_cipher_set_padding_mode(mbedtls_cipher_context_t *ctx, mbedtls_cipher_padding_t mode)
This function sets the padding mode, for cipher modes that use padding.
Configuration options (set of defines)
Common and shared functions used by multiple modules in the Mbed TLS library.
#define MBEDTLS_INTERNAL_VALIDATE_RET(cond, ret)
mbedtls_operation_t operation
Definition: cipher.h:295
unsigned char iv[MBEDTLS_MAX_IV_LENGTH]
Definition: cipher.h:313
void(* add_padding)(unsigned char *output, size_t olen, size_t data_len)
Definition: cipher.h:301
unsigned char unprocessed_data[MBEDTLS_MAX_BLOCK_LENGTH]
Definition: cipher.h:306
int(* get_padding)(unsigned char *input, size_t ilen, size_t *data_len)
Definition: cipher.h:302
const mbedtls_cipher_info_t * cipher_info
Definition: cipher.h:287
unsigned int key_bitlen
Definition: cipher.h:256
unsigned int iv_size
Definition: cipher.h:265
mbedtls_cipher_type_t type
Definition: cipher.h:247
mbedtls_cipher_mode_t mode
Definition: cipher.h:250
unsigned int block_size
Definition: cipher.h:274
const char * name
Definition: cipher.h:259
const mbedtls_cipher_base_t * base
Definition: cipher.h:277