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 size_t length,
size_t *iv_off,
unsigned char *iv,
179 const unsigned char *
input,
unsigned char *output )
187#if defined(MBEDTLS_CIPHER_MODE_OFB)
188static int aes_crypt_ofb_wrap(
void *
ctx,
size_t length,
size_t *iv_off,
189 unsigned char *iv,
const unsigned char *
input,
unsigned char *output )
196#if defined(MBEDTLS_CIPHER_MODE_CTR)
197static int aes_crypt_ctr_wrap(
void *
ctx,
size_t length,
size_t *nc_off,
198 unsigned char *nonce_counter,
unsigned char *stream_block,
199 const unsigned char *
input,
unsigned char *output )
202 stream_block,
input, output );
206#if defined(MBEDTLS_CIPHER_MODE_XTS)
209 const unsigned char data_unit[16],
210 const unsigned char *
input,
211 unsigned char *output )
229 data_unit,
input, output );
233static int aes_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
234 unsigned int key_bitlen )
239static int aes_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
240 unsigned int key_bitlen )
245static void * aes_ctx_alloc(
void )
257static void aes_ctx_free(
void *
ctx )
266#if defined(MBEDTLS_CIPHER_MODE_CBC)
269#if defined(MBEDTLS_CIPHER_MODE_CFB)
270 aes_crypt_cfb128_wrap,
272#if defined(MBEDTLS_CIPHER_MODE_OFB)
275#if defined(MBEDTLS_CIPHER_MODE_CTR)
278#if defined(MBEDTLS_CIPHER_MODE_XTS)
281#if defined(MBEDTLS_CIPHER_MODE_STREAM)
294#if defined(MBEDTLS_CIPHER_MODE_CBC)
297#if defined(MBEDTLS_CIPHER_MODE_CFB)
300#if defined(MBEDTLS_CIPHER_MODE_OFB)
303#if defined(MBEDTLS_CIPHER_MODE_CTR)
306#if defined(MBEDTLS_CIPHER_MODE_XTS)
309#if defined(MBEDTLS_CIPHER_MODE_STREAM)
352#if defined(MBEDTLS_CIPHER_MODE_CBC)
387#if defined(MBEDTLS_CIPHER_MODE_CFB)
390 MBEDTLS_CIPHER_AES_128_CFB8,
401 MBEDTLS_CIPHER_AES_192_CFB8,
412 MBEDTLS_CIPHER_AES_256_CFB8,
457#if defined(MBEDTLS_CIPHER_MODE_OFB)
492#if defined(MBEDTLS_CIPHER_MODE_CTR)
527#if defined(MBEDTLS_CIPHER_MODE_XTS)
528static int xts_aes_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
529 unsigned int key_bitlen )
535static int xts_aes_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
536 unsigned int key_bitlen )
542static void *xts_aes_ctx_alloc(
void )
546 if( xts_ctx !=
NULL )
552static void xts_aes_ctx_free(
void *
ctx )
556 if( xts_ctx ==
NULL )
566#if defined(MBEDTLS_CIPHER_MODE_CBC)
569#if defined(MBEDTLS_CIPHER_MODE_CFB)
572#if defined(MBEDTLS_CIPHER_MODE_OFB)
575#if defined(MBEDTLS_CIPHER_MODE_CTR)
578#if defined(MBEDTLS_CIPHER_MODE_XTS)
581#if defined(MBEDTLS_CIPHER_MODE_STREAM)
584 xts_aes_setkey_enc_wrap,
585 xts_aes_setkey_dec_wrap,
613#if defined(MBEDTLS_GCM_C)
614static int gcm_aes_setkey_wrap(
void *
ctx,
const unsigned char *
key,
615 unsigned int key_bitlen )
624#if defined(MBEDTLS_CIPHER_MODE_CBC)
627#if defined(MBEDTLS_CIPHER_MODE_CFB)
630#if defined(MBEDTLS_CIPHER_MODE_OFB)
633#if defined(MBEDTLS_CIPHER_MODE_CTR)
636#if defined(MBEDTLS_CIPHER_MODE_XTS)
639#if defined(MBEDTLS_CIPHER_MODE_STREAM)
682#if defined(MBEDTLS_CCM_C)
683static int ccm_aes_setkey_wrap(
void *
ctx,
const unsigned char *
key,
684 unsigned int key_bitlen )
693#if defined(MBEDTLS_CIPHER_MODE_CBC)
696#if defined(MBEDTLS_CIPHER_MODE_CFB)
699#if defined(MBEDTLS_CIPHER_MODE_OFB)
702#if defined(MBEDTLS_CIPHER_MODE_CTR)
705#if defined(MBEDTLS_CIPHER_MODE_XTS)
708#if defined(MBEDTLS_CIPHER_MODE_STREAM)
753#if defined(MBEDTLS_CAMELLIA_C)
756 const unsigned char *
input,
unsigned char *output )
762#if defined(MBEDTLS_CIPHER_MODE_CBC)
764 size_t length,
unsigned char *iv,
765 const unsigned char *
input,
unsigned char *output )
772#if defined(MBEDTLS_CIPHER_MODE_CFB)
774 size_t length,
size_t *iv_off,
unsigned char *iv,
775 const unsigned char *
input,
unsigned char *output )
778 iv_off, iv,
input, output );
782#if defined(MBEDTLS_CIPHER_MODE_CTR)
783static int camellia_crypt_ctr_wrap(
void *
ctx,
size_t length,
size_t *nc_off,
784 unsigned char *nonce_counter,
unsigned char *stream_block,
785 const unsigned char *
input,
unsigned char *output )
788 nonce_counter, stream_block,
input, output );
792static int camellia_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
793 unsigned int key_bitlen )
798static int camellia_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
799 unsigned int key_bitlen )
804static void * camellia_ctx_alloc(
void )
817static void camellia_ctx_free(
void *
ctx )
825 camellia_crypt_ecb_wrap,
826#if defined(MBEDTLS_CIPHER_MODE_CBC)
827 camellia_crypt_cbc_wrap,
829#if defined(MBEDTLS_CIPHER_MODE_CFB)
830 camellia_crypt_cfb128_wrap,
832#if defined(MBEDTLS_CIPHER_MODE_OFB)
835#if defined(MBEDTLS_CIPHER_MODE_CTR)
836 camellia_crypt_ctr_wrap,
838#if defined(MBEDTLS_CIPHER_MODE_XTS)
841#if defined(MBEDTLS_CIPHER_MODE_STREAM)
844 camellia_setkey_enc_wrap,
845 camellia_setkey_dec_wrap,
883#if defined(MBEDTLS_CIPHER_MODE_CBC)
918#if defined(MBEDTLS_CIPHER_MODE_CFB)
923 "CAMELLIA-128-CFB128",
934 "CAMELLIA-192-CFB128",
945 "CAMELLIA-256-CFB128",
953#if defined(MBEDTLS_CIPHER_MODE_CTR)
988#if defined(MBEDTLS_GCM_C)
989static int gcm_camellia_setkey_wrap(
void *
ctx,
const unsigned char *
key,
990 unsigned int key_bitlen )
999#if defined(MBEDTLS_CIPHER_MODE_CBC)
1002#if defined(MBEDTLS_CIPHER_MODE_CFB)
1005#if defined(MBEDTLS_CIPHER_MODE_OFB)
1008#if defined(MBEDTLS_CIPHER_MODE_CTR)
1011#if defined(MBEDTLS_CIPHER_MODE_XTS)
1014#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1017 gcm_camellia_setkey_wrap,
1018 gcm_camellia_setkey_wrap,
1057#if defined(MBEDTLS_CCM_C)
1058static int ccm_camellia_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1059 unsigned int key_bitlen )
1068#if defined(MBEDTLS_CIPHER_MODE_CBC)
1071#if defined(MBEDTLS_CIPHER_MODE_CFB)
1074#if defined(MBEDTLS_CIPHER_MODE_OFB)
1077#if defined(MBEDTLS_CIPHER_MODE_CTR)
1080#if defined(MBEDTLS_CIPHER_MODE_XTS)
1083#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1086 ccm_camellia_setkey_wrap,
1087 ccm_camellia_setkey_wrap,
1128#if defined(MBEDTLS_ARIA_C)
1131 const unsigned char *
input,
unsigned char *output )
1138#if defined(MBEDTLS_CIPHER_MODE_CBC)
1140 size_t length,
unsigned char *iv,
1141 const unsigned char *
input,
unsigned char *output )
1148#if defined(MBEDTLS_CIPHER_MODE_CFB)
1150 size_t length,
size_t *iv_off,
unsigned char *iv,
1151 const unsigned char *
input,
unsigned char *output )
1154 iv_off, iv,
input, output );
1158#if defined(MBEDTLS_CIPHER_MODE_CTR)
1159static int aria_crypt_ctr_wrap(
void *
ctx,
size_t length,
size_t *nc_off,
1160 unsigned char *nonce_counter,
unsigned char *stream_block,
1161 const unsigned char *
input,
unsigned char *output )
1164 nonce_counter, stream_block,
input, output );
1168static int aria_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
1169 unsigned int key_bitlen )
1174static int aria_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
1175 unsigned int key_bitlen )
1180static void * aria_ctx_alloc(
void )
1193static void aria_ctx_free(
void *
ctx )
1201 aria_crypt_ecb_wrap,
1202#if defined(MBEDTLS_CIPHER_MODE_CBC)
1203 aria_crypt_cbc_wrap,
1205#if defined(MBEDTLS_CIPHER_MODE_CFB)
1206 aria_crypt_cfb128_wrap,
1208#if defined(MBEDTLS_CIPHER_MODE_OFB)
1211#if defined(MBEDTLS_CIPHER_MODE_CTR)
1212 aria_crypt_ctr_wrap,
1214#if defined(MBEDTLS_CIPHER_MODE_XTS)
1217#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1220 aria_setkey_enc_wrap,
1221 aria_setkey_dec_wrap,
1259#if defined(MBEDTLS_CIPHER_MODE_CBC)
1294#if defined(MBEDTLS_CIPHER_MODE_CFB)
1329#if defined(MBEDTLS_CIPHER_MODE_CTR)
1364#if defined(MBEDTLS_GCM_C)
1365static int gcm_aria_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1366 unsigned int key_bitlen )
1375#if defined(MBEDTLS_CIPHER_MODE_CBC)
1378#if defined(MBEDTLS_CIPHER_MODE_CFB)
1381#if defined(MBEDTLS_CIPHER_MODE_OFB)
1384#if defined(MBEDTLS_CIPHER_MODE_CTR)
1387#if defined(MBEDTLS_CIPHER_MODE_XTS)
1390#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1393 gcm_aria_setkey_wrap,
1394 gcm_aria_setkey_wrap,
1433#if defined(MBEDTLS_CCM_C)
1434static int ccm_aria_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1435 unsigned int key_bitlen )
1444#if defined(MBEDTLS_CIPHER_MODE_CBC)
1447#if defined(MBEDTLS_CIPHER_MODE_CFB)
1450#if defined(MBEDTLS_CIPHER_MODE_OFB)
1453#if defined(MBEDTLS_CIPHER_MODE_CTR)
1456#if defined(MBEDTLS_CIPHER_MODE_XTS)
1459#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1462 ccm_aria_setkey_wrap,
1463 ccm_aria_setkey_wrap,
1504#if defined(MBEDTLS_DES_C)
1507 const unsigned char *
input,
unsigned char *output )
1514 const unsigned char *
input,
unsigned char *output )
1520#if defined(MBEDTLS_CIPHER_MODE_CBC)
1522 unsigned char *iv,
const unsigned char *
input,
unsigned char *output )
1529#if defined(MBEDTLS_CIPHER_MODE_CBC)
1531 unsigned char *iv,
const unsigned char *
input,
unsigned char *output )
1538static int des_setkey_dec_wrap(
void *
ctx,
const unsigned char *
key,
1539 unsigned int key_bitlen )
1541 ((
void) key_bitlen);
1546static int des_setkey_enc_wrap(
void *
ctx,
const unsigned char *
key,
1547 unsigned int key_bitlen )
1549 ((
void) key_bitlen);
1554static int des3_set2key_dec_wrap(
void *
ctx,
const unsigned char *
key,
1555 unsigned int key_bitlen )
1557 ((
void) key_bitlen);
1562static int des3_set2key_enc_wrap(
void *
ctx,
const unsigned char *
key,
1563 unsigned int key_bitlen )
1565 ((
void) key_bitlen);
1570static int des3_set3key_dec_wrap(
void *
ctx,
const unsigned char *
key,
1571 unsigned int key_bitlen )
1573 ((
void) key_bitlen);
1578static int des3_set3key_enc_wrap(
void *
ctx,
const unsigned char *
key,
1579 unsigned int key_bitlen )
1581 ((
void) key_bitlen);
1586static void * des_ctx_alloc(
void )
1598static void des_ctx_free(
void *
ctx )
1604static void * des3_ctx_alloc(
void )
1617static void des3_ctx_free(
void *
ctx )
1626#if defined(MBEDTLS_CIPHER_MODE_CBC)
1629#if defined(MBEDTLS_CIPHER_MODE_CFB)
1632#if defined(MBEDTLS_CIPHER_MODE_OFB)
1635#if defined(MBEDTLS_CIPHER_MODE_CTR)
1638#if defined(MBEDTLS_CIPHER_MODE_XTS)
1641#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1644 des_setkey_enc_wrap,
1645 des_setkey_dec_wrap,
1661#if defined(MBEDTLS_CIPHER_MODE_CBC)
1676 des3_crypt_ecb_wrap,
1677#if defined(MBEDTLS_CIPHER_MODE_CBC)
1678 des3_crypt_cbc_wrap,
1680#if defined(MBEDTLS_CIPHER_MODE_CFB)
1683#if defined(MBEDTLS_CIPHER_MODE_OFB)
1686#if defined(MBEDTLS_CIPHER_MODE_CTR)
1689#if defined(MBEDTLS_CIPHER_MODE_XTS)
1692#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1695 des3_set2key_enc_wrap,
1696 des3_set2key_dec_wrap,
1712#if defined(MBEDTLS_CIPHER_MODE_CBC)
1727 des3_crypt_ecb_wrap,
1728#if defined(MBEDTLS_CIPHER_MODE_CBC)
1729 des3_crypt_cbc_wrap,
1731#if defined(MBEDTLS_CIPHER_MODE_CFB)
1734#if defined(MBEDTLS_CIPHER_MODE_OFB)
1737#if defined(MBEDTLS_CIPHER_MODE_CTR)
1740#if defined(MBEDTLS_CIPHER_MODE_XTS)
1743#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1746 des3_set3key_enc_wrap,
1747 des3_set3key_dec_wrap,
1762#if defined(MBEDTLS_CIPHER_MODE_CBC)
1776#if defined(MBEDTLS_BLOWFISH_C)
1779 const unsigned char *
input,
unsigned char *output )
1785#if defined(MBEDTLS_CIPHER_MODE_CBC)
1787 size_t length,
unsigned char *iv,
const unsigned char *
input,
1788 unsigned char *output )
1795#if defined(MBEDTLS_CIPHER_MODE_CFB)
1797 size_t length,
size_t *iv_off,
unsigned char *iv,
1798 const unsigned char *
input,
unsigned char *output )
1801 iv_off, iv,
input, output );
1805#if defined(MBEDTLS_CIPHER_MODE_CTR)
1806static int blowfish_crypt_ctr_wrap(
void *
ctx,
size_t length,
size_t *nc_off,
1807 unsigned char *nonce_counter,
unsigned char *stream_block,
1808 const unsigned char *
input,
unsigned char *output )
1811 nonce_counter, stream_block,
input, output );
1815static int blowfish_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1816 unsigned int key_bitlen )
1821static void * blowfish_ctx_alloc(
void )
1834static void blowfish_ctx_free(
void *
ctx )
1842 blowfish_crypt_ecb_wrap,
1843#if defined(MBEDTLS_CIPHER_MODE_CBC)
1844 blowfish_crypt_cbc_wrap,
1846#if defined(MBEDTLS_CIPHER_MODE_CFB)
1847 blowfish_crypt_cfb64_wrap,
1849#if defined(MBEDTLS_CIPHER_MODE_OFB)
1852#if defined(MBEDTLS_CIPHER_MODE_CTR)
1853 blowfish_crypt_ctr_wrap,
1855#if defined(MBEDTLS_CIPHER_MODE_XTS)
1858#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1861 blowfish_setkey_wrap,
1862 blowfish_setkey_wrap,
1878#if defined(MBEDTLS_CIPHER_MODE_CBC)
1891#if defined(MBEDTLS_CIPHER_MODE_CFB)
1904#if defined(MBEDTLS_CIPHER_MODE_CTR)
1918#if defined(MBEDTLS_ARC4_C)
1919static int arc4_crypt_stream_wrap(
void *
ctx,
size_t length,
1920 const unsigned char *
input,
1921 unsigned char *output )
1926static int arc4_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1927 unsigned int key_bitlen )
1930 if( key_bitlen % 8 != 0 )
1937static void * arc4_ctx_alloc(
void )
1950static void arc4_ctx_free(
void *
ctx )
1959#if defined(MBEDTLS_CIPHER_MODE_CBC)
1962#if defined(MBEDTLS_CIPHER_MODE_CFB)
1965#if defined(MBEDTLS_CIPHER_MODE_OFB)
1968#if defined(MBEDTLS_CIPHER_MODE_CTR)
1971#if defined(MBEDTLS_CIPHER_MODE_XTS)
1974#if defined(MBEDTLS_CIPHER_MODE_STREAM)
1975 arc4_crypt_stream_wrap,
1995#if defined(MBEDTLS_CHACHA20_C)
1997static int chacha20_setkey_wrap(
void *
ctx,
const unsigned char *
key,
1998 unsigned int key_bitlen )
2000 if( key_bitlen != 256U )
2009static int chacha20_stream_wrap(
void *
ctx,
size_t length,
2010 const unsigned char *
input,
2011 unsigned char *output )
2022static void * chacha20_ctx_alloc(
void )
2035static void chacha20_ctx_free(
void *
ctx )
2044#if defined(MBEDTLS_CIPHER_MODE_CBC)
2047#if defined(MBEDTLS_CIPHER_MODE_CFB)
2050#if defined(MBEDTLS_CIPHER_MODE_OFB)
2053#if defined(MBEDTLS_CIPHER_MODE_CTR)
2056#if defined(MBEDTLS_CIPHER_MODE_XTS)
2059#if defined(MBEDTLS_CIPHER_MODE_STREAM)
2060 chacha20_stream_wrap,
2062 chacha20_setkey_wrap,
2063 chacha20_setkey_wrap,
2079#if defined(MBEDTLS_CHACHAPOLY_C)
2081static int chachapoly_setkey_wrap(
void *
ctx,
2082 const unsigned char *
key,
2083 unsigned int key_bitlen )
2085 if( key_bitlen != 256U )
2094static void * chachapoly_ctx_alloc(
void )
2107static void chachapoly_ctx_free(
void *
ctx )
2116#if defined(MBEDTLS_CIPHER_MODE_CBC)
2119#if defined(MBEDTLS_CIPHER_MODE_CFB)
2122#if defined(MBEDTLS_CIPHER_MODE_OFB)
2125#if defined(MBEDTLS_CIPHER_MODE_CTR)
2128#if defined(MBEDTLS_CIPHER_MODE_XTS)
2131#if defined(MBEDTLS_CIPHER_MODE_STREAM)
2134 chachapoly_setkey_wrap,
2135 chachapoly_setkey_wrap,
2136 chachapoly_ctx_alloc,
2143 "CHACHA20-POLY1305",
2147 &chachapoly_base_info
2151#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
2152static int null_crypt_stream(
void *
ctx,
size_t length,
2153 const unsigned char *
input,
2154 unsigned char *output )
2161static int null_setkey(
void *
ctx,
const unsigned char *
key,
2162 unsigned int key_bitlen )
2166 ((
void) key_bitlen);
2171static void * null_ctx_alloc(
void )
2173 return( (
void *) 1 );
2176static void null_ctx_free(
void *
ctx )
2184#if defined(MBEDTLS_CIPHER_MODE_CBC)
2187#if defined(MBEDTLS_CIPHER_MODE_CFB)
2190#if defined(MBEDTLS_CIPHER_MODE_OFB)
2193#if defined(MBEDTLS_CIPHER_MODE_CTR)
2196#if defined(MBEDTLS_CIPHER_MODE_XTS)
2199#if defined(MBEDTLS_CIPHER_MODE_STREAM)
2222#if defined(MBEDTLS_AES_C)
2226#if defined(MBEDTLS_CIPHER_MODE_CBC)
2231#if defined(MBEDTLS_CIPHER_MODE_CFB)
2233 { MBEDTLS_CIPHER_AES_128_CFB8, &aes_128_cfb8_info },
2234 { MBEDTLS_CIPHER_AES_192_CFB8, &aes_192_cfb8_info },
2235 { MBEDTLS_CIPHER_AES_256_CFB8, &aes_256_cfb8_info },
2241#if defined(MBEDTLS_CIPHER_MODE_OFB)
2246#if defined(MBEDTLS_CIPHER_MODE_CTR)
2251#if defined(MBEDTLS_CIPHER_MODE_XTS)
2255#if defined(MBEDTLS_GCM_C)
2260#if defined(MBEDTLS_CCM_C)
2267#if defined(MBEDTLS_ARC4_C)
2271#if defined(MBEDTLS_BLOWFISH_C)
2273#if defined(MBEDTLS_CIPHER_MODE_CBC)
2276#if defined(MBEDTLS_CIPHER_MODE_CFB)
2279#if defined(MBEDTLS_CIPHER_MODE_CTR)
2284#if defined(MBEDTLS_CAMELLIA_C)
2288#if defined(MBEDTLS_CIPHER_MODE_CBC)
2293#if defined(MBEDTLS_CIPHER_MODE_CFB)
2298#if defined(MBEDTLS_CIPHER_MODE_CTR)
2303#if defined(MBEDTLS_GCM_C)
2308#if defined(MBEDTLS_CCM_C)
2315#if defined(MBEDTLS_ARIA_C)
2319#if defined(MBEDTLS_CIPHER_MODE_CBC)
2324#if defined(MBEDTLS_CIPHER_MODE_CFB)
2329#if defined(MBEDTLS_CIPHER_MODE_CTR)
2334#if defined(MBEDTLS_GCM_C)
2339#if defined(MBEDTLS_CCM_C)
2346#if defined(MBEDTLS_DES_C)
2350#if defined(MBEDTLS_CIPHER_MODE_CBC)
2357#if defined(MBEDTLS_CHACHA20_C)
2361#if defined(MBEDTLS_CHACHAPOLY_C)
2365#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
2372#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.
int mbedtls_aes_crypt_cfb8(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-CFB8 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
@ MBEDTLS_KEY_LENGTH_DES_EDE
@ MBEDTLS_KEY_LENGTH_DES_EDE3
#define MBEDTLS_CIPHER_VARIABLE_IV_LEN
#define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA
#define MBEDTLS_CIPHER_VARIABLE_KEY_LEN
@ 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.