51#if !defined(MBEDTLS_CONFIG_FILE)
54#include MBEDTLS_CONFIG_FILE
57#if defined(MBEDTLS_CIPHER_C)
61#if defined(MBEDTLS_CHACHAPOLY_C)
65#if defined(MBEDTLS_AES_C)
69#if defined(MBEDTLS_ARC4_C)
73#if defined(MBEDTLS_CAMELLIA_C)
77#if defined(MBEDTLS_ARIA_C)
81#if defined(MBEDTLS_DES_C)
85#if defined(MBEDTLS_BLOWFISH_C)
89#if defined(MBEDTLS_CHACHA20_C)
93#if defined(MBEDTLS_GCM_C)
97#if defined(MBEDTLS_CCM_C)
101#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
105#if defined(MBEDTLS_PLATFORM_C)
109#define mbedtls_calloc calloc
110#define mbedtls_free free
113#if defined(MBEDTLS_GCM_C)
115static void *gcm_ctx_alloc(
void )
125static void gcm_ctx_free(
void *
ctx )
132#if defined(MBEDTLS_CCM_C)
134static void *ccm_ctx_alloc(
void )
144static void ccm_ctx_free(
void *
ctx )
151#if defined(MBEDTLS_AES_C)
154 const unsigned char *
input,
unsigned char *output )
159#if defined(MBEDTLS_CIPHER_MODE_CBC)
161 unsigned char *iv,
const unsigned char *
input,
unsigned char *output )
168#if defined(MBEDTLS_CIPHER_MODE_CFB)
170 size_t length,
size_t *iv_off,
unsigned char *iv,
171 const unsigned char *
input,
unsigned char *output )
178#if defined(MBEDTLS_CIPHER_MODE_OFB)
179static int aes_crypt_ofb_wrap(
void *
ctx,
size_t length,
size_t *iv_off,
180 unsigned char *iv,
const unsigned char *
input,
unsigned char *output )
187#if defined(MBEDTLS_CIPHER_MODE_CTR)
188static int aes_crypt_ctr_wrap(
void *
ctx,
size_t length,
size_t *nc_off,
189 unsigned char *nonce_counter,
unsigned char *stream_block,
190 const unsigned char *
input,
unsigned char *output )
193 stream_block,
input, output );
197#if defined(MBEDTLS_CIPHER_MODE_XTS)
200 const unsigned char data_unit[16],
201 const unsigned char *
input,
202 unsigned char *output )
220 data_unit,
input, output );
224static int aes_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
225 unsigned int key_bitlen )
230static int aes_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
231 unsigned int key_bitlen )
236static void * aes_ctx_alloc(
void )
248static void aes_ctx_free(
void *
ctx )
257#if defined(MBEDTLS_CIPHER_MODE_CBC)
260#if defined(MBEDTLS_CIPHER_MODE_CFB)
261 aes_crypt_cfb128_wrap,
263#if defined(MBEDTLS_CIPHER_MODE_OFB)
266#if defined(MBEDTLS_CIPHER_MODE_CTR)
269#if defined(MBEDTLS_CIPHER_MODE_XTS)
272#if defined(MBEDTLS_CIPHER_MODE_STREAM)
314#if defined(MBEDTLS_CIPHER_MODE_CBC)
349#if defined(MBEDTLS_CIPHER_MODE_CFB)
384#if defined(MBEDTLS_CIPHER_MODE_OFB)
419#if defined(MBEDTLS_CIPHER_MODE_CTR)
454#if defined(MBEDTLS_CIPHER_MODE_XTS)
455static int xts_aes_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
456 unsigned int key_bitlen )
462static int xts_aes_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
463 unsigned int key_bitlen )
469static void *xts_aes_ctx_alloc(
void )
473 if( xts_ctx !=
NULL )
479static void xts_aes_ctx_free(
void *
ctx )
483 if( xts_ctx ==
NULL )
493#if defined(MBEDTLS_CIPHER_MODE_CBC)
496#if defined(MBEDTLS_CIPHER_MODE_CFB)
499#if defined(MBEDTLS_CIPHER_MODE_OFB)
502#if defined(MBEDTLS_CIPHER_MODE_CTR)
505#if defined(MBEDTLS_CIPHER_MODE_XTS)
508#if defined(MBEDTLS_CIPHER_MODE_STREAM)
511 xts_aes_setkey_enc_wrap,
512 xts_aes_setkey_dec_wrap,
540#if defined(MBEDTLS_GCM_C)
541static int gcm_aes_setkey_wrap(
void *
ctx,
const unsigned char *
key,
542 unsigned int key_bitlen )
551#if defined(MBEDTLS_CIPHER_MODE_CBC)
554#if defined(MBEDTLS_CIPHER_MODE_CFB)
557#if defined(MBEDTLS_CIPHER_MODE_OFB)
560#if defined(MBEDTLS_CIPHER_MODE_CTR)
563#if defined(MBEDTLS_CIPHER_MODE_XTS)
566#if defined(MBEDTLS_CIPHER_MODE_STREAM)
609#if defined(MBEDTLS_CCM_C)
610static int ccm_aes_setkey_wrap(
void *
ctx,
const unsigned char *
key,
611 unsigned int key_bitlen )
620#if defined(MBEDTLS_CIPHER_MODE_CBC)
623#if defined(MBEDTLS_CIPHER_MODE_CFB)
626#if defined(MBEDTLS_CIPHER_MODE_OFB)
629#if defined(MBEDTLS_CIPHER_MODE_CTR)
632#if defined(MBEDTLS_CIPHER_MODE_XTS)
635#if defined(MBEDTLS_CIPHER_MODE_STREAM)
680#if defined(MBEDTLS_CAMELLIA_C)
683 const unsigned char *
input,
unsigned char *output )
689#if defined(MBEDTLS_CIPHER_MODE_CBC)
691 size_t length,
unsigned char *iv,
692 const unsigned char *
input,
unsigned char *output )
699#if defined(MBEDTLS_CIPHER_MODE_CFB)
701 size_t length,
size_t *iv_off,
unsigned char *iv,
702 const unsigned char *
input,
unsigned char *output )
705 iv_off, iv,
input, output );
709#if defined(MBEDTLS_CIPHER_MODE_CTR)
710static int camellia_crypt_ctr_wrap(
void *
ctx,
size_t length,
size_t *nc_off,
711 unsigned char *nonce_counter,
unsigned char *stream_block,
712 const unsigned char *
input,
unsigned char *output )
715 nonce_counter, stream_block,
input, output );
719static int camellia_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
720 unsigned int key_bitlen )
725static int camellia_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
726 unsigned int key_bitlen )
731static void * camellia_ctx_alloc(
void )
744static void camellia_ctx_free(
void *
ctx )
752 camellia_crypt_ecb_wrap,
753#if defined(MBEDTLS_CIPHER_MODE_CBC)
754 camellia_crypt_cbc_wrap,
756#if defined(MBEDTLS_CIPHER_MODE_CFB)
757 camellia_crypt_cfb128_wrap,
759#if defined(MBEDTLS_CIPHER_MODE_OFB)
762#if defined(MBEDTLS_CIPHER_MODE_CTR)
763 camellia_crypt_ctr_wrap,
765#if defined(MBEDTLS_CIPHER_MODE_XTS)
768#if defined(MBEDTLS_CIPHER_MODE_STREAM)
771 camellia_setkey_enc_wrap,
772 camellia_setkey_dec_wrap,
810#if defined(MBEDTLS_CIPHER_MODE_CBC)
845#if defined(MBEDTLS_CIPHER_MODE_CFB)
850 "CAMELLIA-128-CFB128",
861 "CAMELLIA-192-CFB128",
872 "CAMELLIA-256-CFB128",
880#if defined(MBEDTLS_CIPHER_MODE_CTR)
915#if defined(MBEDTLS_GCM_C)
916static int gcm_camellia_setkey_wrap(
void *
ctx,
const unsigned char *
key,
917 unsigned int key_bitlen )
926#if defined(MBEDTLS_CIPHER_MODE_CBC)
929#if defined(MBEDTLS_CIPHER_MODE_CFB)
932#if defined(MBEDTLS_CIPHER_MODE_OFB)
935#if defined(MBEDTLS_CIPHER_MODE_CTR)
938#if defined(MBEDTLS_CIPHER_MODE_XTS)
941#if defined(MBEDTLS_CIPHER_MODE_STREAM)
944 gcm_camellia_setkey_wrap,
945 gcm_camellia_setkey_wrap,
984#if defined(MBEDTLS_CCM_C)
985static int ccm_camellia_setkey_wrap(
void *
ctx,
const unsigned char *
key,
986 unsigned int key_bitlen )
995#if defined(MBEDTLS_CIPHER_MODE_CBC)
998#if defined(MBEDTLS_CIPHER_MODE_CFB)
1001#if defined(MBEDTLS_CIPHER_MODE_OFB)
1004#if defined(MBEDTLS_CIPHER_MODE_CTR)
1007#if defined(MBEDTLS_CIPHER_MODE_XTS)
1010#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1013 ccm_camellia_setkey_wrap,
1014 ccm_camellia_setkey_wrap,
1055#if defined(MBEDTLS_ARIA_C)
1058 const unsigned char *
input,
unsigned char *output )
1065#if defined(MBEDTLS_CIPHER_MODE_CBC)
1067 size_t length,
unsigned char *iv,
1068 const unsigned char *
input,
unsigned char *output )
1075#if defined(MBEDTLS_CIPHER_MODE_CFB)
1077 size_t length,
size_t *iv_off,
unsigned char *iv,
1078 const unsigned char *
input,
unsigned char *output )
1081 iv_off, iv,
input, output );
1085#if defined(MBEDTLS_CIPHER_MODE_CTR)
1086static int aria_crypt_ctr_wrap(
void *
ctx,
size_t length,
size_t *nc_off,
1087 unsigned char *nonce_counter,
unsigned char *stream_block,
1088 const unsigned char *
input,
unsigned char *output )
1091 nonce_counter, stream_block,
input, output );
1095static int aria_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
1096 unsigned int key_bitlen )
1101static int aria_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
1102 unsigned int key_bitlen )
1107static void * aria_ctx_alloc(
void )
1120static void aria_ctx_free(
void *
ctx )
1128 aria_crypt_ecb_wrap,
1129#if defined(MBEDTLS_CIPHER_MODE_CBC)
1130 aria_crypt_cbc_wrap,
1132#if defined(MBEDTLS_CIPHER_MODE_CFB)
1133 aria_crypt_cfb128_wrap,
1135#if defined(MBEDTLS_CIPHER_MODE_OFB)
1138#if defined(MBEDTLS_CIPHER_MODE_CTR)
1139 aria_crypt_ctr_wrap,
1141#if defined(MBEDTLS_CIPHER_MODE_XTS)
1144#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1147 aria_setkey_enc_wrap,
1148 aria_setkey_dec_wrap,
1186#if defined(MBEDTLS_CIPHER_MODE_CBC)
1221#if defined(MBEDTLS_CIPHER_MODE_CFB)
1256#if defined(MBEDTLS_CIPHER_MODE_CTR)
1291#if defined(MBEDTLS_GCM_C)
1292static int gcm_aria_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1293 unsigned int key_bitlen )
1302#if defined(MBEDTLS_CIPHER_MODE_CBC)
1305#if defined(MBEDTLS_CIPHER_MODE_CFB)
1308#if defined(MBEDTLS_CIPHER_MODE_OFB)
1311#if defined(MBEDTLS_CIPHER_MODE_CTR)
1314#if defined(MBEDTLS_CIPHER_MODE_XTS)
1317#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1320 gcm_aria_setkey_wrap,
1321 gcm_aria_setkey_wrap,
1360#if defined(MBEDTLS_CCM_C)
1361static int ccm_aria_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1362 unsigned int key_bitlen )
1371#if defined(MBEDTLS_CIPHER_MODE_CBC)
1374#if defined(MBEDTLS_CIPHER_MODE_CFB)
1377#if defined(MBEDTLS_CIPHER_MODE_OFB)
1380#if defined(MBEDTLS_CIPHER_MODE_CTR)
1383#if defined(MBEDTLS_CIPHER_MODE_XTS)
1386#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1389 ccm_aria_setkey_wrap,
1390 ccm_aria_setkey_wrap,
1431#if defined(MBEDTLS_DES_C)
1434 const unsigned char *
input,
unsigned char *output )
1441 const unsigned char *
input,
unsigned char *output )
1447#if defined(MBEDTLS_CIPHER_MODE_CBC)
1449 unsigned char *iv,
const unsigned char *
input,
unsigned char *output )
1456#if defined(MBEDTLS_CIPHER_MODE_CBC)
1458 unsigned char *iv,
const unsigned char *
input,
unsigned char *output )
1465static int des_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
1466 unsigned int key_bitlen )
1468 ((
void) key_bitlen);
1473static int des_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
1474 unsigned int key_bitlen )
1476 ((
void) key_bitlen);
1481static int des3_set2key_dec_wrap(
void *
ctx,
const unsigned char *
key,
1482 unsigned int key_bitlen )
1484 ((
void) key_bitlen);
1489static int des3_set2key_enc_wrap(
void *
ctx,
const unsigned char *
key,
1490 unsigned int key_bitlen )
1492 ((
void) key_bitlen);
1497static int des3_set3key_dec_wrap(
void *
ctx,
const unsigned char *
key,
1498 unsigned int key_bitlen )
1500 ((
void) key_bitlen);
1505static int des3_set3key_enc_wrap(
void *
ctx,
const unsigned char *
key,
1506 unsigned int key_bitlen )
1508 ((
void) key_bitlen);
1513static void * des_ctx_alloc(
void )
1525static void des_ctx_free(
void *
ctx )
1531static void * des3_ctx_alloc(
void )
1544static void des3_ctx_free(
void *
ctx )
1553#if defined(MBEDTLS_CIPHER_MODE_CBC)
1556#if defined(MBEDTLS_CIPHER_MODE_CFB)
1559#if defined(MBEDTLS_CIPHER_MODE_OFB)
1562#if defined(MBEDTLS_CIPHER_MODE_CTR)
1565#if defined(MBEDTLS_CIPHER_MODE_XTS)
1568#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1571 des_setkey_enc_wrap,
1572 des_setkey_dec_wrap,
1588#if defined(MBEDTLS_CIPHER_MODE_CBC)
1603 des3_crypt_ecb_wrap,
1604#if defined(MBEDTLS_CIPHER_MODE_CBC)
1605 des3_crypt_cbc_wrap,
1607#if defined(MBEDTLS_CIPHER_MODE_CFB)
1610#if defined(MBEDTLS_CIPHER_MODE_OFB)
1613#if defined(MBEDTLS_CIPHER_MODE_CTR)
1616#if defined(MBEDTLS_CIPHER_MODE_XTS)
1619#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1622 des3_set2key_enc_wrap,
1623 des3_set2key_dec_wrap,
1639#if defined(MBEDTLS_CIPHER_MODE_CBC)
1654 des3_crypt_ecb_wrap,
1655#if defined(MBEDTLS_CIPHER_MODE_CBC)
1656 des3_crypt_cbc_wrap,
1658#if defined(MBEDTLS_CIPHER_MODE_CFB)
1661#if defined(MBEDTLS_CIPHER_MODE_OFB)
1664#if defined(MBEDTLS_CIPHER_MODE_CTR)
1667#if defined(MBEDTLS_CIPHER_MODE_XTS)
1670#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1673 des3_set3key_enc_wrap,
1674 des3_set3key_dec_wrap,
1689#if defined(MBEDTLS_CIPHER_MODE_CBC)
1703#if defined(MBEDTLS_BLOWFISH_C)
1706 const unsigned char *
input,
unsigned char *output )
1712#if defined(MBEDTLS_CIPHER_MODE_CBC)
1714 size_t length,
unsigned char *iv,
const unsigned char *
input,
1715 unsigned char *output )
1722#if defined(MBEDTLS_CIPHER_MODE_CFB)
1724 size_t length,
size_t *iv_off,
unsigned char *iv,
1725 const unsigned char *
input,
unsigned char *output )
1728 iv_off, iv,
input, output );
1732#if defined(MBEDTLS_CIPHER_MODE_CTR)
1733static int blowfish_crypt_ctr_wrap(
void *
ctx,
size_t length,
size_t *nc_off,
1734 unsigned char *nonce_counter,
unsigned char *stream_block,
1735 const unsigned char *
input,
unsigned char *output )
1738 nonce_counter, stream_block,
input, output );
1742static int blowfish_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1743 unsigned int key_bitlen )
1748static void * blowfish_ctx_alloc(
void )
1761static void blowfish_ctx_free(
void *
ctx )
1769 blowfish_crypt_ecb_wrap,
1770#if defined(MBEDTLS_CIPHER_MODE_CBC)
1771 blowfish_crypt_cbc_wrap,
1773#if defined(MBEDTLS_CIPHER_MODE_CFB)
1774 blowfish_crypt_cfb64_wrap,
1776#if defined(MBEDTLS_CIPHER_MODE_OFB)
1779#if defined(MBEDTLS_CIPHER_MODE_CTR)
1780 blowfish_crypt_ctr_wrap,
1782#if defined(MBEDTLS_CIPHER_MODE_XTS)
1785#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1788 blowfish_setkey_wrap,
1789 blowfish_setkey_wrap,
1805#if defined(MBEDTLS_CIPHER_MODE_CBC)
1818#if defined(MBEDTLS_CIPHER_MODE_CFB)
1831#if defined(MBEDTLS_CIPHER_MODE_CTR)
1845#if defined(MBEDTLS_ARC4_C)
1846static int arc4_crypt_stream_wrap(
void *
ctx,
size_t length,
1847 const unsigned char *
input,
1848 unsigned char *output )
1853static int arc4_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1854 unsigned int key_bitlen )
1857 if( key_bitlen % 8 != 0 )
1864static void * arc4_ctx_alloc(
void )
1877static void arc4_ctx_free(
void *
ctx )
1886#if defined(MBEDTLS_CIPHER_MODE_CBC)
1889#if defined(MBEDTLS_CIPHER_MODE_CFB)
1892#if defined(MBEDTLS_CIPHER_MODE_OFB)
1895#if defined(MBEDTLS_CIPHER_MODE_CTR)
1898#if defined(MBEDTLS_CIPHER_MODE_XTS)
1901#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1902 arc4_crypt_stream_wrap,
1922#if defined(MBEDTLS_CHACHA20_C)
1924static int chacha20_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1925 unsigned int key_bitlen )
1927 if( key_bitlen != 256U )
1936static int chacha20_stream_wrap(
void *
ctx,
size_t length,
1937 const unsigned char *
input,
1938 unsigned char *output )
1949static void * chacha20_ctx_alloc(
void )
1962static void chacha20_ctx_free(
void *
ctx )
1971#if defined(MBEDTLS_CIPHER_MODE_CBC)
1974#if defined(MBEDTLS_CIPHER_MODE_CFB)
1977#if defined(MBEDTLS_CIPHER_MODE_OFB)
1980#if defined(MBEDTLS_CIPHER_MODE_CTR)
1983#if defined(MBEDTLS_CIPHER_MODE_XTS)
1986#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1987 chacha20_stream_wrap,
1989 chacha20_setkey_wrap,
1990 chacha20_setkey_wrap,
2006#if defined(MBEDTLS_CHACHAPOLY_C)
2008static int chachapoly_setkey_wrap(
void *
ctx,
2009 const unsigned char *
key,
2010 unsigned int key_bitlen )
2012 if( key_bitlen != 256U )
2021static void * chachapoly_ctx_alloc(
void )
2034static void chachapoly_ctx_free(
void *
ctx )
2043#if defined(MBEDTLS_CIPHER_MODE_CBC)
2046#if defined(MBEDTLS_CIPHER_MODE_CFB)
2049#if defined(MBEDTLS_CIPHER_MODE_OFB)
2052#if defined(MBEDTLS_CIPHER_MODE_CTR)
2055#if defined(MBEDTLS_CIPHER_MODE_XTS)
2058#if defined(MBEDTLS_CIPHER_MODE_STREAM)
2061 chachapoly_setkey_wrap,
2062 chachapoly_setkey_wrap,
2063 chachapoly_ctx_alloc,
2070 "CHACHA20-POLY1305",
2074 &chachapoly_base_info
2078#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
2079static int null_crypt_stream(
void *
ctx,
size_t length,
2080 const unsigned char *
input,
2081 unsigned char *output )
2088static int null_setkey(
void *
ctx,
const unsigned char *
key,
2089 unsigned int key_bitlen )
2093 ((
void) key_bitlen);
2098static void * null_ctx_alloc(
void )
2100 return( (
void *) 1 );
2103static void null_ctx_free(
void *
ctx )
2111#if defined(MBEDTLS_CIPHER_MODE_CBC)
2114#if defined(MBEDTLS_CIPHER_MODE_CFB)
2117#if defined(MBEDTLS_CIPHER_MODE_OFB)
2120#if defined(MBEDTLS_CIPHER_MODE_CTR)
2123#if defined(MBEDTLS_CIPHER_MODE_XTS)
2126#if defined(MBEDTLS_CIPHER_MODE_STREAM)
2149#if defined(MBEDTLS_AES_C)
2153#if defined(MBEDTLS_CIPHER_MODE_CBC)
2158#if defined(MBEDTLS_CIPHER_MODE_CFB)
2163#if defined(MBEDTLS_CIPHER_MODE_OFB)
2168#if defined(MBEDTLS_CIPHER_MODE_CTR)
2173#if defined(MBEDTLS_CIPHER_MODE_XTS)
2177#if defined(MBEDTLS_GCM_C)
2182#if defined(MBEDTLS_CCM_C)
2189#if defined(MBEDTLS_ARC4_C)
2193#if defined(MBEDTLS_BLOWFISH_C)
2195#if defined(MBEDTLS_CIPHER_MODE_CBC)
2198#if defined(MBEDTLS_CIPHER_MODE_CFB)
2201#if defined(MBEDTLS_CIPHER_MODE_CTR)
2206#if defined(MBEDTLS_CAMELLIA_C)
2210#if defined(MBEDTLS_CIPHER_MODE_CBC)
2215#if defined(MBEDTLS_CIPHER_MODE_CFB)
2220#if defined(MBEDTLS_CIPHER_MODE_CTR)
2225#if defined(MBEDTLS_GCM_C)
2230#if defined(MBEDTLS_CCM_C)
2237#if defined(MBEDTLS_ARIA_C)
2241#if defined(MBEDTLS_CIPHER_MODE_CBC)
2246#if defined(MBEDTLS_CIPHER_MODE_CFB)
2251#if defined(MBEDTLS_CIPHER_MODE_CTR)
2256#if defined(MBEDTLS_GCM_C)
2261#if defined(MBEDTLS_CCM_C)
2268#if defined(MBEDTLS_DES_C)
2272#if defined(MBEDTLS_CIPHER_MODE_CBC)
2279#if defined(MBEDTLS_CHACHA20_C)
2283#if defined(MBEDTLS_CHACHAPOLY_C)
2287#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
2294#define NUM_CIPHERS sizeof mbedtls_cipher_definitions / sizeof mbedtls_cipher_definitions[0]
This file contains AES definitions and functions.
int mbedtls_aes_crypt_ecb(mbedtls_aes_context *ctx, int mode, const unsigned char input[16], unsigned char output[16])
This function performs an AES single-block encryption or decryption operation.
int mbedtls_aes_setkey_dec(mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits)
This function sets the decryption key.
void mbedtls_aes_xts_init(mbedtls_aes_xts_context *ctx)
This function initializes the specified AES XTS context.
int mbedtls_aes_crypt_ofb(mbedtls_aes_context *ctx, size_t length, size_t *iv_off, unsigned char iv[16], const unsigned char *input, unsigned char *output)
This function performs an AES-OFB (Output Feedback Mode) encryption or decryption operation.
int mbedtls_aes_crypt_cbc(mbedtls_aes_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output)
This function performs an AES-CBC encryption or decryption operation on full blocks.
int mbedtls_aes_crypt_ctr(mbedtls_aes_context *ctx, size_t length, size_t *nc_off, unsigned char nonce_counter[16], unsigned char stream_block[16], const unsigned char *input, unsigned char *output)
This function performs an AES-CTR encryption or decryption operation.
int mbedtls_aes_xts_setkey_dec(mbedtls_aes_xts_context *ctx, const unsigned char *key, unsigned int keybits)
This function prepares an XTS context for decryption and sets the decryption key.
int mbedtls_aes_crypt_xts(mbedtls_aes_xts_context *ctx, int mode, size_t length, const unsigned char data_unit[16], const unsigned char *input, unsigned char *output)
This function performs an AES-XTS encryption or decryption operation for an entire XTS data unit.
void mbedtls_aes_xts_free(mbedtls_aes_xts_context *ctx)
This function releases and clears the specified AES XTS context.
int mbedtls_aes_crypt_cfb128(mbedtls_aes_context *ctx, int mode, size_t length, size_t *iv_off, unsigned char iv[16], const unsigned char *input, unsigned char *output)
This function performs an AES-CFB128 encryption or decryption operation.
void mbedtls_aes_init(mbedtls_aes_context *ctx)
This function initializes the specified AES context.
#define MBEDTLS_AES_DECRYPT
#define MBEDTLS_AES_ENCRYPT
int mbedtls_aes_setkey_enc(mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits)
This function sets the encryption key.
void mbedtls_aes_free(mbedtls_aes_context *ctx)
This function releases and clears the specified AES context.
int mbedtls_aes_xts_setkey_enc(mbedtls_aes_xts_context *ctx, const unsigned char *key, unsigned int keybits)
This function prepares an XTS context for encryption and sets the encryption key.
int mbedtls_aria_crypt_cbc(mbedtls_aria_context *ctx, int mode, size_t length, unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output)
This function performs an ARIA-CBC encryption or decryption operation on full blocks.
int mbedtls_aria_crypt_cfb128(mbedtls_aria_context *ctx, int mode, size_t length, size_t *iv_off, unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output)
This function performs an ARIA-CFB128 encryption or decryption operation.
void mbedtls_aria_init(mbedtls_aria_context *ctx)
This function initializes the specified ARIA context.
int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, const unsigned char *key, unsigned int keybits)
This function sets the decryption key.
int mbedtls_aria_crypt_ecb(mbedtls_aria_context *ctx, const unsigned char input[MBEDTLS_ARIA_BLOCKSIZE], unsigned char output[MBEDTLS_ARIA_BLOCKSIZE])
This function performs an ARIA single-block encryption or decryption operation.
void mbedtls_aria_free(mbedtls_aria_context *ctx)
This function releases and clears the specified ARIA context.
int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, const unsigned char *key, unsigned int keybits)
This function sets the encryption key.
int mbedtls_aria_crypt_ctr(mbedtls_aria_context *ctx, size_t length, size_t *nc_off, unsigned char nonce_counter[MBEDTLS_ARIA_BLOCKSIZE], unsigned char stream_block[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output)
This function performs an ARIA-CTR encryption or decryption operation.
int mbedtls_blowfish_crypt_cbc(mbedtls_blowfish_context *ctx, int mode, size_t length, unsigned char iv[MBEDTLS_BLOWFISH_BLOCKSIZE], const unsigned char *input, unsigned char *output)
Perform a Blowfish-CBC buffer encryption/decryption operation.
int mbedtls_blowfish_setkey(mbedtls_blowfish_context *ctx, const unsigned char *key, unsigned int keybits)
Perform a Blowfish key schedule operation.
int mbedtls_blowfish_crypt_ctr(mbedtls_blowfish_context *ctx, size_t length, size_t *nc_off, unsigned char nonce_counter[MBEDTLS_BLOWFISH_BLOCKSIZE], unsigned char stream_block[MBEDTLS_BLOWFISH_BLOCKSIZE], const unsigned char *input, unsigned char *output)
Perform a Blowfish-CTR buffer encryption/decryption operation.
void mbedtls_blowfish_init(mbedtls_blowfish_context *ctx)
Initialize a Blowfish context.
void mbedtls_blowfish_free(mbedtls_blowfish_context *ctx)
Clear a Blowfish context.
int mbedtls_blowfish_crypt_cfb64(mbedtls_blowfish_context *ctx, int mode, size_t length, size_t *iv_off, unsigned char iv[MBEDTLS_BLOWFISH_BLOCKSIZE], const unsigned char *input, unsigned char *output)
Perform a Blowfish CFB buffer encryption/decryption operation.
int mbedtls_blowfish_crypt_ecb(mbedtls_blowfish_context *ctx, int mode, const unsigned char input[MBEDTLS_BLOWFISH_BLOCKSIZE], unsigned char output[MBEDTLS_BLOWFISH_BLOCKSIZE])
Perform a Blowfish-ECB block encryption/decryption operation.
int mbedtls_camellia_setkey_enc(mbedtls_camellia_context *ctx, const unsigned char *key, unsigned int keybits)
Perform a CAMELLIA key schedule operation for encryption.
int mbedtls_camellia_crypt_ecb(mbedtls_camellia_context *ctx, int mode, const unsigned char input[16], unsigned char output[16])
Perform a CAMELLIA-ECB block encryption/decryption operation.
int mbedtls_camellia_setkey_dec(mbedtls_camellia_context *ctx, const unsigned char *key, unsigned int keybits)
Perform a CAMELLIA key schedule operation for decryption.
int mbedtls_camellia_crypt_cbc(mbedtls_camellia_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output)
Perform a CAMELLIA-CBC buffer encryption/decryption operation.
void mbedtls_camellia_init(mbedtls_camellia_context *ctx)
Initialize a CAMELLIA context.
void mbedtls_camellia_free(mbedtls_camellia_context *ctx)
Clear a CAMELLIA context.
int mbedtls_camellia_crypt_ctr(mbedtls_camellia_context *ctx, size_t length, size_t *nc_off, unsigned char nonce_counter[16], unsigned char stream_block[16], const unsigned char *input, unsigned char *output)
Perform a CAMELLIA-CTR buffer encryption/decryption operation.
int mbedtls_camellia_crypt_cfb128(mbedtls_camellia_context *ctx, int mode, size_t length, size_t *iv_off, unsigned char iv[16], const unsigned char *input, unsigned char *output)
Perform a CAMELLIA-CFB128 buffer encryption/decryption operation.
This file provides an API for the CCM authenticated encryption mode for block ciphers.
void mbedtls_ccm_free(mbedtls_ccm_context *ctx)
This function releases and clears the specified CCM context and underlying cipher sub-context.
int mbedtls_ccm_setkey(mbedtls_ccm_context *ctx, mbedtls_cipher_id_t cipher, const unsigned char *key, unsigned int keybits)
This function initializes the CCM context set in the ctx parameter and sets the encryption key.
void mbedtls_ccm_init(mbedtls_ccm_context *ctx)
This function initializes the specified CCM context, to make references valid, and prepare the contex...
This file contains ChaCha20 definitions and functions.
void mbedtls_chacha20_free(mbedtls_chacha20_context *ctx)
This function releases and clears the specified ChaCha20 context.
int mbedtls_chacha20_setkey(mbedtls_chacha20_context *ctx, const unsigned char key[32])
This function sets the encryption/decryption key.
void mbedtls_chacha20_init(mbedtls_chacha20_context *ctx)
This function initializes the specified ChaCha20 context.
#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA
int mbedtls_chacha20_update(mbedtls_chacha20_context *ctx, size_t size, const unsigned char *input, unsigned char *output)
This function encrypts or decrypts data.
This file contains the AEAD-ChaCha20-Poly1305 definitions and functions.
void mbedtls_chachapoly_init(mbedtls_chachapoly_context *ctx)
This function initializes the specified ChaCha20-Poly1305 context.
int mbedtls_chachapoly_setkey(mbedtls_chachapoly_context *ctx, const unsigned char key[32])
This function sets the ChaCha20-Poly1305 symmetric encryption key.
void mbedtls_chachapoly_free(mbedtls_chachapoly_context *ctx)
This function releases and clears the specified ChaCha20-Poly1305 context.
@ MBEDTLS_CIPHER_AES_128_ECB
@ MBEDTLS_CIPHER_ARIA_256_CTR
@ MBEDTLS_CIPHER_CAMELLIA_128_GCM
@ MBEDTLS_CIPHER_AES_128_XTS
@ MBEDTLS_CIPHER_CHACHA20
@ MBEDTLS_CIPHER_DES_EDE3_CBC
@ MBEDTLS_CIPHER_ARIA_128_GCM
@ MBEDTLS_CIPHER_AES_128_CBC
@ MBEDTLS_CIPHER_AES_192_GCM
@ MBEDTLS_CIPHER_BLOWFISH_CTR
@ MBEDTLS_CIPHER_AES_128_OFB
@ MBEDTLS_CIPHER_ARIA_192_ECB
@ MBEDTLS_CIPHER_CAMELLIA_256_GCM
@ MBEDTLS_CIPHER_DES_EDE_ECB
@ MBEDTLS_CIPHER_BLOWFISH_CFB64
@ MBEDTLS_CIPHER_ARIA_256_CFB128
@ MBEDTLS_CIPHER_ARIA_192_CBC
@ MBEDTLS_CIPHER_CAMELLIA_192_CBC
@ MBEDTLS_CIPHER_ARIA_128_CTR
@ MBEDTLS_CIPHER_ARIA_192_CCM
@ MBEDTLS_CIPHER_CAMELLIA_192_GCM
@ MBEDTLS_CIPHER_AES_192_OFB
@ MBEDTLS_CIPHER_AES_256_ECB
@ MBEDTLS_CIPHER_AES_256_CTR
@ MBEDTLS_CIPHER_AES_192_CCM
@ MBEDTLS_CIPHER_AES_128_CFB128
@ MBEDTLS_CIPHER_CAMELLIA_192_CFB128
@ MBEDTLS_CIPHER_CAMELLIA_128_CCM
@ MBEDTLS_CIPHER_AES_128_CTR
@ MBEDTLS_CIPHER_ARIA_192_GCM
@ MBEDTLS_CIPHER_AES_256_XTS
@ MBEDTLS_CIPHER_AES_192_CFB128
@ MBEDTLS_CIPHER_ARIA_256_ECB
@ MBEDTLS_CIPHER_CAMELLIA_256_CCM
@ MBEDTLS_CIPHER_AES_256_GCM
@ MBEDTLS_CIPHER_CAMELLIA_128_CFB128
@ MBEDTLS_CIPHER_CAMELLIA_128_CBC
@ MBEDTLS_CIPHER_AES_256_CCM
@ MBEDTLS_CIPHER_CAMELLIA_256_CFB128
@ MBEDTLS_CIPHER_ARIA_192_CTR
@ MBEDTLS_CIPHER_BLOWFISH_CBC
@ MBEDTLS_CIPHER_CAMELLIA_256_ECB
@ MBEDTLS_CIPHER_AES_128_GCM
@ MBEDTLS_CIPHER_CAMELLIA_192_ECB
@ MBEDTLS_CIPHER_AES_256_CFB128
@ MBEDTLS_CIPHER_CHACHA20_POLY1305
@ MBEDTLS_CIPHER_CAMELLIA_128_ECB
@ MBEDTLS_CIPHER_AES_192_CBC
@ MBEDTLS_CIPHER_CAMELLIA_192_CCM
@ MBEDTLS_CIPHER_ARIA_128_CCM
@ MBEDTLS_CIPHER_AES_192_CTR
@ MBEDTLS_CIPHER_AES_128_CCM
@ MBEDTLS_CIPHER_DES_EDE_CBC
@ MBEDTLS_CIPHER_ARIA_256_CBC
@ MBEDTLS_CIPHER_AES_256_OFB
@ MBEDTLS_CIPHER_ARIA_192_CFB128
@ MBEDTLS_CIPHER_CAMELLIA_128_CTR
@ MBEDTLS_CIPHER_BLOWFISH_ECB
@ MBEDTLS_CIPHER_AES_256_CBC
@ MBEDTLS_CIPHER_ARC4_128
@ MBEDTLS_CIPHER_CAMELLIA_192_CTR
@ MBEDTLS_CIPHER_AES_192_ECB
@ MBEDTLS_CIPHER_ARIA_256_GCM
@ MBEDTLS_CIPHER_DES_EDE3_ECB
@ MBEDTLS_CIPHER_ARIA_128_CBC
@ MBEDTLS_CIPHER_CAMELLIA_256_CTR
@ MBEDTLS_CIPHER_ARIA_128_ECB
@ MBEDTLS_CIPHER_CAMELLIA_256_CBC
@ MBEDTLS_CIPHER_ARIA_256_CCM
@ MBEDTLS_CIPHER_ARIA_128_CFB128
#define MBEDTLS_CIPHER_VARIABLE_IV_LEN
#define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA
#define MBEDTLS_CIPHER_VARIABLE_KEY_LEN
@ MBEDTLS_KEY_LENGTH_DES_EDE
@ MBEDTLS_KEY_LENGTH_DES_EDE3
@ MBEDTLS_MODE_CHACHAPOLY
@ MBEDTLS_CIPHER_ID_CAMELLIA
@ MBEDTLS_CIPHER_ID_CHACHA20
@ MBEDTLS_CIPHER_ID_BLOWFISH
const mbedtls_cipher_definition_t mbedtls_cipher_definitions[]
int mbedtls_cipher_supported[]
This file contains GCM definitions and functions.
void mbedtls_gcm_init(mbedtls_gcm_context *ctx)
This function initializes the specified GCM context, to make references valid, and prepares the conte...
int mbedtls_gcm_setkey(mbedtls_gcm_context *ctx, mbedtls_cipher_id_t cipher, const unsigned char *key, unsigned int keybits)
This function associates a GCM context with a cipher algorithm and a key.
void mbedtls_gcm_free(mbedtls_gcm_context *ctx)
This function clears a GCM context and the underlying cipher sub-context.
GLuint GLsizei GLsizei * length
GLenum GLenum GLenum input
#define memmove(s1, s2, n)
The ARCFOUR stream cipher.
int mbedtls_arc4_crypt(mbedtls_arc4_context *ctx, size_t length, const unsigned char *input, unsigned char *output)
ARC4 cipher function.
void mbedtls_arc4_setup(mbedtls_arc4_context *ctx, const unsigned char *key, unsigned int keylen)
ARC4 key schedule.
void mbedtls_arc4_init(mbedtls_arc4_context *ctx)
Initialize ARC4 context.
void mbedtls_arc4_free(mbedtls_arc4_context *ctx)
Clear ARC4 context.
Configuration options (set of defines)
void mbedtls_des_init(mbedtls_des_context *ctx)
Initialize DES context.
int mbedtls_des_setkey_dec(mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE])
DES key schedule (56-bit, decryption)
void mbedtls_des3_free(mbedtls_des3_context *ctx)
Clear Triple-DES context.
int mbedtls_des3_set2key_dec(mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *2])
Triple-DES key schedule (112-bit, decryption)
int mbedtls_des3_crypt_cbc(mbedtls_des3_context *ctx, int mode, size_t length, unsigned char iv[8], const unsigned char *input, unsigned char *output)
3DES-CBC buffer encryption/decryption
int mbedtls_des_setkey_enc(mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE])
DES key schedule (56-bit, encryption)
int mbedtls_des3_set3key_enc(mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *3])
Triple-DES key schedule (168-bit, encryption)
int mbedtls_des3_crypt_ecb(mbedtls_des3_context *ctx, const unsigned char input[8], unsigned char output[8])
3DES-ECB block encryption/decryption
int mbedtls_des_crypt_cbc(mbedtls_des_context *ctx, int mode, size_t length, unsigned char iv[8], const unsigned char *input, unsigned char *output)
DES-CBC buffer encryption/decryption.
int mbedtls_des3_set2key_enc(mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *2])
Triple-DES key schedule (112-bit, encryption)
int mbedtls_des_crypt_ecb(mbedtls_des_context *ctx, const unsigned char input[8], unsigned char output[8])
DES-ECB block encryption/decryption.
void mbedtls_des3_init(mbedtls_des3_context *ctx)
Initialize Triple-DES context.
int mbedtls_des3_set3key_dec(mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *3])
Triple-DES key schedule (168-bit, decryption)
void mbedtls_des_free(mbedtls_des_context *ctx)
Clear DES context.
The AES context-type definition.
The AES XTS context-type definition.
The ARIA context-type definition.
Blowfish context structure.
CAMELLIA context structure.
The CCM context-type definition. The CCM context is passed to the APIs called.
Triple-DES context structure.
The GCM context structure.