mbed TLS v2.16.12
cipher.h
Go to the documentation of this file.
1 
10 /*
11  * Copyright The Mbed TLS Contributors
12  * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
13  *
14  * This file is provided under the Apache License 2.0, or the
15  * GNU General Public License v2.0 or later.
16  *
17  * **********
18  * Apache License 2.0:
19  *
20  * Licensed under the Apache License, Version 2.0 (the "License"); you may
21  * not use this file except in compliance with the License.
22  * You may obtain a copy of the License at
23  *
24  * http://www.apache.org/licenses/LICENSE-2.0
25  *
26  * Unless required by applicable law or agreed to in writing, software
27  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
28  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29  * See the License for the specific language governing permissions and
30  * limitations under the License.
31  *
32  * **********
33  *
34  * **********
35  * GNU General Public License v2.0 or later:
36  *
37  * This program is free software; you can redistribute it and/or modify
38  * it under the terms of the GNU General Public License as published by
39  * the Free Software Foundation; either version 2 of the License, or
40  * (at your option) any later version.
41  *
42  * This program is distributed in the hope that it will be useful,
43  * but WITHOUT ANY WARRANTY; without even the implied warranty of
44  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45  * GNU General Public License for more details.
46  *
47  * You should have received a copy of the GNU General Public License along
48  * with this program; if not, write to the Free Software Foundation, Inc.,
49  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
50  *
51  * **********
52  */
53 
54 #ifndef MBEDTLS_CIPHER_H
55 #define MBEDTLS_CIPHER_H
56 
57 #if !defined(MBEDTLS_CONFIG_FILE)
58 #include "config.h"
59 #else
60 #include MBEDTLS_CONFIG_FILE
61 #endif
62 
63 #include <stddef.h>
64 #include "platform_util.h"
65 
66 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
67 #define MBEDTLS_CIPHER_MODE_AEAD
68 #endif
69 
70 #if defined(MBEDTLS_CIPHER_MODE_CBC)
71 #define MBEDTLS_CIPHER_MODE_WITH_PADDING
72 #endif
73 
74 #if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \
75  defined(MBEDTLS_CHACHA20_C)
76 #define MBEDTLS_CIPHER_MODE_STREAM
77 #endif
78 
79 #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
80  !defined(inline) && !defined(__cplusplus)
81 #define inline __inline
82 #endif
83 
85 #define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080
87 #define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100
89 #define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180
91 #define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200
93 #define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280
95 #define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300
97 #define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380
98 
99 /* MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED is deprecated and should not be used. */
101 #define MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED -0x6400
102 
103 #define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01
104 #define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02
106 #ifdef __cplusplus
107 extern "C" {
108 #endif
109 
117 typedef enum {
129 
137 typedef enum {
213 
215 typedef enum {
228 
230 typedef enum {
237 
239 typedef enum {
244 
245 enum {
254 };
255 
257 #define MBEDTLS_MAX_IV_LENGTH 16
259 #define MBEDTLS_MAX_BLOCK_LENGTH 16
260 
265 
270 
275 typedef struct mbedtls_cipher_info_t
276 {
281 
284 
289  unsigned int key_bitlen;
290 
292  const char * name;
293 
298  unsigned int iv_size;
299 
304  int flags;
305 
307  unsigned int block_size;
308 
311 
313 
318 {
321 
324 
329 
330 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
334  void (*add_padding)( unsigned char *output, size_t olen, size_t data_len );
335  int (*get_padding)( unsigned char *input, size_t ilen, size_t *data_len );
336 #endif
337 
340 
343 
346  unsigned char iv[MBEDTLS_MAX_IV_LENGTH];
347 
349  size_t iv_size;
350 
352  void *cipher_ctx;
353 
354 #if defined(MBEDTLS_CMAC_C)
356  mbedtls_cmac_context_t *cmac_ctx;
357 #endif
359 
367 const int *mbedtls_cipher_list( void );
368 
380 const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string( const char *cipher_name );
381 
393 
409  int key_bitlen,
410  const mbedtls_cipher_mode_t mode );
411 
418 
429 
430 
450  const mbedtls_cipher_info_t *cipher_info );
451 
460 static inline unsigned int mbedtls_cipher_get_block_size(
461  const mbedtls_cipher_context_t *ctx )
462 {
463  MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 );
464  if( ctx->cipher_info == NULL )
465  return 0;
466 
467  return ctx->cipher_info->block_size;
468 }
469 
480  const mbedtls_cipher_context_t *ctx )
481 {
483  if( ctx->cipher_info == NULL )
484  return MBEDTLS_MODE_NONE;
485 
486  return ctx->cipher_info->mode;
487 }
488 
499 static inline int mbedtls_cipher_get_iv_size(
500  const mbedtls_cipher_context_t *ctx )
501 {
502  MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 );
503  if( ctx->cipher_info == NULL )
504  return 0;
505 
506  if( ctx->iv_size != 0 )
507  return (int) ctx->iv_size;
508 
509  return (int) ctx->cipher_info->iv_size;
510 }
511 
521  const mbedtls_cipher_context_t *ctx )
522 {
524  ctx != NULL, MBEDTLS_CIPHER_NONE );
525  if( ctx->cipher_info == NULL )
526  return MBEDTLS_CIPHER_NONE;
527 
528  return ctx->cipher_info->type;
529 }
530 
540 static inline const char *mbedtls_cipher_get_name(
541  const mbedtls_cipher_context_t *ctx )
542 {
543  MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 );
544  if( ctx->cipher_info == NULL )
545  return 0;
546 
547  return ctx->cipher_info->name;
548 }
549 
560  const mbedtls_cipher_context_t *ctx )
561 {
563  ctx != NULL, MBEDTLS_KEY_LENGTH_NONE );
564  if( ctx->cipher_info == NULL )
566 
567  return (int) ctx->cipher_info->key_bitlen;
568 }
569 
579  const mbedtls_cipher_context_t *ctx )
580 {
582  ctx != NULL, MBEDTLS_OPERATION_NONE );
583  if( ctx->cipher_info == NULL )
584  return MBEDTLS_OPERATION_NONE;
585 
586  return ctx->operation;
587 }
588 
606  const unsigned char *key,
607  int key_bitlen,
608  const mbedtls_operation_t operation );
609 
610 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
629 #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
630 
650  const unsigned char *iv,
651  size_t iv_len );
652 
663 
664 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
680  const unsigned char *ad, size_t ad_len );
681 #endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */
682 
717 int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input,
718  size_t ilen, unsigned char *output, size_t *olen );
719 
743  unsigned char *output, size_t *olen );
744 
745 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
763  unsigned char *tag, size_t tag_len );
764 
779  const unsigned char *tag, size_t tag_len );
780 #endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */
781 
816  const unsigned char *iv, size_t iv_len,
817  const unsigned char *input, size_t ilen,
818  unsigned char *output, size_t *olen );
819 
820 #if defined(MBEDTLS_CIPHER_MODE_AEAD)
852  const unsigned char *iv, size_t iv_len,
853  const unsigned char *ad, size_t ad_len,
854  const unsigned char *input, size_t ilen,
855  unsigned char *output, size_t *olen,
856  unsigned char *tag, size_t tag_len );
857 
894  const unsigned char *iv, size_t iv_len,
895  const unsigned char *ad, size_t ad_len,
896  const unsigned char *input, size_t ilen,
897  unsigned char *output, size_t *olen,
898  const unsigned char *tag, size_t tag_len );
899 #endif /* MBEDTLS_CIPHER_MODE_AEAD */
900 
901 #ifdef __cplusplus
902 }
903 #endif
904 
905 #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:137
@ MBEDTLS_CIPHER_AES_128_ECB
Definition: cipher.h:140
@ MBEDTLS_CIPHER_ARIA_256_CTR
Definition: cipher.h:198
@ MBEDTLS_CIPHER_CAMELLIA_128_GCM
Definition: cipher.h:167
@ MBEDTLS_CIPHER_AES_128_XTS
Definition: cipher.h:208
@ MBEDTLS_CIPHER_CHACHA20
Definition: cipher.h:210
@ MBEDTLS_CIPHER_DES_EDE3_CBC
Definition: cipher.h:175
@ MBEDTLS_CIPHER_DES_ECB
Definition: cipher.h:170
@ MBEDTLS_CIPHER_ARIA_128_GCM
Definition: cipher.h:199
@ MBEDTLS_CIPHER_AES_128_CBC
Definition: cipher.h:143
@ MBEDTLS_CIPHER_AES_192_GCM
Definition: cipher.h:153
@ MBEDTLS_CIPHER_BLOWFISH_CTR
Definition: cipher.h:179
@ MBEDTLS_CIPHER_AES_128_OFB
Definition: cipher.h:205
@ MBEDTLS_CIPHER_ARIA_192_ECB
Definition: cipher.h:188
@ MBEDTLS_CIPHER_CAMELLIA_256_GCM
Definition: cipher.h:169
@ MBEDTLS_CIPHER_DES_EDE_ECB
Definition: cipher.h:172
@ MBEDTLS_CIPHER_BLOWFISH_CFB64
Definition: cipher.h:178
@ MBEDTLS_CIPHER_ARIA_256_CFB128
Definition: cipher.h:195
@ MBEDTLS_CIPHER_ARIA_192_CBC
Definition: cipher.h:191
@ MBEDTLS_CIPHER_CAMELLIA_192_CBC
Definition: cipher.h:159
@ MBEDTLS_CIPHER_ARIA_128_CTR
Definition: cipher.h:196
@ MBEDTLS_CIPHER_ARIA_192_CCM
Definition: cipher.h:203
@ MBEDTLS_CIPHER_CAMELLIA_192_GCM
Definition: cipher.h:168
@ MBEDTLS_CIPHER_AES_192_OFB
Definition: cipher.h:206
@ MBEDTLS_CIPHER_AES_256_ECB
Definition: cipher.h:142
@ MBEDTLS_CIPHER_AES_256_CTR
Definition: cipher.h:151
@ MBEDTLS_CIPHER_AES_192_CCM
Definition: cipher.h:182
@ MBEDTLS_CIPHER_AES_128_CFB128
Definition: cipher.h:146
@ MBEDTLS_CIPHER_CAMELLIA_192_CFB128
Definition: cipher.h:162
@ MBEDTLS_CIPHER_CAMELLIA_128_CCM
Definition: cipher.h:184
@ MBEDTLS_CIPHER_AES_128_CTR
Definition: cipher.h:149
@ MBEDTLS_CIPHER_ARIA_192_GCM
Definition: cipher.h:200
@ MBEDTLS_CIPHER_AES_256_XTS
Definition: cipher.h:209
@ MBEDTLS_CIPHER_AES_192_CFB128
Definition: cipher.h:147
@ MBEDTLS_CIPHER_ARIA_256_ECB
Definition: cipher.h:189
@ MBEDTLS_CIPHER_CAMELLIA_256_CCM
Definition: cipher.h:186
@ MBEDTLS_CIPHER_AES_256_GCM
Definition: cipher.h:154
@ MBEDTLS_CIPHER_DES_CBC
Definition: cipher.h:171
@ MBEDTLS_CIPHER_CAMELLIA_128_CFB128
Definition: cipher.h:161
@ MBEDTLS_CIPHER_CAMELLIA_128_CBC
Definition: cipher.h:158
@ MBEDTLS_CIPHER_AES_256_CCM
Definition: cipher.h:183
@ MBEDTLS_CIPHER_CAMELLIA_256_CFB128
Definition: cipher.h:163
@ MBEDTLS_CIPHER_ARIA_192_CTR
Definition: cipher.h:197
@ MBEDTLS_CIPHER_BLOWFISH_CBC
Definition: cipher.h:177
@ MBEDTLS_CIPHER_CAMELLIA_256_ECB
Definition: cipher.h:157
@ MBEDTLS_CIPHER_AES_128_GCM
Definition: cipher.h:152
@ MBEDTLS_CIPHER_CAMELLIA_192_ECB
Definition: cipher.h:156
@ MBEDTLS_CIPHER_AES_256_CFB128
Definition: cipher.h:148
@ MBEDTLS_CIPHER_NONE
Definition: cipher.h:138
@ MBEDTLS_CIPHER_CHACHA20_POLY1305
Definition: cipher.h:211
@ MBEDTLS_CIPHER_CAMELLIA_128_ECB
Definition: cipher.h:155
@ MBEDTLS_CIPHER_AES_192_CBC
Definition: cipher.h:144
@ MBEDTLS_CIPHER_CAMELLIA_192_CCM
Definition: cipher.h:185
@ MBEDTLS_CIPHER_ARIA_128_CCM
Definition: cipher.h:202
@ MBEDTLS_CIPHER_AES_192_CTR
Definition: cipher.h:150
@ MBEDTLS_CIPHER_AES_128_CCM
Definition: cipher.h:181
@ MBEDTLS_CIPHER_DES_EDE_CBC
Definition: cipher.h:173
@ MBEDTLS_CIPHER_NULL
Definition: cipher.h:139
@ MBEDTLS_CIPHER_ARIA_256_CBC
Definition: cipher.h:192
@ MBEDTLS_CIPHER_AES_256_OFB
Definition: cipher.h:207
@ MBEDTLS_CIPHER_ARIA_192_CFB128
Definition: cipher.h:194
@ MBEDTLS_CIPHER_CAMELLIA_128_CTR
Definition: cipher.h:164
@ MBEDTLS_CIPHER_BLOWFISH_ECB
Definition: cipher.h:176
@ MBEDTLS_CIPHER_AES_256_CBC
Definition: cipher.h:145
@ MBEDTLS_CIPHER_ARC4_128
Definition: cipher.h:180
@ MBEDTLS_CIPHER_CAMELLIA_192_CTR
Definition: cipher.h:165
@ MBEDTLS_CIPHER_AES_192_ECB
Definition: cipher.h:141
@ MBEDTLS_CIPHER_ARIA_256_GCM
Definition: cipher.h:201
@ MBEDTLS_CIPHER_DES_EDE3_ECB
Definition: cipher.h:174
@ MBEDTLS_CIPHER_ARIA_128_CBC
Definition: cipher.h:190
@ MBEDTLS_CIPHER_CAMELLIA_256_CTR
Definition: cipher.h:166
@ MBEDTLS_CIPHER_ARIA_128_ECB
Definition: cipher.h:187
@ MBEDTLS_CIPHER_CAMELLIA_256_CBC
Definition: cipher.h:160
@ MBEDTLS_CIPHER_ARIA_256_CCM
Definition: cipher.h:204
@ MBEDTLS_CIPHER_ARIA_128_CFB128
Definition: cipher.h:193
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:249
@ MBEDTLS_KEY_LENGTH_NONE
Definition: cipher.h:247
@ MBEDTLS_KEY_LENGTH_DES_EDE
Definition: cipher.h:251
@ MBEDTLS_KEY_LENGTH_DES_EDE3
Definition: cipher.h:253
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:230
@ MBEDTLS_PADDING_ZEROS
Definition: cipher.h:234
@ MBEDTLS_PADDING_ONE_AND_ZEROS
Definition: cipher.h:232
@ MBEDTLS_PADDING_PKCS7
Definition: cipher.h:231
@ MBEDTLS_PADDING_ZEROS_AND_LEN
Definition: cipher.h:233
@ MBEDTLS_PADDING_NONE
Definition: cipher.h:235
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:559
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:578
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:499
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:520
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:460
struct mbedtls_cipher_base_t mbedtls_cipher_base_t
Definition: cipher.h:264
mbedtls_operation_t
Definition: cipher.h:239
@ MBEDTLS_DECRYPT
Definition: cipher.h:241
@ MBEDTLS_OPERATION_NONE
Definition: cipher.h:240
@ MBEDTLS_ENCRYPT
Definition: cipher.h:242
#define MBEDTLS_MAX_BLOCK_LENGTH
Definition: cipher.h:259
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:540
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:479
mbedtls_cipher_mode_t
Definition: cipher.h:215
@ MBEDTLS_MODE_ECB
Definition: cipher.h:217
@ MBEDTLS_MODE_CCM
Definition: cipher.h:224
@ MBEDTLS_MODE_STREAM
Definition: cipher.h:223
@ MBEDTLS_MODE_NONE
Definition: cipher.h:216
@ MBEDTLS_MODE_CFB
Definition: cipher.h:219
@ MBEDTLS_MODE_CTR
Definition: cipher.h:221
@ MBEDTLS_MODE_GCM
Definition: cipher.h:222
@ MBEDTLS_MODE_CBC
Definition: cipher.h:218
@ MBEDTLS_MODE_OFB
Definition: cipher.h:220
@ MBEDTLS_MODE_CHACHAPOLY
Definition: cipher.h:226
@ MBEDTLS_MODE_XTS
Definition: cipher.h:225
#define MBEDTLS_MAX_IV_LENGTH
Definition: cipher.h:257
mbedtls_cipher_id_t
Supported cipher types.
Definition: cipher.h:117
@ MBEDTLS_CIPHER_ID_3DES
Definition: cipher.h:122
@ MBEDTLS_CIPHER_ID_CAMELLIA
Definition: cipher.h:123
@ MBEDTLS_CIPHER_ID_DES
Definition: cipher.h:121
@ MBEDTLS_CIPHER_ID_ARC4
Definition: cipher.h:125
@ MBEDTLS_CIPHER_ID_NULL
Definition: cipher.h:119
@ MBEDTLS_CIPHER_ID_AES
Definition: cipher.h:120
@ MBEDTLS_CIPHER_ID_ARIA
Definition: cipher.h:126
@ MBEDTLS_CIPHER_ID_NONE
Definition: cipher.h:118
@ MBEDTLS_CIPHER_ID_CHACHA20
Definition: cipher.h:127
@ MBEDTLS_CIPHER_ID_BLOWFISH
Definition: cipher.h:124
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:328
unsigned char iv[MBEDTLS_MAX_IV_LENGTH]
Definition: cipher.h:346
void(* add_padding)(unsigned char *output, size_t olen, size_t data_len)
Definition: cipher.h:334
unsigned char unprocessed_data[MBEDTLS_MAX_BLOCK_LENGTH]
Definition: cipher.h:339
int(* get_padding)(unsigned char *input, size_t ilen, size_t *data_len)
Definition: cipher.h:335
const mbedtls_cipher_info_t * cipher_info
Definition: cipher.h:320
unsigned int key_bitlen
Definition: cipher.h:289
unsigned int iv_size
Definition: cipher.h:298
mbedtls_cipher_type_t type
Definition: cipher.h:280
mbedtls_cipher_mode_t mode
Definition: cipher.h:283
unsigned int block_size
Definition: cipher.h:307
const char * name
Definition: cipher.h:292
const mbedtls_cipher_base_t * base
Definition: cipher.h:310