2 * \file cipher_wrap.c
\r
4 * \brief Generic cipher wrapper for mbed TLS
\r
6 * \author Adriaan de Jong <dejong@fox-it.com>
\r
8 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
\r
9 * SPDX-License-Identifier: Apache-2.0
\r
11 * Licensed under the Apache License, Version 2.0 (the "License"); you may
\r
12 * not use this file except in compliance with the License.
\r
13 * You may obtain a copy of the License at
\r
15 * http://www.apache.org/licenses/LICENSE-2.0
\r
17 * Unless required by applicable law or agreed to in writing, software
\r
18 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
\r
19 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
20 * See the License for the specific language governing permissions and
\r
21 * limitations under the License.
\r
23 * This file is part of mbed TLS (https://tls.mbed.org)
\r
26 #if !defined(MBEDTLS_CONFIG_FILE)
\r
27 #include "mbedtls/config.h"
\r
29 #include MBEDTLS_CONFIG_FILE
\r
32 #if defined(MBEDTLS_CIPHER_C)
\r
34 #include "mbedtls/cipher_internal.h"
\r
36 #if defined(MBEDTLS_CHACHAPOLY_C)
\r
37 #include "mbedtls/chachapoly.h"
\r
40 #if defined(MBEDTLS_AES_C)
\r
41 #include "mbedtls/aes.h"
\r
44 #if defined(MBEDTLS_ARC4_C)
\r
45 #include "mbedtls/arc4.h"
\r
48 #if defined(MBEDTLS_CAMELLIA_C)
\r
49 #include "mbedtls/camellia.h"
\r
52 #if defined(MBEDTLS_ARIA_C)
\r
53 #include "mbedtls/aria.h"
\r
56 #if defined(MBEDTLS_DES_C)
\r
57 #include "mbedtls/des.h"
\r
60 #if defined(MBEDTLS_BLOWFISH_C)
\r
61 #include "mbedtls/blowfish.h"
\r
64 #if defined(MBEDTLS_CHACHA20_C)
\r
65 #include "mbedtls/chacha20.h"
\r
68 #if defined(MBEDTLS_GCM_C)
\r
69 #include "mbedtls/gcm.h"
\r
72 #if defined(MBEDTLS_CCM_C)
\r
73 #include "mbedtls/ccm.h"
\r
76 #if defined(MBEDTLS_NIST_KW_C)
\r
77 #include "mbedtls/nist_kw.h"
\r
80 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
\r
84 #if defined(MBEDTLS_PLATFORM_C)
\r
85 #include "mbedtls/platform.h"
\r
88 #define mbedtls_calloc calloc
\r
89 #define mbedtls_free free
\r
92 #if defined(MBEDTLS_GCM_C)
\r
93 /* shared by all GCM ciphers */
\r
94 static void *gcm_ctx_alloc( void )
\r
96 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_gcm_context ) );
\r
99 mbedtls_gcm_init( (mbedtls_gcm_context *) ctx );
\r
104 static void gcm_ctx_free( void *ctx )
\r
106 mbedtls_gcm_free( ctx );
\r
107 mbedtls_free( ctx );
\r
109 #endif /* MBEDTLS_GCM_C */
\r
111 #if defined(MBEDTLS_CCM_C)
\r
112 /* shared by all CCM ciphers */
\r
113 static void *ccm_ctx_alloc( void )
\r
115 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_ccm_context ) );
\r
118 mbedtls_ccm_init( (mbedtls_ccm_context *) ctx );
\r
123 static void ccm_ctx_free( void *ctx )
\r
125 mbedtls_ccm_free( ctx );
\r
126 mbedtls_free( ctx );
\r
128 #endif /* MBEDTLS_CCM_C */
\r
130 #if defined(MBEDTLS_AES_C)
\r
132 static int aes_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
\r
133 const unsigned char *input, unsigned char *output )
\r
135 return mbedtls_aes_crypt_ecb( (mbedtls_aes_context *) ctx, operation, input, output );
\r
138 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
139 static int aes_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, size_t length,
\r
140 unsigned char *iv, const unsigned char *input, unsigned char *output )
\r
142 return mbedtls_aes_crypt_cbc( (mbedtls_aes_context *) ctx, operation, length, iv, input,
\r
145 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
147 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
148 static int aes_crypt_cfb128_wrap( void *ctx, mbedtls_operation_t operation,
\r
149 size_t length, size_t *iv_off, unsigned char *iv,
\r
150 const unsigned char *input, unsigned char *output )
\r
152 return mbedtls_aes_crypt_cfb128( (mbedtls_aes_context *) ctx, operation, length, iv_off, iv,
\r
155 #endif /* MBEDTLS_CIPHER_MODE_CFB */
\r
157 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
158 static int aes_crypt_ofb_wrap( void *ctx, size_t length, size_t *iv_off,
\r
159 unsigned char *iv, const unsigned char *input, unsigned char *output )
\r
161 return mbedtls_aes_crypt_ofb( (mbedtls_aes_context *) ctx, length, iv_off,
\r
162 iv, input, output );
\r
164 #endif /* MBEDTLS_CIPHER_MODE_OFB */
\r
166 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
167 static int aes_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
\r
168 unsigned char *nonce_counter, unsigned char *stream_block,
\r
169 const unsigned char *input, unsigned char *output )
\r
171 return mbedtls_aes_crypt_ctr( (mbedtls_aes_context *) ctx, length, nc_off, nonce_counter,
\r
172 stream_block, input, output );
\r
174 #endif /* MBEDTLS_CIPHER_MODE_CTR */
\r
176 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
177 static int aes_crypt_xts_wrap( void *ctx, mbedtls_operation_t operation,
\r
179 const unsigned char data_unit[16],
\r
180 const unsigned char *input,
\r
181 unsigned char *output )
\r
183 mbedtls_aes_xts_context *xts_ctx = ctx;
\r
186 switch( operation )
\r
188 case MBEDTLS_ENCRYPT:
\r
189 mode = MBEDTLS_AES_ENCRYPT;
\r
191 case MBEDTLS_DECRYPT:
\r
192 mode = MBEDTLS_AES_DECRYPT;
\r
195 return MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA;
\r
198 return mbedtls_aes_crypt_xts( xts_ctx, mode, length,
\r
199 data_unit, input, output );
\r
201 #endif /* MBEDTLS_CIPHER_MODE_XTS */
\r
203 static int aes_setkey_dec_wrap( void *ctx, const unsigned char *key,
\r
204 unsigned int key_bitlen )
\r
206 return mbedtls_aes_setkey_dec( (mbedtls_aes_context *) ctx, key, key_bitlen );
\r
209 static int aes_setkey_enc_wrap( void *ctx, const unsigned char *key,
\r
210 unsigned int key_bitlen )
\r
212 return mbedtls_aes_setkey_enc( (mbedtls_aes_context *) ctx, key, key_bitlen );
\r
215 static void * aes_ctx_alloc( void )
\r
217 mbedtls_aes_context *aes = mbedtls_calloc( 1, sizeof( mbedtls_aes_context ) );
\r
222 mbedtls_aes_init( aes );
\r
227 static void aes_ctx_free( void *ctx )
\r
229 mbedtls_aes_free( (mbedtls_aes_context *) ctx );
\r
230 mbedtls_free( ctx );
\r
233 static const mbedtls_cipher_base_t aes_info = {
\r
234 MBEDTLS_CIPHER_ID_AES,
\r
235 aes_crypt_ecb_wrap,
\r
236 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
237 aes_crypt_cbc_wrap,
\r
239 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
240 aes_crypt_cfb128_wrap,
\r
242 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
243 aes_crypt_ofb_wrap,
\r
245 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
246 aes_crypt_ctr_wrap,
\r
248 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
251 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
254 aes_setkey_enc_wrap,
\r
255 aes_setkey_dec_wrap,
\r
260 static const mbedtls_cipher_info_t aes_128_ecb_info = {
\r
261 MBEDTLS_CIPHER_AES_128_ECB,
\r
271 static const mbedtls_cipher_info_t aes_192_ecb_info = {
\r
272 MBEDTLS_CIPHER_AES_192_ECB,
\r
282 static const mbedtls_cipher_info_t aes_256_ecb_info = {
\r
283 MBEDTLS_CIPHER_AES_256_ECB,
\r
293 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
294 static const mbedtls_cipher_info_t aes_128_cbc_info = {
\r
295 MBEDTLS_CIPHER_AES_128_CBC,
\r
305 static const mbedtls_cipher_info_t aes_192_cbc_info = {
\r
306 MBEDTLS_CIPHER_AES_192_CBC,
\r
316 static const mbedtls_cipher_info_t aes_256_cbc_info = {
\r
317 MBEDTLS_CIPHER_AES_256_CBC,
\r
326 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
328 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
329 static const mbedtls_cipher_info_t aes_128_cfb128_info = {
\r
330 MBEDTLS_CIPHER_AES_128_CFB128,
\r
340 static const mbedtls_cipher_info_t aes_192_cfb128_info = {
\r
341 MBEDTLS_CIPHER_AES_192_CFB128,
\r
351 static const mbedtls_cipher_info_t aes_256_cfb128_info = {
\r
352 MBEDTLS_CIPHER_AES_256_CFB128,
\r
361 #endif /* MBEDTLS_CIPHER_MODE_CFB */
\r
363 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
364 static const mbedtls_cipher_info_t aes_128_ofb_info = {
\r
365 MBEDTLS_CIPHER_AES_128_OFB,
\r
375 static const mbedtls_cipher_info_t aes_192_ofb_info = {
\r
376 MBEDTLS_CIPHER_AES_192_OFB,
\r
386 static const mbedtls_cipher_info_t aes_256_ofb_info = {
\r
387 MBEDTLS_CIPHER_AES_256_OFB,
\r
396 #endif /* MBEDTLS_CIPHER_MODE_OFB */
\r
398 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
399 static const mbedtls_cipher_info_t aes_128_ctr_info = {
\r
400 MBEDTLS_CIPHER_AES_128_CTR,
\r
410 static const mbedtls_cipher_info_t aes_192_ctr_info = {
\r
411 MBEDTLS_CIPHER_AES_192_CTR,
\r
421 static const mbedtls_cipher_info_t aes_256_ctr_info = {
\r
422 MBEDTLS_CIPHER_AES_256_CTR,
\r
431 #endif /* MBEDTLS_CIPHER_MODE_CTR */
\r
433 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
434 static int xts_aes_setkey_enc_wrap( void *ctx, const unsigned char *key,
\r
435 unsigned int key_bitlen )
\r
437 mbedtls_aes_xts_context *xts_ctx = ctx;
\r
438 return( mbedtls_aes_xts_setkey_enc( xts_ctx, key, key_bitlen ) );
\r
441 static int xts_aes_setkey_dec_wrap( void *ctx, const unsigned char *key,
\r
442 unsigned int key_bitlen )
\r
444 mbedtls_aes_xts_context *xts_ctx = ctx;
\r
445 return( mbedtls_aes_xts_setkey_dec( xts_ctx, key, key_bitlen ) );
\r
448 static void *xts_aes_ctx_alloc( void )
\r
450 mbedtls_aes_xts_context *xts_ctx = mbedtls_calloc( 1, sizeof( *xts_ctx ) );
\r
452 if( xts_ctx != NULL )
\r
453 mbedtls_aes_xts_init( xts_ctx );
\r
458 static void xts_aes_ctx_free( void *ctx )
\r
460 mbedtls_aes_xts_context *xts_ctx = ctx;
\r
462 if( xts_ctx == NULL )
\r
465 mbedtls_aes_xts_free( xts_ctx );
\r
466 mbedtls_free( xts_ctx );
\r
469 static const mbedtls_cipher_base_t xts_aes_info = {
\r
470 MBEDTLS_CIPHER_ID_AES,
\r
472 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
475 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
478 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
481 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
484 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
485 aes_crypt_xts_wrap,
\r
487 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
490 xts_aes_setkey_enc_wrap,
\r
491 xts_aes_setkey_dec_wrap,
\r
496 static const mbedtls_cipher_info_t aes_128_xts_info = {
\r
497 MBEDTLS_CIPHER_AES_128_XTS,
\r
507 static const mbedtls_cipher_info_t aes_256_xts_info = {
\r
508 MBEDTLS_CIPHER_AES_256_XTS,
\r
517 #endif /* MBEDTLS_CIPHER_MODE_XTS */
\r
519 #if defined(MBEDTLS_GCM_C)
\r
520 static int gcm_aes_setkey_wrap( void *ctx, const unsigned char *key,
\r
521 unsigned int key_bitlen )
\r
523 return mbedtls_gcm_setkey( (mbedtls_gcm_context *) ctx, MBEDTLS_CIPHER_ID_AES,
\r
527 static const mbedtls_cipher_base_t gcm_aes_info = {
\r
528 MBEDTLS_CIPHER_ID_AES,
\r
530 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
533 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
536 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
539 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
542 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
545 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
548 gcm_aes_setkey_wrap,
\r
549 gcm_aes_setkey_wrap,
\r
554 static const mbedtls_cipher_info_t aes_128_gcm_info = {
\r
555 MBEDTLS_CIPHER_AES_128_GCM,
\r
560 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
565 static const mbedtls_cipher_info_t aes_192_gcm_info = {
\r
566 MBEDTLS_CIPHER_AES_192_GCM,
\r
571 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
576 static const mbedtls_cipher_info_t aes_256_gcm_info = {
\r
577 MBEDTLS_CIPHER_AES_256_GCM,
\r
582 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
586 #endif /* MBEDTLS_GCM_C */
\r
588 #if defined(MBEDTLS_CCM_C)
\r
589 static int ccm_aes_setkey_wrap( void *ctx, const unsigned char *key,
\r
590 unsigned int key_bitlen )
\r
592 return mbedtls_ccm_setkey( (mbedtls_ccm_context *) ctx, MBEDTLS_CIPHER_ID_AES,
\r
596 static const mbedtls_cipher_base_t ccm_aes_info = {
\r
597 MBEDTLS_CIPHER_ID_AES,
\r
599 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
602 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
605 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
608 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
611 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
614 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
617 ccm_aes_setkey_wrap,
\r
618 ccm_aes_setkey_wrap,
\r
623 static const mbedtls_cipher_info_t aes_128_ccm_info = {
\r
624 MBEDTLS_CIPHER_AES_128_CCM,
\r
629 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
634 static const mbedtls_cipher_info_t aes_192_ccm_info = {
\r
635 MBEDTLS_CIPHER_AES_192_CCM,
\r
640 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
645 static const mbedtls_cipher_info_t aes_256_ccm_info = {
\r
646 MBEDTLS_CIPHER_AES_256_CCM,
\r
651 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
655 #endif /* MBEDTLS_CCM_C */
\r
657 #endif /* MBEDTLS_AES_C */
\r
659 #if defined(MBEDTLS_CAMELLIA_C)
\r
661 static int camellia_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
\r
662 const unsigned char *input, unsigned char *output )
\r
664 return mbedtls_camellia_crypt_ecb( (mbedtls_camellia_context *) ctx, operation, input,
\r
668 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
669 static int camellia_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation,
\r
670 size_t length, unsigned char *iv,
\r
671 const unsigned char *input, unsigned char *output )
\r
673 return mbedtls_camellia_crypt_cbc( (mbedtls_camellia_context *) ctx, operation, length, iv,
\r
676 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
678 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
679 static int camellia_crypt_cfb128_wrap( void *ctx, mbedtls_operation_t operation,
\r
680 size_t length, size_t *iv_off, unsigned char *iv,
\r
681 const unsigned char *input, unsigned char *output )
\r
683 return mbedtls_camellia_crypt_cfb128( (mbedtls_camellia_context *) ctx, operation, length,
\r
684 iv_off, iv, input, output );
\r
686 #endif /* MBEDTLS_CIPHER_MODE_CFB */
\r
688 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
689 static int camellia_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
\r
690 unsigned char *nonce_counter, unsigned char *stream_block,
\r
691 const unsigned char *input, unsigned char *output )
\r
693 return mbedtls_camellia_crypt_ctr( (mbedtls_camellia_context *) ctx, length, nc_off,
\r
694 nonce_counter, stream_block, input, output );
\r
696 #endif /* MBEDTLS_CIPHER_MODE_CTR */
\r
698 static int camellia_setkey_dec_wrap( void *ctx, const unsigned char *key,
\r
699 unsigned int key_bitlen )
\r
701 return mbedtls_camellia_setkey_dec( (mbedtls_camellia_context *) ctx, key, key_bitlen );
\r
704 static int camellia_setkey_enc_wrap( void *ctx, const unsigned char *key,
\r
705 unsigned int key_bitlen )
\r
707 return mbedtls_camellia_setkey_enc( (mbedtls_camellia_context *) ctx, key, key_bitlen );
\r
710 static void * camellia_ctx_alloc( void )
\r
712 mbedtls_camellia_context *ctx;
\r
713 ctx = mbedtls_calloc( 1, sizeof( mbedtls_camellia_context ) );
\r
718 mbedtls_camellia_init( ctx );
\r
723 static void camellia_ctx_free( void *ctx )
\r
725 mbedtls_camellia_free( (mbedtls_camellia_context *) ctx );
\r
726 mbedtls_free( ctx );
\r
729 static const mbedtls_cipher_base_t camellia_info = {
\r
730 MBEDTLS_CIPHER_ID_CAMELLIA,
\r
731 camellia_crypt_ecb_wrap,
\r
732 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
733 camellia_crypt_cbc_wrap,
\r
735 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
736 camellia_crypt_cfb128_wrap,
\r
738 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
741 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
742 camellia_crypt_ctr_wrap,
\r
744 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
747 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
750 camellia_setkey_enc_wrap,
\r
751 camellia_setkey_dec_wrap,
\r
752 camellia_ctx_alloc,
\r
756 static const mbedtls_cipher_info_t camellia_128_ecb_info = {
\r
757 MBEDTLS_CIPHER_CAMELLIA_128_ECB,
\r
760 "CAMELLIA-128-ECB",
\r
767 static const mbedtls_cipher_info_t camellia_192_ecb_info = {
\r
768 MBEDTLS_CIPHER_CAMELLIA_192_ECB,
\r
771 "CAMELLIA-192-ECB",
\r
778 static const mbedtls_cipher_info_t camellia_256_ecb_info = {
\r
779 MBEDTLS_CIPHER_CAMELLIA_256_ECB,
\r
782 "CAMELLIA-256-ECB",
\r
789 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
790 static const mbedtls_cipher_info_t camellia_128_cbc_info = {
\r
791 MBEDTLS_CIPHER_CAMELLIA_128_CBC,
\r
794 "CAMELLIA-128-CBC",
\r
801 static const mbedtls_cipher_info_t camellia_192_cbc_info = {
\r
802 MBEDTLS_CIPHER_CAMELLIA_192_CBC,
\r
805 "CAMELLIA-192-CBC",
\r
812 static const mbedtls_cipher_info_t camellia_256_cbc_info = {
\r
813 MBEDTLS_CIPHER_CAMELLIA_256_CBC,
\r
816 "CAMELLIA-256-CBC",
\r
822 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
824 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
825 static const mbedtls_cipher_info_t camellia_128_cfb128_info = {
\r
826 MBEDTLS_CIPHER_CAMELLIA_128_CFB128,
\r
829 "CAMELLIA-128-CFB128",
\r
836 static const mbedtls_cipher_info_t camellia_192_cfb128_info = {
\r
837 MBEDTLS_CIPHER_CAMELLIA_192_CFB128,
\r
840 "CAMELLIA-192-CFB128",
\r
847 static const mbedtls_cipher_info_t camellia_256_cfb128_info = {
\r
848 MBEDTLS_CIPHER_CAMELLIA_256_CFB128,
\r
851 "CAMELLIA-256-CFB128",
\r
857 #endif /* MBEDTLS_CIPHER_MODE_CFB */
\r
859 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
860 static const mbedtls_cipher_info_t camellia_128_ctr_info = {
\r
861 MBEDTLS_CIPHER_CAMELLIA_128_CTR,
\r
864 "CAMELLIA-128-CTR",
\r
871 static const mbedtls_cipher_info_t camellia_192_ctr_info = {
\r
872 MBEDTLS_CIPHER_CAMELLIA_192_CTR,
\r
875 "CAMELLIA-192-CTR",
\r
882 static const mbedtls_cipher_info_t camellia_256_ctr_info = {
\r
883 MBEDTLS_CIPHER_CAMELLIA_256_CTR,
\r
886 "CAMELLIA-256-CTR",
\r
892 #endif /* MBEDTLS_CIPHER_MODE_CTR */
\r
894 #if defined(MBEDTLS_GCM_C)
\r
895 static int gcm_camellia_setkey_wrap( void *ctx, const unsigned char *key,
\r
896 unsigned int key_bitlen )
\r
898 return mbedtls_gcm_setkey( (mbedtls_gcm_context *) ctx, MBEDTLS_CIPHER_ID_CAMELLIA,
\r
902 static const mbedtls_cipher_base_t gcm_camellia_info = {
\r
903 MBEDTLS_CIPHER_ID_CAMELLIA,
\r
905 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
908 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
911 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
914 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
917 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
920 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
923 gcm_camellia_setkey_wrap,
\r
924 gcm_camellia_setkey_wrap,
\r
929 static const mbedtls_cipher_info_t camellia_128_gcm_info = {
\r
930 MBEDTLS_CIPHER_CAMELLIA_128_GCM,
\r
933 "CAMELLIA-128-GCM",
\r
935 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
940 static const mbedtls_cipher_info_t camellia_192_gcm_info = {
\r
941 MBEDTLS_CIPHER_CAMELLIA_192_GCM,
\r
944 "CAMELLIA-192-GCM",
\r
946 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
951 static const mbedtls_cipher_info_t camellia_256_gcm_info = {
\r
952 MBEDTLS_CIPHER_CAMELLIA_256_GCM,
\r
955 "CAMELLIA-256-GCM",
\r
957 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
961 #endif /* MBEDTLS_GCM_C */
\r
963 #if defined(MBEDTLS_CCM_C)
\r
964 static int ccm_camellia_setkey_wrap( void *ctx, const unsigned char *key,
\r
965 unsigned int key_bitlen )
\r
967 return mbedtls_ccm_setkey( (mbedtls_ccm_context *) ctx, MBEDTLS_CIPHER_ID_CAMELLIA,
\r
971 static const mbedtls_cipher_base_t ccm_camellia_info = {
\r
972 MBEDTLS_CIPHER_ID_CAMELLIA,
\r
974 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
977 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
980 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
983 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
986 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
989 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
992 ccm_camellia_setkey_wrap,
\r
993 ccm_camellia_setkey_wrap,
\r
998 static const mbedtls_cipher_info_t camellia_128_ccm_info = {
\r
999 MBEDTLS_CIPHER_CAMELLIA_128_CCM,
\r
1002 "CAMELLIA-128-CCM",
\r
1004 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1006 &ccm_camellia_info
\r
1009 static const mbedtls_cipher_info_t camellia_192_ccm_info = {
\r
1010 MBEDTLS_CIPHER_CAMELLIA_192_CCM,
\r
1013 "CAMELLIA-192-CCM",
\r
1015 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1017 &ccm_camellia_info
\r
1020 static const mbedtls_cipher_info_t camellia_256_ccm_info = {
\r
1021 MBEDTLS_CIPHER_CAMELLIA_256_CCM,
\r
1024 "CAMELLIA-256-CCM",
\r
1026 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1028 &ccm_camellia_info
\r
1030 #endif /* MBEDTLS_CCM_C */
\r
1032 #endif /* MBEDTLS_CAMELLIA_C */
\r
1034 #if defined(MBEDTLS_ARIA_C)
\r
1036 static int aria_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
\r
1037 const unsigned char *input, unsigned char *output )
\r
1040 return mbedtls_aria_crypt_ecb( (mbedtls_aria_context *) ctx, input,
\r
1044 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1045 static int aria_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation,
\r
1046 size_t length, unsigned char *iv,
\r
1047 const unsigned char *input, unsigned char *output )
\r
1049 return mbedtls_aria_crypt_cbc( (mbedtls_aria_context *) ctx, operation, length, iv,
\r
1052 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1054 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1055 static int aria_crypt_cfb128_wrap( void *ctx, mbedtls_operation_t operation,
\r
1056 size_t length, size_t *iv_off, unsigned char *iv,
\r
1057 const unsigned char *input, unsigned char *output )
\r
1059 return mbedtls_aria_crypt_cfb128( (mbedtls_aria_context *) ctx, operation, length,
\r
1060 iv_off, iv, input, output );
\r
1062 #endif /* MBEDTLS_CIPHER_MODE_CFB */
\r
1064 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1065 static int aria_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
\r
1066 unsigned char *nonce_counter, unsigned char *stream_block,
\r
1067 const unsigned char *input, unsigned char *output )
\r
1069 return mbedtls_aria_crypt_ctr( (mbedtls_aria_context *) ctx, length, nc_off,
\r
1070 nonce_counter, stream_block, input, output );
\r
1072 #endif /* MBEDTLS_CIPHER_MODE_CTR */
\r
1074 static int aria_setkey_dec_wrap( void *ctx, const unsigned char *key,
\r
1075 unsigned int key_bitlen )
\r
1077 return mbedtls_aria_setkey_dec( (mbedtls_aria_context *) ctx, key, key_bitlen );
\r
1080 static int aria_setkey_enc_wrap( void *ctx, const unsigned char *key,
\r
1081 unsigned int key_bitlen )
\r
1083 return mbedtls_aria_setkey_enc( (mbedtls_aria_context *) ctx, key, key_bitlen );
\r
1086 static void * aria_ctx_alloc( void )
\r
1088 mbedtls_aria_context *ctx;
\r
1089 ctx = mbedtls_calloc( 1, sizeof( mbedtls_aria_context ) );
\r
1094 mbedtls_aria_init( ctx );
\r
1099 static void aria_ctx_free( void *ctx )
\r
1101 mbedtls_aria_free( (mbedtls_aria_context *) ctx );
\r
1102 mbedtls_free( ctx );
\r
1105 static const mbedtls_cipher_base_t aria_info = {
\r
1106 MBEDTLS_CIPHER_ID_ARIA,
\r
1107 aria_crypt_ecb_wrap,
\r
1108 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1109 aria_crypt_cbc_wrap,
\r
1111 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1112 aria_crypt_cfb128_wrap,
\r
1114 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1117 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1118 aria_crypt_ctr_wrap,
\r
1120 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1123 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1126 aria_setkey_enc_wrap,
\r
1127 aria_setkey_dec_wrap,
\r
1132 static const mbedtls_cipher_info_t aria_128_ecb_info = {
\r
1133 MBEDTLS_CIPHER_ARIA_128_ECB,
\r
1143 static const mbedtls_cipher_info_t aria_192_ecb_info = {
\r
1144 MBEDTLS_CIPHER_ARIA_192_ECB,
\r
1154 static const mbedtls_cipher_info_t aria_256_ecb_info = {
\r
1155 MBEDTLS_CIPHER_ARIA_256_ECB,
\r
1165 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1166 static const mbedtls_cipher_info_t aria_128_cbc_info = {
\r
1167 MBEDTLS_CIPHER_ARIA_128_CBC,
\r
1177 static const mbedtls_cipher_info_t aria_192_cbc_info = {
\r
1178 MBEDTLS_CIPHER_ARIA_192_CBC,
\r
1188 static const mbedtls_cipher_info_t aria_256_cbc_info = {
\r
1189 MBEDTLS_CIPHER_ARIA_256_CBC,
\r
1198 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1200 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1201 static const mbedtls_cipher_info_t aria_128_cfb128_info = {
\r
1202 MBEDTLS_CIPHER_ARIA_128_CFB128,
\r
1205 "ARIA-128-CFB128",
\r
1212 static const mbedtls_cipher_info_t aria_192_cfb128_info = {
\r
1213 MBEDTLS_CIPHER_ARIA_192_CFB128,
\r
1216 "ARIA-192-CFB128",
\r
1223 static const mbedtls_cipher_info_t aria_256_cfb128_info = {
\r
1224 MBEDTLS_CIPHER_ARIA_256_CFB128,
\r
1227 "ARIA-256-CFB128",
\r
1233 #endif /* MBEDTLS_CIPHER_MODE_CFB */
\r
1235 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1236 static const mbedtls_cipher_info_t aria_128_ctr_info = {
\r
1237 MBEDTLS_CIPHER_ARIA_128_CTR,
\r
1247 static const mbedtls_cipher_info_t aria_192_ctr_info = {
\r
1248 MBEDTLS_CIPHER_ARIA_192_CTR,
\r
1258 static const mbedtls_cipher_info_t aria_256_ctr_info = {
\r
1259 MBEDTLS_CIPHER_ARIA_256_CTR,
\r
1268 #endif /* MBEDTLS_CIPHER_MODE_CTR */
\r
1270 #if defined(MBEDTLS_GCM_C)
\r
1271 static int gcm_aria_setkey_wrap( void *ctx, const unsigned char *key,
\r
1272 unsigned int key_bitlen )
\r
1274 return mbedtls_gcm_setkey( (mbedtls_gcm_context *) ctx, MBEDTLS_CIPHER_ID_ARIA,
\r
1275 key, key_bitlen );
\r
1278 static const mbedtls_cipher_base_t gcm_aria_info = {
\r
1279 MBEDTLS_CIPHER_ID_ARIA,
\r
1281 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1284 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1287 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1290 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1293 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1296 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1299 gcm_aria_setkey_wrap,
\r
1300 gcm_aria_setkey_wrap,
\r
1305 static const mbedtls_cipher_info_t aria_128_gcm_info = {
\r
1306 MBEDTLS_CIPHER_ARIA_128_GCM,
\r
1311 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1316 static const mbedtls_cipher_info_t aria_192_gcm_info = {
\r
1317 MBEDTLS_CIPHER_ARIA_192_GCM,
\r
1322 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1327 static const mbedtls_cipher_info_t aria_256_gcm_info = {
\r
1328 MBEDTLS_CIPHER_ARIA_256_GCM,
\r
1333 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1337 #endif /* MBEDTLS_GCM_C */
\r
1339 #if defined(MBEDTLS_CCM_C)
\r
1340 static int ccm_aria_setkey_wrap( void *ctx, const unsigned char *key,
\r
1341 unsigned int key_bitlen )
\r
1343 return mbedtls_ccm_setkey( (mbedtls_ccm_context *) ctx, MBEDTLS_CIPHER_ID_ARIA,
\r
1344 key, key_bitlen );
\r
1347 static const mbedtls_cipher_base_t ccm_aria_info = {
\r
1348 MBEDTLS_CIPHER_ID_ARIA,
\r
1350 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1353 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1356 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1359 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1362 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1365 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1368 ccm_aria_setkey_wrap,
\r
1369 ccm_aria_setkey_wrap,
\r
1374 static const mbedtls_cipher_info_t aria_128_ccm_info = {
\r
1375 MBEDTLS_CIPHER_ARIA_128_CCM,
\r
1380 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1385 static const mbedtls_cipher_info_t aria_192_ccm_info = {
\r
1386 MBEDTLS_CIPHER_ARIA_192_CCM,
\r
1391 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1396 static const mbedtls_cipher_info_t aria_256_ccm_info = {
\r
1397 MBEDTLS_CIPHER_ARIA_256_CCM,
\r
1402 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
\r
1406 #endif /* MBEDTLS_CCM_C */
\r
1408 #endif /* MBEDTLS_ARIA_C */
\r
1410 #if defined(MBEDTLS_DES_C)
\r
1412 static int des_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
\r
1413 const unsigned char *input, unsigned char *output )
\r
1415 ((void) operation);
\r
1416 return mbedtls_des_crypt_ecb( (mbedtls_des_context *) ctx, input, output );
\r
1419 static int des3_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
\r
1420 const unsigned char *input, unsigned char *output )
\r
1422 ((void) operation);
\r
1423 return mbedtls_des3_crypt_ecb( (mbedtls_des3_context *) ctx, input, output );
\r
1426 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1427 static int des_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, size_t length,
\r
1428 unsigned char *iv, const unsigned char *input, unsigned char *output )
\r
1430 return mbedtls_des_crypt_cbc( (mbedtls_des_context *) ctx, operation, length, iv, input,
\r
1433 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1435 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1436 static int des3_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, size_t length,
\r
1437 unsigned char *iv, const unsigned char *input, unsigned char *output )
\r
1439 return mbedtls_des3_crypt_cbc( (mbedtls_des3_context *) ctx, operation, length, iv, input,
\r
1442 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1444 static int des_setkey_dec_wrap( void *ctx, const unsigned char *key,
\r
1445 unsigned int key_bitlen )
\r
1447 ((void) key_bitlen);
\r
1449 return mbedtls_des_setkey_dec( (mbedtls_des_context *) ctx, key );
\r
1452 static int des_setkey_enc_wrap( void *ctx, const unsigned char *key,
\r
1453 unsigned int key_bitlen )
\r
1455 ((void) key_bitlen);
\r
1457 return mbedtls_des_setkey_enc( (mbedtls_des_context *) ctx, key );
\r
1460 static int des3_set2key_dec_wrap( void *ctx, const unsigned char *key,
\r
1461 unsigned int key_bitlen )
\r
1463 ((void) key_bitlen);
\r
1465 return mbedtls_des3_set2key_dec( (mbedtls_des3_context *) ctx, key );
\r
1468 static int des3_set2key_enc_wrap( void *ctx, const unsigned char *key,
\r
1469 unsigned int key_bitlen )
\r
1471 ((void) key_bitlen);
\r
1473 return mbedtls_des3_set2key_enc( (mbedtls_des3_context *) ctx, key );
\r
1476 static int des3_set3key_dec_wrap( void *ctx, const unsigned char *key,
\r
1477 unsigned int key_bitlen )
\r
1479 ((void) key_bitlen);
\r
1481 return mbedtls_des3_set3key_dec( (mbedtls_des3_context *) ctx, key );
\r
1484 static int des3_set3key_enc_wrap( void *ctx, const unsigned char *key,
\r
1485 unsigned int key_bitlen )
\r
1487 ((void) key_bitlen);
\r
1489 return mbedtls_des3_set3key_enc( (mbedtls_des3_context *) ctx, key );
\r
1492 static void * des_ctx_alloc( void )
\r
1494 mbedtls_des_context *des = mbedtls_calloc( 1, sizeof( mbedtls_des_context ) );
\r
1499 mbedtls_des_init( des );
\r
1504 static void des_ctx_free( void *ctx )
\r
1506 mbedtls_des_free( (mbedtls_des_context *) ctx );
\r
1507 mbedtls_free( ctx );
\r
1510 static void * des3_ctx_alloc( void )
\r
1512 mbedtls_des3_context *des3;
\r
1513 des3 = mbedtls_calloc( 1, sizeof( mbedtls_des3_context ) );
\r
1515 if( des3 == NULL )
\r
1518 mbedtls_des3_init( des3 );
\r
1523 static void des3_ctx_free( void *ctx )
\r
1525 mbedtls_des3_free( (mbedtls_des3_context *) ctx );
\r
1526 mbedtls_free( ctx );
\r
1529 static const mbedtls_cipher_base_t des_info = {
\r
1530 MBEDTLS_CIPHER_ID_DES,
\r
1531 des_crypt_ecb_wrap,
\r
1532 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1533 des_crypt_cbc_wrap,
\r
1535 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1538 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1541 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1544 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1547 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1550 des_setkey_enc_wrap,
\r
1551 des_setkey_dec_wrap,
\r
1556 static const mbedtls_cipher_info_t des_ecb_info = {
\r
1557 MBEDTLS_CIPHER_DES_ECB,
\r
1559 MBEDTLS_KEY_LENGTH_DES,
\r
1567 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1568 static const mbedtls_cipher_info_t des_cbc_info = {
\r
1569 MBEDTLS_CIPHER_DES_CBC,
\r
1571 MBEDTLS_KEY_LENGTH_DES,
\r
1578 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1580 static const mbedtls_cipher_base_t des_ede_info = {
\r
1581 MBEDTLS_CIPHER_ID_DES,
\r
1582 des3_crypt_ecb_wrap,
\r
1583 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1584 des3_crypt_cbc_wrap,
\r
1586 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1589 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1592 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1595 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1598 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1601 des3_set2key_enc_wrap,
\r
1602 des3_set2key_dec_wrap,
\r
1607 static const mbedtls_cipher_info_t des_ede_ecb_info = {
\r
1608 MBEDTLS_CIPHER_DES_EDE_ECB,
\r
1610 MBEDTLS_KEY_LENGTH_DES_EDE,
\r
1618 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1619 static const mbedtls_cipher_info_t des_ede_cbc_info = {
\r
1620 MBEDTLS_CIPHER_DES_EDE_CBC,
\r
1622 MBEDTLS_KEY_LENGTH_DES_EDE,
\r
1629 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1631 static const mbedtls_cipher_base_t des_ede3_info = {
\r
1632 MBEDTLS_CIPHER_ID_3DES,
\r
1633 des3_crypt_ecb_wrap,
\r
1634 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1635 des3_crypt_cbc_wrap,
\r
1637 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1640 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1643 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1646 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1649 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1652 des3_set3key_enc_wrap,
\r
1653 des3_set3key_dec_wrap,
\r
1658 static const mbedtls_cipher_info_t des_ede3_ecb_info = {
\r
1659 MBEDTLS_CIPHER_DES_EDE3_ECB,
\r
1661 MBEDTLS_KEY_LENGTH_DES_EDE3,
\r
1668 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1669 static const mbedtls_cipher_info_t des_ede3_cbc_info = {
\r
1670 MBEDTLS_CIPHER_DES_EDE3_CBC,
\r
1672 MBEDTLS_KEY_LENGTH_DES_EDE3,
\r
1679 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1680 #endif /* MBEDTLS_DES_C */
\r
1682 #if defined(MBEDTLS_BLOWFISH_C)
\r
1684 static int blowfish_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
\r
1685 const unsigned char *input, unsigned char *output )
\r
1687 return mbedtls_blowfish_crypt_ecb( (mbedtls_blowfish_context *) ctx, operation, input,
\r
1691 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1692 static int blowfish_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation,
\r
1693 size_t length, unsigned char *iv, const unsigned char *input,
\r
1694 unsigned char *output )
\r
1696 return mbedtls_blowfish_crypt_cbc( (mbedtls_blowfish_context *) ctx, operation, length, iv,
\r
1699 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1701 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1702 static int blowfish_crypt_cfb64_wrap( void *ctx, mbedtls_operation_t operation,
\r
1703 size_t length, size_t *iv_off, unsigned char *iv,
\r
1704 const unsigned char *input, unsigned char *output )
\r
1706 return mbedtls_blowfish_crypt_cfb64( (mbedtls_blowfish_context *) ctx, operation, length,
\r
1707 iv_off, iv, input, output );
\r
1709 #endif /* MBEDTLS_CIPHER_MODE_CFB */
\r
1711 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1712 static int blowfish_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
\r
1713 unsigned char *nonce_counter, unsigned char *stream_block,
\r
1714 const unsigned char *input, unsigned char *output )
\r
1716 return mbedtls_blowfish_crypt_ctr( (mbedtls_blowfish_context *) ctx, length, nc_off,
\r
1717 nonce_counter, stream_block, input, output );
\r
1719 #endif /* MBEDTLS_CIPHER_MODE_CTR */
\r
1721 static int blowfish_setkey_wrap( void *ctx, const unsigned char *key,
\r
1722 unsigned int key_bitlen )
\r
1724 return mbedtls_blowfish_setkey( (mbedtls_blowfish_context *) ctx, key, key_bitlen );
\r
1727 static void * blowfish_ctx_alloc( void )
\r
1729 mbedtls_blowfish_context *ctx;
\r
1730 ctx = mbedtls_calloc( 1, sizeof( mbedtls_blowfish_context ) );
\r
1735 mbedtls_blowfish_init( ctx );
\r
1740 static void blowfish_ctx_free( void *ctx )
\r
1742 mbedtls_blowfish_free( (mbedtls_blowfish_context *) ctx );
\r
1743 mbedtls_free( ctx );
\r
1746 static const mbedtls_cipher_base_t blowfish_info = {
\r
1747 MBEDTLS_CIPHER_ID_BLOWFISH,
\r
1748 blowfish_crypt_ecb_wrap,
\r
1749 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1750 blowfish_crypt_cbc_wrap,
\r
1752 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1753 blowfish_crypt_cfb64_wrap,
\r
1755 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1758 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1759 blowfish_crypt_ctr_wrap,
\r
1761 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1764 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1767 blowfish_setkey_wrap,
\r
1768 blowfish_setkey_wrap,
\r
1769 blowfish_ctx_alloc,
\r
1773 static const mbedtls_cipher_info_t blowfish_ecb_info = {
\r
1774 MBEDTLS_CIPHER_BLOWFISH_ECB,
\r
1779 MBEDTLS_CIPHER_VARIABLE_KEY_LEN,
\r
1784 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1785 static const mbedtls_cipher_info_t blowfish_cbc_info = {
\r
1786 MBEDTLS_CIPHER_BLOWFISH_CBC,
\r
1791 MBEDTLS_CIPHER_VARIABLE_KEY_LEN,
\r
1795 #endif /* MBEDTLS_CIPHER_MODE_CBC */
\r
1797 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1798 static const mbedtls_cipher_info_t blowfish_cfb64_info = {
\r
1799 MBEDTLS_CIPHER_BLOWFISH_CFB64,
\r
1804 MBEDTLS_CIPHER_VARIABLE_KEY_LEN,
\r
1808 #endif /* MBEDTLS_CIPHER_MODE_CFB */
\r
1810 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1811 static const mbedtls_cipher_info_t blowfish_ctr_info = {
\r
1812 MBEDTLS_CIPHER_BLOWFISH_CTR,
\r
1817 MBEDTLS_CIPHER_VARIABLE_KEY_LEN,
\r
1821 #endif /* MBEDTLS_CIPHER_MODE_CTR */
\r
1822 #endif /* MBEDTLS_BLOWFISH_C */
\r
1824 #if defined(MBEDTLS_ARC4_C)
\r
1825 static int arc4_crypt_stream_wrap( void *ctx, size_t length,
\r
1826 const unsigned char *input,
\r
1827 unsigned char *output )
\r
1829 return( mbedtls_arc4_crypt( (mbedtls_arc4_context *) ctx, length, input, output ) );
\r
1832 static int arc4_setkey_wrap( void *ctx, const unsigned char *key,
\r
1833 unsigned int key_bitlen )
\r
1835 /* we get key_bitlen in bits, arc4 expects it in bytes */
\r
1836 if( key_bitlen % 8 != 0 )
\r
1837 return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
\r
1839 mbedtls_arc4_setup( (mbedtls_arc4_context *) ctx, key, key_bitlen / 8 );
\r
1843 static void * arc4_ctx_alloc( void )
\r
1845 mbedtls_arc4_context *ctx;
\r
1846 ctx = mbedtls_calloc( 1, sizeof( mbedtls_arc4_context ) );
\r
1851 mbedtls_arc4_init( ctx );
\r
1856 static void arc4_ctx_free( void *ctx )
\r
1858 mbedtls_arc4_free( (mbedtls_arc4_context *) ctx );
\r
1859 mbedtls_free( ctx );
\r
1862 static const mbedtls_cipher_base_t arc4_base_info = {
\r
1863 MBEDTLS_CIPHER_ID_ARC4,
\r
1865 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1868 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1871 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1874 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1877 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1880 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1881 arc4_crypt_stream_wrap,
\r
1889 static const mbedtls_cipher_info_t arc4_128_info = {
\r
1890 MBEDTLS_CIPHER_ARC4_128,
\r
1891 MBEDTLS_MODE_STREAM,
\r
1899 #endif /* MBEDTLS_ARC4_C */
\r
1901 #if defined(MBEDTLS_CHACHA20_C)
\r
1903 static int chacha20_setkey_wrap( void *ctx, const unsigned char *key,
\r
1904 unsigned int key_bitlen )
\r
1906 if( key_bitlen != 256U )
\r
1907 return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
\r
1909 if ( 0 != mbedtls_chacha20_setkey( (mbedtls_chacha20_context*)ctx, key ) )
\r
1910 return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
\r
1915 static int chacha20_stream_wrap( void *ctx, size_t length,
\r
1916 const unsigned char *input,
\r
1917 unsigned char *output )
\r
1921 ret = mbedtls_chacha20_update( ctx, length, input, output );
\r
1922 if( ret == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA )
\r
1923 return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
\r
1928 static void * chacha20_ctx_alloc( void )
\r
1930 mbedtls_chacha20_context *ctx;
\r
1931 ctx = mbedtls_calloc( 1, sizeof( mbedtls_chacha20_context ) );
\r
1936 mbedtls_chacha20_init( ctx );
\r
1941 static void chacha20_ctx_free( void *ctx )
\r
1943 mbedtls_chacha20_free( (mbedtls_chacha20_context *) ctx );
\r
1944 mbedtls_free( ctx );
\r
1947 static const mbedtls_cipher_base_t chacha20_base_info = {
\r
1948 MBEDTLS_CIPHER_ID_CHACHA20,
\r
1950 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
1953 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
1956 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
1959 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
1962 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
1965 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
1966 chacha20_stream_wrap,
\r
1968 chacha20_setkey_wrap,
\r
1969 chacha20_setkey_wrap,
\r
1970 chacha20_ctx_alloc,
\r
1973 static const mbedtls_cipher_info_t chacha20_info = {
\r
1974 MBEDTLS_CIPHER_CHACHA20,
\r
1975 MBEDTLS_MODE_STREAM,
\r
1981 &chacha20_base_info
\r
1983 #endif /* MBEDTLS_CHACHA20_C */
\r
1985 #if defined(MBEDTLS_CHACHAPOLY_C)
\r
1987 static int chachapoly_setkey_wrap( void *ctx,
\r
1988 const unsigned char *key,
\r
1989 unsigned int key_bitlen )
\r
1991 if( key_bitlen != 256U )
\r
1992 return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
\r
1994 if ( 0 != mbedtls_chachapoly_setkey( (mbedtls_chachapoly_context*)ctx, key ) )
\r
1995 return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
\r
2000 static void * chachapoly_ctx_alloc( void )
\r
2002 mbedtls_chachapoly_context *ctx;
\r
2003 ctx = mbedtls_calloc( 1, sizeof( mbedtls_chachapoly_context ) );
\r
2008 mbedtls_chachapoly_init( ctx );
\r
2013 static void chachapoly_ctx_free( void *ctx )
\r
2015 mbedtls_chachapoly_free( (mbedtls_chachapoly_context *) ctx );
\r
2016 mbedtls_free( ctx );
\r
2019 static const mbedtls_cipher_base_t chachapoly_base_info = {
\r
2020 MBEDTLS_CIPHER_ID_CHACHA20,
\r
2022 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
2025 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
2028 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
2031 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
2034 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
2037 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
2040 chachapoly_setkey_wrap,
\r
2041 chachapoly_setkey_wrap,
\r
2042 chachapoly_ctx_alloc,
\r
2043 chachapoly_ctx_free
\r
2045 static const mbedtls_cipher_info_t chachapoly_info = {
\r
2046 MBEDTLS_CIPHER_CHACHA20_POLY1305,
\r
2047 MBEDTLS_MODE_CHACHAPOLY,
\r
2049 "CHACHA20-POLY1305",
\r
2053 &chachapoly_base_info
\r
2055 #endif /* MBEDTLS_CHACHAPOLY_C */
\r
2057 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
\r
2058 static int null_crypt_stream( void *ctx, size_t length,
\r
2059 const unsigned char *input,
\r
2060 unsigned char *output )
\r
2063 memmove( output, input, length );
\r
2067 static int null_setkey( void *ctx, const unsigned char *key,
\r
2068 unsigned int key_bitlen )
\r
2072 ((void) key_bitlen);
\r
2077 static void * null_ctx_alloc( void )
\r
2079 return( (void *) 1 );
\r
2082 static void null_ctx_free( void *ctx )
\r
2087 static const mbedtls_cipher_base_t null_base_info = {
\r
2088 MBEDTLS_CIPHER_ID_NULL,
\r
2090 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
2093 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
2096 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
2099 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
2102 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
2105 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
2106 null_crypt_stream,
\r
2114 static const mbedtls_cipher_info_t null_cipher_info = {
\r
2115 MBEDTLS_CIPHER_NULL,
\r
2116 MBEDTLS_MODE_STREAM,
\r
2124 #endif /* defined(MBEDTLS_CIPHER_NULL_CIPHER) */
\r
2126 #if defined(MBEDTLS_NIST_KW_C)
\r
2127 static void *kw_ctx_alloc( void )
\r
2129 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_nist_kw_context ) );
\r
2132 mbedtls_nist_kw_init( (mbedtls_nist_kw_context *) ctx );
\r
2137 static void kw_ctx_free( void *ctx )
\r
2139 mbedtls_nist_kw_free( ctx );
\r
2140 mbedtls_free( ctx );
\r
2143 static int kw_aes_setkey_wrap( void *ctx, const unsigned char *key,
\r
2144 unsigned int key_bitlen )
\r
2146 return mbedtls_nist_kw_setkey( (mbedtls_nist_kw_context *) ctx,
\r
2147 MBEDTLS_CIPHER_ID_AES, key, key_bitlen, 1 );
\r
2150 static int kw_aes_setkey_unwrap( void *ctx, const unsigned char *key,
\r
2151 unsigned int key_bitlen )
\r
2153 return mbedtls_nist_kw_setkey( (mbedtls_nist_kw_context *) ctx,
\r
2154 MBEDTLS_CIPHER_ID_AES, key, key_bitlen, 0 );
\r
2157 static const mbedtls_cipher_base_t kw_aes_info = {
\r
2158 MBEDTLS_CIPHER_ID_AES,
\r
2160 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
2163 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
2166 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
2169 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
2172 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
2175 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
\r
2178 kw_aes_setkey_wrap,
\r
2179 kw_aes_setkey_unwrap,
\r
2184 static const mbedtls_cipher_info_t aes_128_nist_kw_info = {
\r
2185 MBEDTLS_CIPHER_AES_128_KW,
\r
2195 static const mbedtls_cipher_info_t aes_192_nist_kw_info = {
\r
2196 MBEDTLS_CIPHER_AES_192_KW,
\r
2206 static const mbedtls_cipher_info_t aes_256_nist_kw_info = {
\r
2207 MBEDTLS_CIPHER_AES_256_KW,
\r
2217 static const mbedtls_cipher_info_t aes_128_nist_kwp_info = {
\r
2218 MBEDTLS_CIPHER_AES_128_KWP,
\r
2228 static const mbedtls_cipher_info_t aes_192_nist_kwp_info = {
\r
2229 MBEDTLS_CIPHER_AES_192_KWP,
\r
2239 static const mbedtls_cipher_info_t aes_256_nist_kwp_info = {
\r
2240 MBEDTLS_CIPHER_AES_256_KWP,
\r
2249 #endif /* MBEDTLS_NIST_KW_C */
\r
2251 const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] =
\r
2253 #if defined(MBEDTLS_AES_C)
\r
2254 { MBEDTLS_CIPHER_AES_128_ECB, &aes_128_ecb_info },
\r
2255 { MBEDTLS_CIPHER_AES_192_ECB, &aes_192_ecb_info },
\r
2256 { MBEDTLS_CIPHER_AES_256_ECB, &aes_256_ecb_info },
\r
2257 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
2258 { MBEDTLS_CIPHER_AES_128_CBC, &aes_128_cbc_info },
\r
2259 { MBEDTLS_CIPHER_AES_192_CBC, &aes_192_cbc_info },
\r
2260 { MBEDTLS_CIPHER_AES_256_CBC, &aes_256_cbc_info },
\r
2262 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
2263 { MBEDTLS_CIPHER_AES_128_CFB128, &aes_128_cfb128_info },
\r
2264 { MBEDTLS_CIPHER_AES_192_CFB128, &aes_192_cfb128_info },
\r
2265 { MBEDTLS_CIPHER_AES_256_CFB128, &aes_256_cfb128_info },
\r
2267 #if defined(MBEDTLS_CIPHER_MODE_OFB)
\r
2268 { MBEDTLS_CIPHER_AES_128_OFB, &aes_128_ofb_info },
\r
2269 { MBEDTLS_CIPHER_AES_192_OFB, &aes_192_ofb_info },
\r
2270 { MBEDTLS_CIPHER_AES_256_OFB, &aes_256_ofb_info },
\r
2272 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
2273 { MBEDTLS_CIPHER_AES_128_CTR, &aes_128_ctr_info },
\r
2274 { MBEDTLS_CIPHER_AES_192_CTR, &aes_192_ctr_info },
\r
2275 { MBEDTLS_CIPHER_AES_256_CTR, &aes_256_ctr_info },
\r
2277 #if defined(MBEDTLS_CIPHER_MODE_XTS)
\r
2278 { MBEDTLS_CIPHER_AES_128_XTS, &aes_128_xts_info },
\r
2279 { MBEDTLS_CIPHER_AES_256_XTS, &aes_256_xts_info },
\r
2281 #if defined(MBEDTLS_GCM_C)
\r
2282 { MBEDTLS_CIPHER_AES_128_GCM, &aes_128_gcm_info },
\r
2283 { MBEDTLS_CIPHER_AES_192_GCM, &aes_192_gcm_info },
\r
2284 { MBEDTLS_CIPHER_AES_256_GCM, &aes_256_gcm_info },
\r
2286 #if defined(MBEDTLS_CCM_C)
\r
2287 { MBEDTLS_CIPHER_AES_128_CCM, &aes_128_ccm_info },
\r
2288 { MBEDTLS_CIPHER_AES_192_CCM, &aes_192_ccm_info },
\r
2289 { MBEDTLS_CIPHER_AES_256_CCM, &aes_256_ccm_info },
\r
2291 #endif /* MBEDTLS_AES_C */
\r
2293 #if defined(MBEDTLS_ARC4_C)
\r
2294 { MBEDTLS_CIPHER_ARC4_128, &arc4_128_info },
\r
2297 #if defined(MBEDTLS_BLOWFISH_C)
\r
2298 { MBEDTLS_CIPHER_BLOWFISH_ECB, &blowfish_ecb_info },
\r
2299 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
2300 { MBEDTLS_CIPHER_BLOWFISH_CBC, &blowfish_cbc_info },
\r
2302 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
2303 { MBEDTLS_CIPHER_BLOWFISH_CFB64, &blowfish_cfb64_info },
\r
2305 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
2306 { MBEDTLS_CIPHER_BLOWFISH_CTR, &blowfish_ctr_info },
\r
2308 #endif /* MBEDTLS_BLOWFISH_C */
\r
2310 #if defined(MBEDTLS_CAMELLIA_C)
\r
2311 { MBEDTLS_CIPHER_CAMELLIA_128_ECB, &camellia_128_ecb_info },
\r
2312 { MBEDTLS_CIPHER_CAMELLIA_192_ECB, &camellia_192_ecb_info },
\r
2313 { MBEDTLS_CIPHER_CAMELLIA_256_ECB, &camellia_256_ecb_info },
\r
2314 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
2315 { MBEDTLS_CIPHER_CAMELLIA_128_CBC, &camellia_128_cbc_info },
\r
2316 { MBEDTLS_CIPHER_CAMELLIA_192_CBC, &camellia_192_cbc_info },
\r
2317 { MBEDTLS_CIPHER_CAMELLIA_256_CBC, &camellia_256_cbc_info },
\r
2319 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
2320 { MBEDTLS_CIPHER_CAMELLIA_128_CFB128, &camellia_128_cfb128_info },
\r
2321 { MBEDTLS_CIPHER_CAMELLIA_192_CFB128, &camellia_192_cfb128_info },
\r
2322 { MBEDTLS_CIPHER_CAMELLIA_256_CFB128, &camellia_256_cfb128_info },
\r
2324 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
2325 { MBEDTLS_CIPHER_CAMELLIA_128_CTR, &camellia_128_ctr_info },
\r
2326 { MBEDTLS_CIPHER_CAMELLIA_192_CTR, &camellia_192_ctr_info },
\r
2327 { MBEDTLS_CIPHER_CAMELLIA_256_CTR, &camellia_256_ctr_info },
\r
2329 #if defined(MBEDTLS_GCM_C)
\r
2330 { MBEDTLS_CIPHER_CAMELLIA_128_GCM, &camellia_128_gcm_info },
\r
2331 { MBEDTLS_CIPHER_CAMELLIA_192_GCM, &camellia_192_gcm_info },
\r
2332 { MBEDTLS_CIPHER_CAMELLIA_256_GCM, &camellia_256_gcm_info },
\r
2334 #if defined(MBEDTLS_CCM_C)
\r
2335 { MBEDTLS_CIPHER_CAMELLIA_128_CCM, &camellia_128_ccm_info },
\r
2336 { MBEDTLS_CIPHER_CAMELLIA_192_CCM, &camellia_192_ccm_info },
\r
2337 { MBEDTLS_CIPHER_CAMELLIA_256_CCM, &camellia_256_ccm_info },
\r
2339 #endif /* MBEDTLS_CAMELLIA_C */
\r
2341 #if defined(MBEDTLS_ARIA_C)
\r
2342 { MBEDTLS_CIPHER_ARIA_128_ECB, &aria_128_ecb_info },
\r
2343 { MBEDTLS_CIPHER_ARIA_192_ECB, &aria_192_ecb_info },
\r
2344 { MBEDTLS_CIPHER_ARIA_256_ECB, &aria_256_ecb_info },
\r
2345 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
2346 { MBEDTLS_CIPHER_ARIA_128_CBC, &aria_128_cbc_info },
\r
2347 { MBEDTLS_CIPHER_ARIA_192_CBC, &aria_192_cbc_info },
\r
2348 { MBEDTLS_CIPHER_ARIA_256_CBC, &aria_256_cbc_info },
\r
2350 #if defined(MBEDTLS_CIPHER_MODE_CFB)
\r
2351 { MBEDTLS_CIPHER_ARIA_128_CFB128, &aria_128_cfb128_info },
\r
2352 { MBEDTLS_CIPHER_ARIA_192_CFB128, &aria_192_cfb128_info },
\r
2353 { MBEDTLS_CIPHER_ARIA_256_CFB128, &aria_256_cfb128_info },
\r
2355 #if defined(MBEDTLS_CIPHER_MODE_CTR)
\r
2356 { MBEDTLS_CIPHER_ARIA_128_CTR, &aria_128_ctr_info },
\r
2357 { MBEDTLS_CIPHER_ARIA_192_CTR, &aria_192_ctr_info },
\r
2358 { MBEDTLS_CIPHER_ARIA_256_CTR, &aria_256_ctr_info },
\r
2360 #if defined(MBEDTLS_GCM_C)
\r
2361 { MBEDTLS_CIPHER_ARIA_128_GCM, &aria_128_gcm_info },
\r
2362 { MBEDTLS_CIPHER_ARIA_192_GCM, &aria_192_gcm_info },
\r
2363 { MBEDTLS_CIPHER_ARIA_256_GCM, &aria_256_gcm_info },
\r
2365 #if defined(MBEDTLS_CCM_C)
\r
2366 { MBEDTLS_CIPHER_ARIA_128_CCM, &aria_128_ccm_info },
\r
2367 { MBEDTLS_CIPHER_ARIA_192_CCM, &aria_192_ccm_info },
\r
2368 { MBEDTLS_CIPHER_ARIA_256_CCM, &aria_256_ccm_info },
\r
2370 #endif /* MBEDTLS_ARIA_C */
\r
2372 #if defined(MBEDTLS_DES_C)
\r
2373 { MBEDTLS_CIPHER_DES_ECB, &des_ecb_info },
\r
2374 { MBEDTLS_CIPHER_DES_EDE_ECB, &des_ede_ecb_info },
\r
2375 { MBEDTLS_CIPHER_DES_EDE3_ECB, &des_ede3_ecb_info },
\r
2376 #if defined(MBEDTLS_CIPHER_MODE_CBC)
\r
2377 { MBEDTLS_CIPHER_DES_CBC, &des_cbc_info },
\r
2378 { MBEDTLS_CIPHER_DES_EDE_CBC, &des_ede_cbc_info },
\r
2379 { MBEDTLS_CIPHER_DES_EDE3_CBC, &des_ede3_cbc_info },
\r
2381 #endif /* MBEDTLS_DES_C */
\r
2383 #if defined(MBEDTLS_CHACHA20_C)
\r
2384 { MBEDTLS_CIPHER_CHACHA20, &chacha20_info },
\r
2387 #if defined(MBEDTLS_CHACHAPOLY_C)
\r
2388 { MBEDTLS_CIPHER_CHACHA20_POLY1305, &chachapoly_info },
\r
2391 #if defined(MBEDTLS_NIST_KW_C)
\r
2392 { MBEDTLS_CIPHER_AES_128_KW, &aes_128_nist_kw_info },
\r
2393 { MBEDTLS_CIPHER_AES_192_KW, &aes_192_nist_kw_info },
\r
2394 { MBEDTLS_CIPHER_AES_256_KW, &aes_256_nist_kw_info },
\r
2395 { MBEDTLS_CIPHER_AES_128_KWP, &aes_128_nist_kwp_info },
\r
2396 { MBEDTLS_CIPHER_AES_192_KWP, &aes_192_nist_kwp_info },
\r
2397 { MBEDTLS_CIPHER_AES_256_KWP, &aes_256_nist_kwp_info },
\r
2400 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
\r
2401 { MBEDTLS_CIPHER_NULL, &null_cipher_info },
\r
2402 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
\r
2404 { MBEDTLS_CIPHER_NONE, NULL }
\r
2407 #define NUM_CIPHERS ( sizeof(mbedtls_cipher_definitions) / \
\r
2408 sizeof(mbedtls_cipher_definitions[0]) )
\r
2409 int mbedtls_cipher_supported[NUM_CIPHERS];
\r
2411 #endif /* MBEDTLS_CIPHER_C */
\r