Mbed TLS v2.28.9
Loading...
Searching...
No Matches
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
15#ifndef MBEDTLS_CIPHER_H
16#define MBEDTLS_CIPHER_H
17
18#if !defined(MBEDTLS_CONFIG_FILE)
19#include "mbedtls/config.h"
20#else
21#include MBEDTLS_CONFIG_FILE
22#endif
23
24#include <stddef.h>
26
27#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
28#define MBEDTLS_CIPHER_MODE_AEAD
29#endif
30
31#if defined(MBEDTLS_CIPHER_MODE_CBC)
32#define MBEDTLS_CIPHER_MODE_WITH_PADDING
33#endif
34
35#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \
36 defined(MBEDTLS_CHACHA20_C)
37#define MBEDTLS_CIPHER_MODE_STREAM
38#endif
39
40#if (defined(__ARMCC_VERSION) || defined(_MSC_VER)) && \
41 !defined(inline) && !defined(__cplusplus)
42#define inline __inline
43#endif
44
46#define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080
48#define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100
50#define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180
52#define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200
54#define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280
56#define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300
58#define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380
59
60/* MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED is deprecated and should not be used. */
62#define MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED -0x6400
63
64#define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01
65#define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02
67#ifdef __cplusplus
68extern "C" {
69#endif
70
90
98typedef enum {
180
197
206
213
214enum {
223};
224
226/* This should ideally be derived automatically from list of ciphers.
227 * This should be kept in sync with MBEDTLS_SSL_MAX_IV_LENGTH defined
228 * in ssl_internal.h. */
229#define MBEDTLS_MAX_IV_LENGTH 16
230
232/* This should ideally be derived automatically from list of ciphers.
233 * This should be kept in sync with MBEDTLS_SSL_MAX_BLOCK_LENGTH defined
234 * in ssl_internal.h. */
235#define MBEDTLS_MAX_BLOCK_LENGTH 16
236
238/* This should ideally be derived automatically from list of ciphers.
239 * For now, only check whether XTS is enabled which uses 64 Byte keys,
240 * and use 32 Bytes as an upper bound for the maximum key length otherwise.
241 * This should be kept in sync with MBEDTLS_SSL_MAX_BLOCK_LENGTH defined
242 * in ssl_internal.h, which however deliberately ignores the case of XTS
243 * since the latter isn't used in SSL/TLS. */
244#if defined(MBEDTLS_CIPHER_MODE_XTS)
245#define MBEDTLS_MAX_KEY_LENGTH 64
246#else
247#define MBEDTLS_MAX_KEY_LENGTH 32
248#endif /* MBEDTLS_CIPHER_MODE_XTS */
249
254
259
264typedef struct mbedtls_cipher_info_t {
269
272
277 unsigned int key_bitlen;
278
280 const char *name;
281
286 unsigned int iv_size;
287
292 int flags;
293
295 unsigned int block_size;
296
299
301
308
311
316
317#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
321 void (*add_padding)(unsigned char *output, size_t olen, size_t data_len);
322 int (*get_padding)(unsigned char *input, size_t ilen, size_t *data_len);
323#endif
324
327
330
333 unsigned char iv[MBEDTLS_MAX_IV_LENGTH];
334
336 size_t iv_size;
337
340
341#if defined(MBEDTLS_CMAC_C)
343 mbedtls_cmac_context_t *cmac_ctx;
344#endif
345
346#if defined(MBEDTLS_USE_PSA_CRYPTO)
354 unsigned char psa_enabled;
355#endif /* MBEDTLS_USE_PSA_CRYPTO */
356
358
372const int *mbedtls_cipher_list(void);
373
386
398
414 int key_bitlen,
415 const mbedtls_cipher_mode_t mode);
416
423
434
435
473 const mbedtls_cipher_info_t *cipher_info);
474
475#if defined(MBEDTLS_USE_PSA_CRYPTO)
497int mbedtls_cipher_setup_psa(mbedtls_cipher_context_t *ctx,
498 const mbedtls_cipher_info_t *cipher_info,
499 size_t taglen);
500#endif /* MBEDTLS_USE_PSA_CRYPTO */
501
510static inline unsigned int mbedtls_cipher_get_block_size(
511 const mbedtls_cipher_context_t *ctx)
512{
513 MBEDTLS_INTERNAL_VALIDATE_RET(ctx != NULL, 0);
514 if (ctx->cipher_info == NULL) {
515 return 0;
516 }
517
518 return ctx->cipher_info->block_size;
519}
520
531 const mbedtls_cipher_context_t *ctx)
532{
534 if (ctx->cipher_info == NULL) {
535 return MBEDTLS_MODE_NONE;
536 }
537
538 return ctx->cipher_info->mode;
539}
540
552 const mbedtls_cipher_context_t *ctx)
553{
554 MBEDTLS_INTERNAL_VALIDATE_RET(ctx != NULL, 0);
555 if (ctx->cipher_info == NULL) {
556 return 0;
557 }
558
559 if (ctx->iv_size != 0) {
560 return (int) ctx->iv_size;
561 }
562
563 return (int) ctx->cipher_info->iv_size;
564}
565
575 const mbedtls_cipher_context_t *ctx)
576{
578 ctx != NULL, MBEDTLS_CIPHER_NONE);
579 if (ctx->cipher_info == NULL) {
580 return MBEDTLS_CIPHER_NONE;
581 }
582
583 return ctx->cipher_info->type;
584}
585
595static inline const char *mbedtls_cipher_get_name(
596 const mbedtls_cipher_context_t *ctx)
597{
598 MBEDTLS_INTERNAL_VALIDATE_RET(ctx != NULL, 0);
599 if (ctx->cipher_info == NULL) {
600 return 0;
601 }
602
603 return ctx->cipher_info->name;
604}
605
616 const mbedtls_cipher_context_t *ctx)
617{
619 ctx != NULL, MBEDTLS_KEY_LENGTH_NONE);
620 if (ctx->cipher_info == NULL) {
622 }
623
624 return (int) ctx->cipher_info->key_bitlen;
625}
626
636 const mbedtls_cipher_context_t *ctx)
637{
639 ctx != NULL, MBEDTLS_OPERATION_NONE);
640 if (ctx->cipher_info == NULL) {
642 }
643
644 return ctx->operation;
645}
646
664 const unsigned char *key,
665 int key_bitlen,
666 const mbedtls_operation_t operation);
667
668#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
685#endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
686
706 const unsigned char *iv,
707 size_t iv_len);
708
741
742#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
758 const unsigned char *ad, size_t ad_len);
759#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */
760
796 const unsigned char *input,
797 size_t ilen, unsigned char *output,
798 size_t *olen);
799
823 unsigned char *output, size_t *olen);
824
825#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
843 unsigned char *tag, size_t tag_len);
844
859 const unsigned char *tag, size_t tag_len);
860#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */
861
896 const unsigned char *iv, size_t iv_len,
897 const unsigned char *input, size_t ilen,
898 unsigned char *output, size_t *olen);
899
900#if defined(MBEDTLS_CIPHER_MODE_AEAD)
901#if !defined(MBEDTLS_DEPRECATED_REMOVED)
902#if defined(MBEDTLS_DEPRECATED_WARNING)
903#define MBEDTLS_DEPRECATED __attribute__((deprecated))
904#else
905#define MBEDTLS_DEPRECATED
906#endif /* MBEDTLS_DEPRECATED_WARNING */
955 const unsigned char *iv, size_t iv_len,
956 const unsigned char *ad, size_t ad_len,
957 const unsigned char *input, size_t ilen,
958 unsigned char *output, size_t *olen,
959 unsigned char *tag, size_t tag_len);
960
1014 const unsigned char *iv, size_t iv_len,
1015 const unsigned char *ad, size_t ad_len,
1016 const unsigned char *input, size_t ilen,
1017 unsigned char *output, size_t *olen,
1018 const unsigned char *tag, size_t tag_len);
1019#undef MBEDTLS_DEPRECATED
1020#endif /* MBEDTLS_DEPRECATED_REMOVED */
1021#endif /* MBEDTLS_CIPHER_MODE_AEAD */
1022
1023#if defined(MBEDTLS_CIPHER_MODE_AEAD) || defined(MBEDTLS_NIST_KW_C)
1069 const unsigned char *iv, size_t iv_len,
1070 const unsigned char *ad, size_t ad_len,
1071 const unsigned char *input, size_t ilen,
1072 unsigned char *output, size_t output_len,
1073 size_t *olen, size_t tag_len);
1074
1125 const unsigned char *iv, size_t iv_len,
1126 const unsigned char *ad, size_t ad_len,
1127 const unsigned char *input, size_t ilen,
1128 unsigned char *output, size_t output_len,
1129 size_t *olen, size_t tag_len);
1130#endif /* MBEDTLS_CIPHER_MODE_AEAD || MBEDTLS_NIST_KW_C */
1131#ifdef __cplusplus
1132}
1133#endif
1134
1135#endif /* MBEDTLS_CIPHER_H */
int mbedtls_cipher_setup(mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info)
This function prepares a cipher context for use with the given cipher primitive.
mbedtls_cipher_type_t
Supported {cipher type, cipher mode} pairs.
Definition cipher.h:98
@ MBEDTLS_CIPHER_AES_128_ECB
Definition cipher.h:101
@ MBEDTLS_CIPHER_ARIA_256_CTR
Definition cipher.h:159
@ MBEDTLS_CIPHER_CAMELLIA_128_GCM
Definition cipher.h:128
@ MBEDTLS_CIPHER_AES_128_XTS
Definition cipher.h:169
@ MBEDTLS_CIPHER_CHACHA20
Definition cipher.h:171
@ MBEDTLS_CIPHER_DES_EDE3_CBC
Definition cipher.h:136
@ MBEDTLS_CIPHER_DES_ECB
Definition cipher.h:131
@ MBEDTLS_CIPHER_ARIA_128_GCM
Definition cipher.h:160
@ MBEDTLS_CIPHER_AES_128_CBC
Definition cipher.h:104
@ MBEDTLS_CIPHER_AES_192_GCM
Definition cipher.h:114
@ MBEDTLS_CIPHER_BLOWFISH_CTR
Definition cipher.h:140
@ MBEDTLS_CIPHER_AES_128_OFB
Definition cipher.h:166
@ MBEDTLS_CIPHER_ARIA_192_ECB
Definition cipher.h:149
@ MBEDTLS_CIPHER_CAMELLIA_256_GCM
Definition cipher.h:130
@ MBEDTLS_CIPHER_DES_EDE_ECB
Definition cipher.h:133
@ MBEDTLS_CIPHER_BLOWFISH_CFB64
Definition cipher.h:139
@ MBEDTLS_CIPHER_ARIA_256_CFB128
Definition cipher.h:156
@ MBEDTLS_CIPHER_ARIA_192_CBC
Definition cipher.h:152
@ MBEDTLS_CIPHER_CAMELLIA_192_CBC
Definition cipher.h:120
@ MBEDTLS_CIPHER_ARIA_128_CTR
Definition cipher.h:157
@ MBEDTLS_CIPHER_ARIA_192_CCM
Definition cipher.h:164
@ MBEDTLS_CIPHER_CAMELLIA_192_GCM
Definition cipher.h:129
@ MBEDTLS_CIPHER_AES_192_OFB
Definition cipher.h:167
@ MBEDTLS_CIPHER_AES_256_ECB
Definition cipher.h:103
@ MBEDTLS_CIPHER_AES_256_CTR
Definition cipher.h:112
@ MBEDTLS_CIPHER_AES_192_CCM
Definition cipher.h:143
@ MBEDTLS_CIPHER_AES_128_CFB128
Definition cipher.h:107
@ MBEDTLS_CIPHER_CAMELLIA_192_CFB128
Definition cipher.h:123
@ MBEDTLS_CIPHER_CAMELLIA_128_CCM
Definition cipher.h:145
@ MBEDTLS_CIPHER_AES_128_CTR
Definition cipher.h:110
@ MBEDTLS_CIPHER_ARIA_192_GCM
Definition cipher.h:161
@ MBEDTLS_CIPHER_AES_256_XTS
Definition cipher.h:170
@ MBEDTLS_CIPHER_AES_192_CFB128
Definition cipher.h:108
@ MBEDTLS_CIPHER_ARIA_256_ECB
Definition cipher.h:150
@ MBEDTLS_CIPHER_CAMELLIA_256_CCM
Definition cipher.h:147
@ MBEDTLS_CIPHER_AES_256_GCM
Definition cipher.h:115
@ MBEDTLS_CIPHER_DES_CBC
Definition cipher.h:132
@ MBEDTLS_CIPHER_CAMELLIA_128_CFB128
Definition cipher.h:122
@ MBEDTLS_CIPHER_CAMELLIA_128_CBC
Definition cipher.h:119
@ MBEDTLS_CIPHER_AES_256_CCM
Definition cipher.h:144
@ MBEDTLS_CIPHER_CAMELLIA_256_CFB128
Definition cipher.h:124
@ MBEDTLS_CIPHER_ARIA_192_CTR
Definition cipher.h:158
@ MBEDTLS_CIPHER_BLOWFISH_CBC
Definition cipher.h:138
@ MBEDTLS_CIPHER_CAMELLIA_256_ECB
Definition cipher.h:118
@ MBEDTLS_CIPHER_AES_256_KW
Definition cipher.h:175
@ MBEDTLS_CIPHER_AES_128_GCM
Definition cipher.h:113
@ MBEDTLS_CIPHER_CAMELLIA_192_ECB
Definition cipher.h:117
@ MBEDTLS_CIPHER_AES_256_CFB128
Definition cipher.h:109
@ MBEDTLS_CIPHER_NONE
Definition cipher.h:99
@ MBEDTLS_CIPHER_CHACHA20_POLY1305
Definition cipher.h:172
@ MBEDTLS_CIPHER_CAMELLIA_128_ECB
Definition cipher.h:116
@ MBEDTLS_CIPHER_AES_192_CBC
Definition cipher.h:105
@ MBEDTLS_CIPHER_CAMELLIA_192_CCM
Definition cipher.h:146
@ MBEDTLS_CIPHER_ARIA_128_CCM
Definition cipher.h:163
@ MBEDTLS_CIPHER_AES_192_CTR
Definition cipher.h:111
@ MBEDTLS_CIPHER_AES_128_CCM
Definition cipher.h:142
@ MBEDTLS_CIPHER_DES_EDE_CBC
Definition cipher.h:134
@ MBEDTLS_CIPHER_NULL
Definition cipher.h:100
@ MBEDTLS_CIPHER_ARIA_256_CBC
Definition cipher.h:153
@ MBEDTLS_CIPHER_AES_256_OFB
Definition cipher.h:168
@ MBEDTLS_CIPHER_ARIA_192_CFB128
Definition cipher.h:155
@ MBEDTLS_CIPHER_CAMELLIA_128_CTR
Definition cipher.h:125
@ MBEDTLS_CIPHER_BLOWFISH_ECB
Definition cipher.h:137
@ MBEDTLS_CIPHER_AES_256_KWP
Definition cipher.h:178
@ MBEDTLS_CIPHER_AES_256_CBC
Definition cipher.h:106
@ MBEDTLS_CIPHER_ARC4_128
Definition cipher.h:141
@ MBEDTLS_CIPHER_CAMELLIA_192_CTR
Definition cipher.h:126
@ MBEDTLS_CIPHER_AES_128_KW
Definition cipher.h:173
@ MBEDTLS_CIPHER_AES_192_KW
Definition cipher.h:174
@ MBEDTLS_CIPHER_AES_192_KWP
Definition cipher.h:177
@ MBEDTLS_CIPHER_AES_192_ECB
Definition cipher.h:102
@ MBEDTLS_CIPHER_ARIA_256_GCM
Definition cipher.h:162
@ MBEDTLS_CIPHER_AES_128_KWP
Definition cipher.h:176
@ MBEDTLS_CIPHER_DES_EDE3_ECB
Definition cipher.h:135
@ MBEDTLS_CIPHER_ARIA_128_CBC
Definition cipher.h:151
@ MBEDTLS_CIPHER_CAMELLIA_256_CTR
Definition cipher.h:127
@ MBEDTLS_CIPHER_ARIA_128_ECB
Definition cipher.h:148
@ MBEDTLS_CIPHER_CAMELLIA_256_CBC
Definition cipher.h:121
@ MBEDTLS_CIPHER_ARIA_256_CCM
Definition cipher.h:165
@ MBEDTLS_CIPHER_ARIA_128_CFB128
Definition cipher.h:154
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.
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.
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.
int mbedtls_cipher_reset(mbedtls_cipher_context_t *ctx)
This function resets the cipher state.
int mbedtls_cipher_auth_decrypt_ext(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 output_len, size_t *olen, size_t tag_len)
The authenticated encryption (AEAD/NIST_KW) function.
@ MBEDTLS_KEY_LENGTH_DES
Definition cipher.h:218
@ MBEDTLS_KEY_LENGTH_NONE
Definition cipher.h:216
@ MBEDTLS_KEY_LENGTH_DES_EDE
Definition cipher.h:220
@ MBEDTLS_KEY_LENGTH_DES_EDE3
Definition cipher.h:222
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:199
@ MBEDTLS_PADDING_ZEROS
Definition cipher.h:203
@ MBEDTLS_PADDING_ONE_AND_ZEROS
Definition cipher.h:201
@ MBEDTLS_PADDING_PKCS7
Definition cipher.h:200
@ MBEDTLS_PADDING_ZEROS_AND_LEN
Definition cipher.h:202
@ MBEDTLS_PADDING_NONE
Definition cipher.h:204
int mbedtls_cipher_auth_encrypt_ext(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 output_len, size_t *olen, size_t tag_len)
The authenticated encryption (AEAD/NIST_KW) 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:615
struct mbedtls_cipher_context_t mbedtls_cipher_context_t
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,...
void mbedtls_cipher_init(mbedtls_cipher_context_t *ctx)
This function initializes a ctx as NONE.
int MBEDTLS_DEPRECATED 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 authenticated decryption (AEAD) function.
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:635
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:551
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....
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:574
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:510
struct mbedtls_cipher_base_t mbedtls_cipher_base_t
Definition cipher.h:253
#define MBEDTLS_DEPRECATED
Definition cipher.h:905
mbedtls_operation_t
Definition cipher.h:208
@ MBEDTLS_DECRYPT
Definition cipher.h:210
@ MBEDTLS_OPERATION_NONE
Definition cipher.h:209
@ MBEDTLS_ENCRYPT
Definition cipher.h:211
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.
const int * mbedtls_cipher_list(void)
This function retrieves the list of ciphers supported by the generic cipher module.
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:595
#define MBEDTLS_MAX_BLOCK_LENGTH
Definition cipher.h:235
int MBEDTLS_DEPRECATED 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 authenticated encryption (AEAD) function.
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:530
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_KW
Definition cipher.h:194
@ MBEDTLS_MODE_CBC
Definition cipher.h:185
@ MBEDTLS_MODE_OFB
Definition cipher.h:187
@ MBEDTLS_MODE_KWP
Definition cipher.h:195
@ MBEDTLS_MODE_CHACHAPOLY
Definition cipher.h:193
@ MBEDTLS_MODE_XTS
Definition cipher.h:192
#define MBEDTLS_MAX_IV_LENGTH
Definition cipher.h:229
mbedtls_cipher_id_t
Supported cipher types.
Definition cipher.h:78
@ MBEDTLS_CIPHER_ID_3DES
Definition cipher.h:83
@ MBEDTLS_CIPHER_ID_CAMELLIA
Definition cipher.h:84
@ MBEDTLS_CIPHER_ID_DES
Definition cipher.h:82
@ MBEDTLS_CIPHER_ID_ARC4
Definition cipher.h:86
@ MBEDTLS_CIPHER_ID_NULL
Definition cipher.h:80
@ MBEDTLS_CIPHER_ID_AES
Definition cipher.h:81
@ MBEDTLS_CIPHER_ID_ARIA
Definition cipher.h:87
@ MBEDTLS_CIPHER_ID_NONE
Definition cipher.h:79
@ MBEDTLS_CIPHER_ID_CHACHA20
Definition cipher.h:88
@ MBEDTLS_CIPHER_ID_BLOWFISH
Definition cipher.h:85
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:315
unsigned char iv[MBEDTLS_MAX_IV_LENGTH]
Definition cipher.h:333
void(* add_padding)(unsigned char *output, size_t olen, size_t data_len)
Definition cipher.h:321
unsigned char unprocessed_data[MBEDTLS_MAX_BLOCK_LENGTH]
Definition cipher.h:326
int(* get_padding)(unsigned char *input, size_t ilen, size_t *data_len)
Definition cipher.h:322
const mbedtls_cipher_info_t * cipher_info
Definition cipher.h:307
unsigned int key_bitlen
Definition cipher.h:277
unsigned int iv_size
Definition cipher.h:286
mbedtls_cipher_type_t type
Definition cipher.h:268
mbedtls_cipher_mode_t mode
Definition cipher.h:271
unsigned int block_size
Definition cipher.h:295
const char * name
Definition cipher.h:280
const mbedtls_cipher_base_t * base
Definition cipher.h:298