mbed os with nrf51 internal bandgap enabled to read battery level

Dependents:   BLE_file_test BLE_Blink ExternalEncoder

Committer:
elessair
Date:
Sun Oct 23 15:10:02 2016 +0000
Revision:
0:f269e3021894
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elessair 0:f269e3021894 1 /**
elessair 0:f269e3021894 2 * \file cipher_wrap.c
elessair 0:f269e3021894 3 *
elessair 0:f269e3021894 4 * \brief Generic cipher wrapper for mbed TLS
elessair 0:f269e3021894 5 *
elessair 0:f269e3021894 6 * \author Adriaan de Jong <dejong@fox-it.com>
elessair 0:f269e3021894 7 *
elessair 0:f269e3021894 8 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
elessair 0:f269e3021894 9 * SPDX-License-Identifier: Apache-2.0
elessair 0:f269e3021894 10 *
elessair 0:f269e3021894 11 * Licensed under the Apache License, Version 2.0 (the "License"); you may
elessair 0:f269e3021894 12 * not use this file except in compliance with the License.
elessair 0:f269e3021894 13 * You may obtain a copy of the License at
elessair 0:f269e3021894 14 *
elessair 0:f269e3021894 15 * http://www.apache.org/licenses/LICENSE-2.0
elessair 0:f269e3021894 16 *
elessair 0:f269e3021894 17 * Unless required by applicable law or agreed to in writing, software
elessair 0:f269e3021894 18 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
elessair 0:f269e3021894 19 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
elessair 0:f269e3021894 20 * See the License for the specific language governing permissions and
elessair 0:f269e3021894 21 * limitations under the License.
elessair 0:f269e3021894 22 *
elessair 0:f269e3021894 23 * This file is part of mbed TLS (https://tls.mbed.org)
elessair 0:f269e3021894 24 */
elessair 0:f269e3021894 25
elessair 0:f269e3021894 26 #if !defined(MBEDTLS_CONFIG_FILE)
elessair 0:f269e3021894 27 #include "mbedtls/config.h"
elessair 0:f269e3021894 28 #else
elessair 0:f269e3021894 29 #include MBEDTLS_CONFIG_FILE
elessair 0:f269e3021894 30 #endif
elessair 0:f269e3021894 31
elessair 0:f269e3021894 32 #if defined(MBEDTLS_CIPHER_C)
elessair 0:f269e3021894 33
elessair 0:f269e3021894 34 #include "mbedtls/cipher_internal.h"
elessair 0:f269e3021894 35
elessair 0:f269e3021894 36 #if defined(MBEDTLS_AES_C)
elessair 0:f269e3021894 37 #include "mbedtls/aes.h"
elessair 0:f269e3021894 38 #endif
elessair 0:f269e3021894 39
elessair 0:f269e3021894 40 #if defined(MBEDTLS_ARC4_C)
elessair 0:f269e3021894 41 #include "mbedtls/arc4.h"
elessair 0:f269e3021894 42 #endif
elessair 0:f269e3021894 43
elessair 0:f269e3021894 44 #if defined(MBEDTLS_CAMELLIA_C)
elessair 0:f269e3021894 45 #include "mbedtls/camellia.h"
elessair 0:f269e3021894 46 #endif
elessair 0:f269e3021894 47
elessair 0:f269e3021894 48 #if defined(MBEDTLS_DES_C)
elessair 0:f269e3021894 49 #include "mbedtls/des.h"
elessair 0:f269e3021894 50 #endif
elessair 0:f269e3021894 51
elessair 0:f269e3021894 52 #if defined(MBEDTLS_BLOWFISH_C)
elessair 0:f269e3021894 53 #include "mbedtls/blowfish.h"
elessair 0:f269e3021894 54 #endif
elessair 0:f269e3021894 55
elessair 0:f269e3021894 56 #if defined(MBEDTLS_GCM_C)
elessair 0:f269e3021894 57 #include "mbedtls/gcm.h"
elessair 0:f269e3021894 58 #endif
elessair 0:f269e3021894 59
elessair 0:f269e3021894 60 #if defined(MBEDTLS_CCM_C)
elessair 0:f269e3021894 61 #include "mbedtls/ccm.h"
elessair 0:f269e3021894 62 #endif
elessair 0:f269e3021894 63
elessair 0:f269e3021894 64 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
elessair 0:f269e3021894 65 #include <string.h>
elessair 0:f269e3021894 66 #endif
elessair 0:f269e3021894 67
elessair 0:f269e3021894 68 #if defined(MBEDTLS_PLATFORM_C)
elessair 0:f269e3021894 69 #include "mbedtls/platform.h"
elessair 0:f269e3021894 70 #else
elessair 0:f269e3021894 71 #include <stdlib.h>
elessair 0:f269e3021894 72 #define mbedtls_calloc calloc
elessair 0:f269e3021894 73 #define mbedtls_free free
elessair 0:f269e3021894 74 #endif
elessair 0:f269e3021894 75
elessair 0:f269e3021894 76 #if defined(MBEDTLS_GCM_C)
elessair 0:f269e3021894 77 /* shared by all GCM ciphers */
elessair 0:f269e3021894 78 static void *gcm_ctx_alloc( void )
elessair 0:f269e3021894 79 {
elessair 0:f269e3021894 80 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_gcm_context ) );
elessair 0:f269e3021894 81
elessair 0:f269e3021894 82 if( ctx != NULL )
elessair 0:f269e3021894 83 mbedtls_gcm_init( (mbedtls_gcm_context *) ctx );
elessair 0:f269e3021894 84
elessair 0:f269e3021894 85 return( ctx );
elessair 0:f269e3021894 86 }
elessair 0:f269e3021894 87
elessair 0:f269e3021894 88 static void gcm_ctx_free( void *ctx )
elessair 0:f269e3021894 89 {
elessair 0:f269e3021894 90 mbedtls_gcm_free( ctx );
elessair 0:f269e3021894 91 mbedtls_free( ctx );
elessair 0:f269e3021894 92 }
elessair 0:f269e3021894 93 #endif /* MBEDTLS_GCM_C */
elessair 0:f269e3021894 94
elessair 0:f269e3021894 95 #if defined(MBEDTLS_CCM_C)
elessair 0:f269e3021894 96 /* shared by all CCM ciphers */
elessair 0:f269e3021894 97 static void *ccm_ctx_alloc( void )
elessair 0:f269e3021894 98 {
elessair 0:f269e3021894 99 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_ccm_context ) );
elessair 0:f269e3021894 100
elessair 0:f269e3021894 101 if( ctx != NULL )
elessair 0:f269e3021894 102 mbedtls_ccm_init( (mbedtls_ccm_context *) ctx );
elessair 0:f269e3021894 103
elessair 0:f269e3021894 104 return( ctx );
elessair 0:f269e3021894 105 }
elessair 0:f269e3021894 106
elessair 0:f269e3021894 107 static void ccm_ctx_free( void *ctx )
elessair 0:f269e3021894 108 {
elessair 0:f269e3021894 109 mbedtls_ccm_free( ctx );
elessair 0:f269e3021894 110 mbedtls_free( ctx );
elessair 0:f269e3021894 111 }
elessair 0:f269e3021894 112 #endif /* MBEDTLS_CCM_C */
elessair 0:f269e3021894 113
elessair 0:f269e3021894 114 #if defined(MBEDTLS_AES_C)
elessair 0:f269e3021894 115
elessair 0:f269e3021894 116 static int aes_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 117 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 118 {
elessair 0:f269e3021894 119 return mbedtls_aes_crypt_ecb( (mbedtls_aes_context *) ctx, operation, input, output );
elessair 0:f269e3021894 120 }
elessair 0:f269e3021894 121
elessair 0:f269e3021894 122 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 123 static int aes_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, size_t length,
elessair 0:f269e3021894 124 unsigned char *iv, const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 125 {
elessair 0:f269e3021894 126 return mbedtls_aes_crypt_cbc( (mbedtls_aes_context *) ctx, operation, length, iv, input,
elessair 0:f269e3021894 127 output );
elessair 0:f269e3021894 128 }
elessair 0:f269e3021894 129 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 130
elessair 0:f269e3021894 131 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 132 static int aes_crypt_cfb128_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 133 size_t length, size_t *iv_off, unsigned char *iv,
elessair 0:f269e3021894 134 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 135 {
elessair 0:f269e3021894 136 return mbedtls_aes_crypt_cfb128( (mbedtls_aes_context *) ctx, operation, length, iv_off, iv,
elessair 0:f269e3021894 137 input, output );
elessair 0:f269e3021894 138 }
elessair 0:f269e3021894 139 #endif /* MBEDTLS_CIPHER_MODE_CFB */
elessair 0:f269e3021894 140
elessair 0:f269e3021894 141 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 142 static int aes_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
elessair 0:f269e3021894 143 unsigned char *nonce_counter, unsigned char *stream_block,
elessair 0:f269e3021894 144 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 145 {
elessair 0:f269e3021894 146 return mbedtls_aes_crypt_ctr( (mbedtls_aes_context *) ctx, length, nc_off, nonce_counter,
elessair 0:f269e3021894 147 stream_block, input, output );
elessair 0:f269e3021894 148 }
elessair 0:f269e3021894 149 #endif /* MBEDTLS_CIPHER_MODE_CTR */
elessair 0:f269e3021894 150
elessair 0:f269e3021894 151 static int aes_setkey_dec_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 152 unsigned int key_bitlen )
elessair 0:f269e3021894 153 {
elessair 0:f269e3021894 154 return mbedtls_aes_setkey_dec( (mbedtls_aes_context *) ctx, key, key_bitlen );
elessair 0:f269e3021894 155 }
elessair 0:f269e3021894 156
elessair 0:f269e3021894 157 static int aes_setkey_enc_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 158 unsigned int key_bitlen )
elessair 0:f269e3021894 159 {
elessair 0:f269e3021894 160 return mbedtls_aes_setkey_enc( (mbedtls_aes_context *) ctx, key, key_bitlen );
elessair 0:f269e3021894 161 }
elessair 0:f269e3021894 162
elessair 0:f269e3021894 163 static void * aes_ctx_alloc( void )
elessair 0:f269e3021894 164 {
elessair 0:f269e3021894 165 mbedtls_aes_context *aes = mbedtls_calloc( 1, sizeof( mbedtls_aes_context ) );
elessair 0:f269e3021894 166
elessair 0:f269e3021894 167 if( aes == NULL )
elessair 0:f269e3021894 168 return( NULL );
elessair 0:f269e3021894 169
elessair 0:f269e3021894 170 mbedtls_aes_init( aes );
elessair 0:f269e3021894 171
elessair 0:f269e3021894 172 return( aes );
elessair 0:f269e3021894 173 }
elessair 0:f269e3021894 174
elessair 0:f269e3021894 175 static void aes_ctx_free( void *ctx )
elessair 0:f269e3021894 176 {
elessair 0:f269e3021894 177 mbedtls_aes_free( (mbedtls_aes_context *) ctx );
elessair 0:f269e3021894 178 mbedtls_free( ctx );
elessair 0:f269e3021894 179 }
elessair 0:f269e3021894 180
elessair 0:f269e3021894 181 static const mbedtls_cipher_base_t aes_info = {
elessair 0:f269e3021894 182 MBEDTLS_CIPHER_ID_AES,
elessair 0:f269e3021894 183 aes_crypt_ecb_wrap,
elessair 0:f269e3021894 184 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 185 aes_crypt_cbc_wrap,
elessair 0:f269e3021894 186 #endif
elessair 0:f269e3021894 187 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 188 aes_crypt_cfb128_wrap,
elessair 0:f269e3021894 189 #endif
elessair 0:f269e3021894 190 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 191 aes_crypt_ctr_wrap,
elessair 0:f269e3021894 192 #endif
elessair 0:f269e3021894 193 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 194 NULL,
elessair 0:f269e3021894 195 #endif
elessair 0:f269e3021894 196 aes_setkey_enc_wrap,
elessair 0:f269e3021894 197 aes_setkey_dec_wrap,
elessair 0:f269e3021894 198 aes_ctx_alloc,
elessair 0:f269e3021894 199 aes_ctx_free
elessair 0:f269e3021894 200 };
elessair 0:f269e3021894 201
elessair 0:f269e3021894 202 static const mbedtls_cipher_info_t aes_128_ecb_info = {
elessair 0:f269e3021894 203 MBEDTLS_CIPHER_AES_128_ECB,
elessair 0:f269e3021894 204 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 205 128,
elessair 0:f269e3021894 206 "AES-128-ECB",
elessair 0:f269e3021894 207 16,
elessair 0:f269e3021894 208 0,
elessair 0:f269e3021894 209 16,
elessair 0:f269e3021894 210 &aes_info
elessair 0:f269e3021894 211 };
elessair 0:f269e3021894 212
elessair 0:f269e3021894 213 static const mbedtls_cipher_info_t aes_192_ecb_info = {
elessair 0:f269e3021894 214 MBEDTLS_CIPHER_AES_192_ECB,
elessair 0:f269e3021894 215 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 216 192,
elessair 0:f269e3021894 217 "AES-192-ECB",
elessair 0:f269e3021894 218 16,
elessair 0:f269e3021894 219 0,
elessair 0:f269e3021894 220 16,
elessair 0:f269e3021894 221 &aes_info
elessair 0:f269e3021894 222 };
elessair 0:f269e3021894 223
elessair 0:f269e3021894 224 static const mbedtls_cipher_info_t aes_256_ecb_info = {
elessair 0:f269e3021894 225 MBEDTLS_CIPHER_AES_256_ECB,
elessair 0:f269e3021894 226 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 227 256,
elessair 0:f269e3021894 228 "AES-256-ECB",
elessair 0:f269e3021894 229 16,
elessair 0:f269e3021894 230 0,
elessair 0:f269e3021894 231 16,
elessair 0:f269e3021894 232 &aes_info
elessair 0:f269e3021894 233 };
elessair 0:f269e3021894 234
elessair 0:f269e3021894 235 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 236 static const mbedtls_cipher_info_t aes_128_cbc_info = {
elessair 0:f269e3021894 237 MBEDTLS_CIPHER_AES_128_CBC,
elessair 0:f269e3021894 238 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 239 128,
elessair 0:f269e3021894 240 "AES-128-CBC",
elessair 0:f269e3021894 241 16,
elessair 0:f269e3021894 242 0,
elessair 0:f269e3021894 243 16,
elessair 0:f269e3021894 244 &aes_info
elessair 0:f269e3021894 245 };
elessair 0:f269e3021894 246
elessair 0:f269e3021894 247 static const mbedtls_cipher_info_t aes_192_cbc_info = {
elessair 0:f269e3021894 248 MBEDTLS_CIPHER_AES_192_CBC,
elessair 0:f269e3021894 249 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 250 192,
elessair 0:f269e3021894 251 "AES-192-CBC",
elessair 0:f269e3021894 252 16,
elessair 0:f269e3021894 253 0,
elessair 0:f269e3021894 254 16,
elessair 0:f269e3021894 255 &aes_info
elessair 0:f269e3021894 256 };
elessair 0:f269e3021894 257
elessair 0:f269e3021894 258 static const mbedtls_cipher_info_t aes_256_cbc_info = {
elessair 0:f269e3021894 259 MBEDTLS_CIPHER_AES_256_CBC,
elessair 0:f269e3021894 260 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 261 256,
elessair 0:f269e3021894 262 "AES-256-CBC",
elessair 0:f269e3021894 263 16,
elessair 0:f269e3021894 264 0,
elessair 0:f269e3021894 265 16,
elessair 0:f269e3021894 266 &aes_info
elessair 0:f269e3021894 267 };
elessair 0:f269e3021894 268 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 269
elessair 0:f269e3021894 270 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 271 static const mbedtls_cipher_info_t aes_128_cfb128_info = {
elessair 0:f269e3021894 272 MBEDTLS_CIPHER_AES_128_CFB128,
elessair 0:f269e3021894 273 MBEDTLS_MODE_CFB,
elessair 0:f269e3021894 274 128,
elessair 0:f269e3021894 275 "AES-128-CFB128",
elessair 0:f269e3021894 276 16,
elessair 0:f269e3021894 277 0,
elessair 0:f269e3021894 278 16,
elessair 0:f269e3021894 279 &aes_info
elessair 0:f269e3021894 280 };
elessair 0:f269e3021894 281
elessair 0:f269e3021894 282 static const mbedtls_cipher_info_t aes_192_cfb128_info = {
elessair 0:f269e3021894 283 MBEDTLS_CIPHER_AES_192_CFB128,
elessair 0:f269e3021894 284 MBEDTLS_MODE_CFB,
elessair 0:f269e3021894 285 192,
elessair 0:f269e3021894 286 "AES-192-CFB128",
elessair 0:f269e3021894 287 16,
elessair 0:f269e3021894 288 0,
elessair 0:f269e3021894 289 16,
elessair 0:f269e3021894 290 &aes_info
elessair 0:f269e3021894 291 };
elessair 0:f269e3021894 292
elessair 0:f269e3021894 293 static const mbedtls_cipher_info_t aes_256_cfb128_info = {
elessair 0:f269e3021894 294 MBEDTLS_CIPHER_AES_256_CFB128,
elessair 0:f269e3021894 295 MBEDTLS_MODE_CFB,
elessair 0:f269e3021894 296 256,
elessair 0:f269e3021894 297 "AES-256-CFB128",
elessair 0:f269e3021894 298 16,
elessair 0:f269e3021894 299 0,
elessair 0:f269e3021894 300 16,
elessair 0:f269e3021894 301 &aes_info
elessair 0:f269e3021894 302 };
elessair 0:f269e3021894 303 #endif /* MBEDTLS_CIPHER_MODE_CFB */
elessair 0:f269e3021894 304
elessair 0:f269e3021894 305 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 306 static const mbedtls_cipher_info_t aes_128_ctr_info = {
elessair 0:f269e3021894 307 MBEDTLS_CIPHER_AES_128_CTR,
elessair 0:f269e3021894 308 MBEDTLS_MODE_CTR,
elessair 0:f269e3021894 309 128,
elessair 0:f269e3021894 310 "AES-128-CTR",
elessair 0:f269e3021894 311 16,
elessair 0:f269e3021894 312 0,
elessair 0:f269e3021894 313 16,
elessair 0:f269e3021894 314 &aes_info
elessair 0:f269e3021894 315 };
elessair 0:f269e3021894 316
elessair 0:f269e3021894 317 static const mbedtls_cipher_info_t aes_192_ctr_info = {
elessair 0:f269e3021894 318 MBEDTLS_CIPHER_AES_192_CTR,
elessair 0:f269e3021894 319 MBEDTLS_MODE_CTR,
elessair 0:f269e3021894 320 192,
elessair 0:f269e3021894 321 "AES-192-CTR",
elessair 0:f269e3021894 322 16,
elessair 0:f269e3021894 323 0,
elessair 0:f269e3021894 324 16,
elessair 0:f269e3021894 325 &aes_info
elessair 0:f269e3021894 326 };
elessair 0:f269e3021894 327
elessair 0:f269e3021894 328 static const mbedtls_cipher_info_t aes_256_ctr_info = {
elessair 0:f269e3021894 329 MBEDTLS_CIPHER_AES_256_CTR,
elessair 0:f269e3021894 330 MBEDTLS_MODE_CTR,
elessair 0:f269e3021894 331 256,
elessair 0:f269e3021894 332 "AES-256-CTR",
elessair 0:f269e3021894 333 16,
elessair 0:f269e3021894 334 0,
elessair 0:f269e3021894 335 16,
elessair 0:f269e3021894 336 &aes_info
elessair 0:f269e3021894 337 };
elessair 0:f269e3021894 338 #endif /* MBEDTLS_CIPHER_MODE_CTR */
elessair 0:f269e3021894 339
elessair 0:f269e3021894 340 #if defined(MBEDTLS_GCM_C)
elessair 0:f269e3021894 341 static int gcm_aes_setkey_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 342 unsigned int key_bitlen )
elessair 0:f269e3021894 343 {
elessair 0:f269e3021894 344 return mbedtls_gcm_setkey( (mbedtls_gcm_context *) ctx, MBEDTLS_CIPHER_ID_AES,
elessair 0:f269e3021894 345 key, key_bitlen );
elessair 0:f269e3021894 346 }
elessair 0:f269e3021894 347
elessair 0:f269e3021894 348 static const mbedtls_cipher_base_t gcm_aes_info = {
elessair 0:f269e3021894 349 MBEDTLS_CIPHER_ID_AES,
elessair 0:f269e3021894 350 NULL,
elessair 0:f269e3021894 351 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 352 NULL,
elessair 0:f269e3021894 353 #endif
elessair 0:f269e3021894 354 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 355 NULL,
elessair 0:f269e3021894 356 #endif
elessair 0:f269e3021894 357 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 358 NULL,
elessair 0:f269e3021894 359 #endif
elessair 0:f269e3021894 360 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 361 NULL,
elessair 0:f269e3021894 362 #endif
elessair 0:f269e3021894 363 gcm_aes_setkey_wrap,
elessair 0:f269e3021894 364 gcm_aes_setkey_wrap,
elessair 0:f269e3021894 365 gcm_ctx_alloc,
elessair 0:f269e3021894 366 gcm_ctx_free,
elessair 0:f269e3021894 367 };
elessair 0:f269e3021894 368
elessair 0:f269e3021894 369 static const mbedtls_cipher_info_t aes_128_gcm_info = {
elessair 0:f269e3021894 370 MBEDTLS_CIPHER_AES_128_GCM,
elessair 0:f269e3021894 371 MBEDTLS_MODE_GCM,
elessair 0:f269e3021894 372 128,
elessair 0:f269e3021894 373 "AES-128-GCM",
elessair 0:f269e3021894 374 12,
elessair 0:f269e3021894 375 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 376 16,
elessair 0:f269e3021894 377 &gcm_aes_info
elessair 0:f269e3021894 378 };
elessair 0:f269e3021894 379
elessair 0:f269e3021894 380 static const mbedtls_cipher_info_t aes_192_gcm_info = {
elessair 0:f269e3021894 381 MBEDTLS_CIPHER_AES_192_GCM,
elessair 0:f269e3021894 382 MBEDTLS_MODE_GCM,
elessair 0:f269e3021894 383 192,
elessair 0:f269e3021894 384 "AES-192-GCM",
elessair 0:f269e3021894 385 12,
elessair 0:f269e3021894 386 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 387 16,
elessair 0:f269e3021894 388 &gcm_aes_info
elessair 0:f269e3021894 389 };
elessair 0:f269e3021894 390
elessair 0:f269e3021894 391 static const mbedtls_cipher_info_t aes_256_gcm_info = {
elessair 0:f269e3021894 392 MBEDTLS_CIPHER_AES_256_GCM,
elessair 0:f269e3021894 393 MBEDTLS_MODE_GCM,
elessair 0:f269e3021894 394 256,
elessair 0:f269e3021894 395 "AES-256-GCM",
elessair 0:f269e3021894 396 12,
elessair 0:f269e3021894 397 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 398 16,
elessair 0:f269e3021894 399 &gcm_aes_info
elessair 0:f269e3021894 400 };
elessair 0:f269e3021894 401 #endif /* MBEDTLS_GCM_C */
elessair 0:f269e3021894 402
elessair 0:f269e3021894 403 #if defined(MBEDTLS_CCM_C)
elessair 0:f269e3021894 404 static int ccm_aes_setkey_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 405 unsigned int key_bitlen )
elessair 0:f269e3021894 406 {
elessair 0:f269e3021894 407 return mbedtls_ccm_setkey( (mbedtls_ccm_context *) ctx, MBEDTLS_CIPHER_ID_AES,
elessair 0:f269e3021894 408 key, key_bitlen );
elessair 0:f269e3021894 409 }
elessair 0:f269e3021894 410
elessair 0:f269e3021894 411 static const mbedtls_cipher_base_t ccm_aes_info = {
elessair 0:f269e3021894 412 MBEDTLS_CIPHER_ID_AES,
elessair 0:f269e3021894 413 NULL,
elessair 0:f269e3021894 414 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 415 NULL,
elessair 0:f269e3021894 416 #endif
elessair 0:f269e3021894 417 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 418 NULL,
elessair 0:f269e3021894 419 #endif
elessair 0:f269e3021894 420 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 421 NULL,
elessair 0:f269e3021894 422 #endif
elessair 0:f269e3021894 423 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 424 NULL,
elessair 0:f269e3021894 425 #endif
elessair 0:f269e3021894 426 ccm_aes_setkey_wrap,
elessair 0:f269e3021894 427 ccm_aes_setkey_wrap,
elessair 0:f269e3021894 428 ccm_ctx_alloc,
elessair 0:f269e3021894 429 ccm_ctx_free,
elessair 0:f269e3021894 430 };
elessair 0:f269e3021894 431
elessair 0:f269e3021894 432 static const mbedtls_cipher_info_t aes_128_ccm_info = {
elessair 0:f269e3021894 433 MBEDTLS_CIPHER_AES_128_CCM,
elessair 0:f269e3021894 434 MBEDTLS_MODE_CCM,
elessair 0:f269e3021894 435 128,
elessair 0:f269e3021894 436 "AES-128-CCM",
elessair 0:f269e3021894 437 12,
elessair 0:f269e3021894 438 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 439 16,
elessair 0:f269e3021894 440 &ccm_aes_info
elessair 0:f269e3021894 441 };
elessair 0:f269e3021894 442
elessair 0:f269e3021894 443 static const mbedtls_cipher_info_t aes_192_ccm_info = {
elessair 0:f269e3021894 444 MBEDTLS_CIPHER_AES_192_CCM,
elessair 0:f269e3021894 445 MBEDTLS_MODE_CCM,
elessair 0:f269e3021894 446 192,
elessair 0:f269e3021894 447 "AES-192-CCM",
elessair 0:f269e3021894 448 12,
elessair 0:f269e3021894 449 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 450 16,
elessair 0:f269e3021894 451 &ccm_aes_info
elessair 0:f269e3021894 452 };
elessair 0:f269e3021894 453
elessair 0:f269e3021894 454 static const mbedtls_cipher_info_t aes_256_ccm_info = {
elessair 0:f269e3021894 455 MBEDTLS_CIPHER_AES_256_CCM,
elessair 0:f269e3021894 456 MBEDTLS_MODE_CCM,
elessair 0:f269e3021894 457 256,
elessair 0:f269e3021894 458 "AES-256-CCM",
elessair 0:f269e3021894 459 12,
elessair 0:f269e3021894 460 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 461 16,
elessair 0:f269e3021894 462 &ccm_aes_info
elessair 0:f269e3021894 463 };
elessair 0:f269e3021894 464 #endif /* MBEDTLS_CCM_C */
elessair 0:f269e3021894 465
elessair 0:f269e3021894 466 #endif /* MBEDTLS_AES_C */
elessair 0:f269e3021894 467
elessair 0:f269e3021894 468 #if defined(MBEDTLS_CAMELLIA_C)
elessair 0:f269e3021894 469
elessair 0:f269e3021894 470 static int camellia_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 471 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 472 {
elessair 0:f269e3021894 473 return mbedtls_camellia_crypt_ecb( (mbedtls_camellia_context *) ctx, operation, input,
elessair 0:f269e3021894 474 output );
elessair 0:f269e3021894 475 }
elessair 0:f269e3021894 476
elessair 0:f269e3021894 477 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 478 static int camellia_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 479 size_t length, unsigned char *iv,
elessair 0:f269e3021894 480 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 481 {
elessair 0:f269e3021894 482 return mbedtls_camellia_crypt_cbc( (mbedtls_camellia_context *) ctx, operation, length, iv,
elessair 0:f269e3021894 483 input, output );
elessair 0:f269e3021894 484 }
elessair 0:f269e3021894 485 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 486
elessair 0:f269e3021894 487 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 488 static int camellia_crypt_cfb128_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 489 size_t length, size_t *iv_off, unsigned char *iv,
elessair 0:f269e3021894 490 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 491 {
elessair 0:f269e3021894 492 return mbedtls_camellia_crypt_cfb128( (mbedtls_camellia_context *) ctx, operation, length,
elessair 0:f269e3021894 493 iv_off, iv, input, output );
elessair 0:f269e3021894 494 }
elessair 0:f269e3021894 495 #endif /* MBEDTLS_CIPHER_MODE_CFB */
elessair 0:f269e3021894 496
elessair 0:f269e3021894 497 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 498 static int camellia_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
elessair 0:f269e3021894 499 unsigned char *nonce_counter, unsigned char *stream_block,
elessair 0:f269e3021894 500 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 501 {
elessair 0:f269e3021894 502 return mbedtls_camellia_crypt_ctr( (mbedtls_camellia_context *) ctx, length, nc_off,
elessair 0:f269e3021894 503 nonce_counter, stream_block, input, output );
elessair 0:f269e3021894 504 }
elessair 0:f269e3021894 505 #endif /* MBEDTLS_CIPHER_MODE_CTR */
elessair 0:f269e3021894 506
elessair 0:f269e3021894 507 static int camellia_setkey_dec_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 508 unsigned int key_bitlen )
elessair 0:f269e3021894 509 {
elessair 0:f269e3021894 510 return mbedtls_camellia_setkey_dec( (mbedtls_camellia_context *) ctx, key, key_bitlen );
elessair 0:f269e3021894 511 }
elessair 0:f269e3021894 512
elessair 0:f269e3021894 513 static int camellia_setkey_enc_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 514 unsigned int key_bitlen )
elessair 0:f269e3021894 515 {
elessair 0:f269e3021894 516 return mbedtls_camellia_setkey_enc( (mbedtls_camellia_context *) ctx, key, key_bitlen );
elessair 0:f269e3021894 517 }
elessair 0:f269e3021894 518
elessair 0:f269e3021894 519 static void * camellia_ctx_alloc( void )
elessair 0:f269e3021894 520 {
elessair 0:f269e3021894 521 mbedtls_camellia_context *ctx;
elessair 0:f269e3021894 522 ctx = mbedtls_calloc( 1, sizeof( mbedtls_camellia_context ) );
elessair 0:f269e3021894 523
elessair 0:f269e3021894 524 if( ctx == NULL )
elessair 0:f269e3021894 525 return( NULL );
elessair 0:f269e3021894 526
elessair 0:f269e3021894 527 mbedtls_camellia_init( ctx );
elessair 0:f269e3021894 528
elessair 0:f269e3021894 529 return( ctx );
elessair 0:f269e3021894 530 }
elessair 0:f269e3021894 531
elessair 0:f269e3021894 532 static void camellia_ctx_free( void *ctx )
elessair 0:f269e3021894 533 {
elessair 0:f269e3021894 534 mbedtls_camellia_free( (mbedtls_camellia_context *) ctx );
elessair 0:f269e3021894 535 mbedtls_free( ctx );
elessair 0:f269e3021894 536 }
elessair 0:f269e3021894 537
elessair 0:f269e3021894 538 static const mbedtls_cipher_base_t camellia_info = {
elessair 0:f269e3021894 539 MBEDTLS_CIPHER_ID_CAMELLIA,
elessair 0:f269e3021894 540 camellia_crypt_ecb_wrap,
elessair 0:f269e3021894 541 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 542 camellia_crypt_cbc_wrap,
elessair 0:f269e3021894 543 #endif
elessair 0:f269e3021894 544 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 545 camellia_crypt_cfb128_wrap,
elessair 0:f269e3021894 546 #endif
elessair 0:f269e3021894 547 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 548 camellia_crypt_ctr_wrap,
elessair 0:f269e3021894 549 #endif
elessair 0:f269e3021894 550 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 551 NULL,
elessair 0:f269e3021894 552 #endif
elessair 0:f269e3021894 553 camellia_setkey_enc_wrap,
elessair 0:f269e3021894 554 camellia_setkey_dec_wrap,
elessair 0:f269e3021894 555 camellia_ctx_alloc,
elessair 0:f269e3021894 556 camellia_ctx_free
elessair 0:f269e3021894 557 };
elessair 0:f269e3021894 558
elessair 0:f269e3021894 559 static const mbedtls_cipher_info_t camellia_128_ecb_info = {
elessair 0:f269e3021894 560 MBEDTLS_CIPHER_CAMELLIA_128_ECB,
elessair 0:f269e3021894 561 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 562 128,
elessair 0:f269e3021894 563 "CAMELLIA-128-ECB",
elessair 0:f269e3021894 564 16,
elessair 0:f269e3021894 565 0,
elessair 0:f269e3021894 566 16,
elessair 0:f269e3021894 567 &camellia_info
elessair 0:f269e3021894 568 };
elessair 0:f269e3021894 569
elessair 0:f269e3021894 570 static const mbedtls_cipher_info_t camellia_192_ecb_info = {
elessair 0:f269e3021894 571 MBEDTLS_CIPHER_CAMELLIA_192_ECB,
elessair 0:f269e3021894 572 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 573 192,
elessair 0:f269e3021894 574 "CAMELLIA-192-ECB",
elessair 0:f269e3021894 575 16,
elessair 0:f269e3021894 576 0,
elessair 0:f269e3021894 577 16,
elessair 0:f269e3021894 578 &camellia_info
elessair 0:f269e3021894 579 };
elessair 0:f269e3021894 580
elessair 0:f269e3021894 581 static const mbedtls_cipher_info_t camellia_256_ecb_info = {
elessair 0:f269e3021894 582 MBEDTLS_CIPHER_CAMELLIA_256_ECB,
elessair 0:f269e3021894 583 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 584 256,
elessair 0:f269e3021894 585 "CAMELLIA-256-ECB",
elessair 0:f269e3021894 586 16,
elessair 0:f269e3021894 587 0,
elessair 0:f269e3021894 588 16,
elessair 0:f269e3021894 589 &camellia_info
elessair 0:f269e3021894 590 };
elessair 0:f269e3021894 591
elessair 0:f269e3021894 592 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 593 static const mbedtls_cipher_info_t camellia_128_cbc_info = {
elessair 0:f269e3021894 594 MBEDTLS_CIPHER_CAMELLIA_128_CBC,
elessair 0:f269e3021894 595 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 596 128,
elessair 0:f269e3021894 597 "CAMELLIA-128-CBC",
elessair 0:f269e3021894 598 16,
elessair 0:f269e3021894 599 0,
elessair 0:f269e3021894 600 16,
elessair 0:f269e3021894 601 &camellia_info
elessair 0:f269e3021894 602 };
elessair 0:f269e3021894 603
elessair 0:f269e3021894 604 static const mbedtls_cipher_info_t camellia_192_cbc_info = {
elessair 0:f269e3021894 605 MBEDTLS_CIPHER_CAMELLIA_192_CBC,
elessair 0:f269e3021894 606 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 607 192,
elessair 0:f269e3021894 608 "CAMELLIA-192-CBC",
elessair 0:f269e3021894 609 16,
elessair 0:f269e3021894 610 0,
elessair 0:f269e3021894 611 16,
elessair 0:f269e3021894 612 &camellia_info
elessair 0:f269e3021894 613 };
elessair 0:f269e3021894 614
elessair 0:f269e3021894 615 static const mbedtls_cipher_info_t camellia_256_cbc_info = {
elessair 0:f269e3021894 616 MBEDTLS_CIPHER_CAMELLIA_256_CBC,
elessair 0:f269e3021894 617 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 618 256,
elessair 0:f269e3021894 619 "CAMELLIA-256-CBC",
elessair 0:f269e3021894 620 16,
elessair 0:f269e3021894 621 0,
elessair 0:f269e3021894 622 16,
elessair 0:f269e3021894 623 &camellia_info
elessair 0:f269e3021894 624 };
elessair 0:f269e3021894 625 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 626
elessair 0:f269e3021894 627 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 628 static const mbedtls_cipher_info_t camellia_128_cfb128_info = {
elessair 0:f269e3021894 629 MBEDTLS_CIPHER_CAMELLIA_128_CFB128,
elessair 0:f269e3021894 630 MBEDTLS_MODE_CFB,
elessair 0:f269e3021894 631 128,
elessair 0:f269e3021894 632 "CAMELLIA-128-CFB128",
elessair 0:f269e3021894 633 16,
elessair 0:f269e3021894 634 0,
elessair 0:f269e3021894 635 16,
elessair 0:f269e3021894 636 &camellia_info
elessair 0:f269e3021894 637 };
elessair 0:f269e3021894 638
elessair 0:f269e3021894 639 static const mbedtls_cipher_info_t camellia_192_cfb128_info = {
elessair 0:f269e3021894 640 MBEDTLS_CIPHER_CAMELLIA_192_CFB128,
elessair 0:f269e3021894 641 MBEDTLS_MODE_CFB,
elessair 0:f269e3021894 642 192,
elessair 0:f269e3021894 643 "CAMELLIA-192-CFB128",
elessair 0:f269e3021894 644 16,
elessair 0:f269e3021894 645 0,
elessair 0:f269e3021894 646 16,
elessair 0:f269e3021894 647 &camellia_info
elessair 0:f269e3021894 648 };
elessair 0:f269e3021894 649
elessair 0:f269e3021894 650 static const mbedtls_cipher_info_t camellia_256_cfb128_info = {
elessair 0:f269e3021894 651 MBEDTLS_CIPHER_CAMELLIA_256_CFB128,
elessair 0:f269e3021894 652 MBEDTLS_MODE_CFB,
elessair 0:f269e3021894 653 256,
elessair 0:f269e3021894 654 "CAMELLIA-256-CFB128",
elessair 0:f269e3021894 655 16,
elessair 0:f269e3021894 656 0,
elessair 0:f269e3021894 657 16,
elessair 0:f269e3021894 658 &camellia_info
elessair 0:f269e3021894 659 };
elessair 0:f269e3021894 660 #endif /* MBEDTLS_CIPHER_MODE_CFB */
elessair 0:f269e3021894 661
elessair 0:f269e3021894 662 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 663 static const mbedtls_cipher_info_t camellia_128_ctr_info = {
elessair 0:f269e3021894 664 MBEDTLS_CIPHER_CAMELLIA_128_CTR,
elessair 0:f269e3021894 665 MBEDTLS_MODE_CTR,
elessair 0:f269e3021894 666 128,
elessair 0:f269e3021894 667 "CAMELLIA-128-CTR",
elessair 0:f269e3021894 668 16,
elessair 0:f269e3021894 669 0,
elessair 0:f269e3021894 670 16,
elessair 0:f269e3021894 671 &camellia_info
elessair 0:f269e3021894 672 };
elessair 0:f269e3021894 673
elessair 0:f269e3021894 674 static const mbedtls_cipher_info_t camellia_192_ctr_info = {
elessair 0:f269e3021894 675 MBEDTLS_CIPHER_CAMELLIA_192_CTR,
elessair 0:f269e3021894 676 MBEDTLS_MODE_CTR,
elessair 0:f269e3021894 677 192,
elessair 0:f269e3021894 678 "CAMELLIA-192-CTR",
elessair 0:f269e3021894 679 16,
elessair 0:f269e3021894 680 0,
elessair 0:f269e3021894 681 16,
elessair 0:f269e3021894 682 &camellia_info
elessair 0:f269e3021894 683 };
elessair 0:f269e3021894 684
elessair 0:f269e3021894 685 static const mbedtls_cipher_info_t camellia_256_ctr_info = {
elessair 0:f269e3021894 686 MBEDTLS_CIPHER_CAMELLIA_256_CTR,
elessair 0:f269e3021894 687 MBEDTLS_MODE_CTR,
elessair 0:f269e3021894 688 256,
elessair 0:f269e3021894 689 "CAMELLIA-256-CTR",
elessair 0:f269e3021894 690 16,
elessair 0:f269e3021894 691 0,
elessair 0:f269e3021894 692 16,
elessair 0:f269e3021894 693 &camellia_info
elessair 0:f269e3021894 694 };
elessair 0:f269e3021894 695 #endif /* MBEDTLS_CIPHER_MODE_CTR */
elessair 0:f269e3021894 696
elessair 0:f269e3021894 697 #if defined(MBEDTLS_GCM_C)
elessair 0:f269e3021894 698 static int gcm_camellia_setkey_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 699 unsigned int key_bitlen )
elessair 0:f269e3021894 700 {
elessair 0:f269e3021894 701 return mbedtls_gcm_setkey( (mbedtls_gcm_context *) ctx, MBEDTLS_CIPHER_ID_CAMELLIA,
elessair 0:f269e3021894 702 key, key_bitlen );
elessair 0:f269e3021894 703 }
elessair 0:f269e3021894 704
elessair 0:f269e3021894 705 static const mbedtls_cipher_base_t gcm_camellia_info = {
elessair 0:f269e3021894 706 MBEDTLS_CIPHER_ID_CAMELLIA,
elessair 0:f269e3021894 707 NULL,
elessair 0:f269e3021894 708 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 709 NULL,
elessair 0:f269e3021894 710 #endif
elessair 0:f269e3021894 711 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 712 NULL,
elessair 0:f269e3021894 713 #endif
elessair 0:f269e3021894 714 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 715 NULL,
elessair 0:f269e3021894 716 #endif
elessair 0:f269e3021894 717 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 718 NULL,
elessair 0:f269e3021894 719 #endif
elessair 0:f269e3021894 720 gcm_camellia_setkey_wrap,
elessair 0:f269e3021894 721 gcm_camellia_setkey_wrap,
elessair 0:f269e3021894 722 gcm_ctx_alloc,
elessair 0:f269e3021894 723 gcm_ctx_free,
elessair 0:f269e3021894 724 };
elessair 0:f269e3021894 725
elessair 0:f269e3021894 726 static const mbedtls_cipher_info_t camellia_128_gcm_info = {
elessair 0:f269e3021894 727 MBEDTLS_CIPHER_CAMELLIA_128_GCM,
elessair 0:f269e3021894 728 MBEDTLS_MODE_GCM,
elessair 0:f269e3021894 729 128,
elessair 0:f269e3021894 730 "CAMELLIA-128-GCM",
elessair 0:f269e3021894 731 12,
elessair 0:f269e3021894 732 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 733 16,
elessair 0:f269e3021894 734 &gcm_camellia_info
elessair 0:f269e3021894 735 };
elessair 0:f269e3021894 736
elessair 0:f269e3021894 737 static const mbedtls_cipher_info_t camellia_192_gcm_info = {
elessair 0:f269e3021894 738 MBEDTLS_CIPHER_CAMELLIA_192_GCM,
elessair 0:f269e3021894 739 MBEDTLS_MODE_GCM,
elessair 0:f269e3021894 740 192,
elessair 0:f269e3021894 741 "CAMELLIA-192-GCM",
elessair 0:f269e3021894 742 12,
elessair 0:f269e3021894 743 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 744 16,
elessair 0:f269e3021894 745 &gcm_camellia_info
elessair 0:f269e3021894 746 };
elessair 0:f269e3021894 747
elessair 0:f269e3021894 748 static const mbedtls_cipher_info_t camellia_256_gcm_info = {
elessair 0:f269e3021894 749 MBEDTLS_CIPHER_CAMELLIA_256_GCM,
elessair 0:f269e3021894 750 MBEDTLS_MODE_GCM,
elessair 0:f269e3021894 751 256,
elessair 0:f269e3021894 752 "CAMELLIA-256-GCM",
elessair 0:f269e3021894 753 12,
elessair 0:f269e3021894 754 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 755 16,
elessair 0:f269e3021894 756 &gcm_camellia_info
elessair 0:f269e3021894 757 };
elessair 0:f269e3021894 758 #endif /* MBEDTLS_GCM_C */
elessair 0:f269e3021894 759
elessair 0:f269e3021894 760 #if defined(MBEDTLS_CCM_C)
elessair 0:f269e3021894 761 static int ccm_camellia_setkey_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 762 unsigned int key_bitlen )
elessair 0:f269e3021894 763 {
elessair 0:f269e3021894 764 return mbedtls_ccm_setkey( (mbedtls_ccm_context *) ctx, MBEDTLS_CIPHER_ID_CAMELLIA,
elessair 0:f269e3021894 765 key, key_bitlen );
elessair 0:f269e3021894 766 }
elessair 0:f269e3021894 767
elessair 0:f269e3021894 768 static const mbedtls_cipher_base_t ccm_camellia_info = {
elessair 0:f269e3021894 769 MBEDTLS_CIPHER_ID_CAMELLIA,
elessair 0:f269e3021894 770 NULL,
elessair 0:f269e3021894 771 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 772 NULL,
elessair 0:f269e3021894 773 #endif
elessair 0:f269e3021894 774 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 775 NULL,
elessair 0:f269e3021894 776 #endif
elessair 0:f269e3021894 777 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 778 NULL,
elessair 0:f269e3021894 779 #endif
elessair 0:f269e3021894 780 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 781 NULL,
elessair 0:f269e3021894 782 #endif
elessair 0:f269e3021894 783 ccm_camellia_setkey_wrap,
elessair 0:f269e3021894 784 ccm_camellia_setkey_wrap,
elessair 0:f269e3021894 785 ccm_ctx_alloc,
elessair 0:f269e3021894 786 ccm_ctx_free,
elessair 0:f269e3021894 787 };
elessair 0:f269e3021894 788
elessair 0:f269e3021894 789 static const mbedtls_cipher_info_t camellia_128_ccm_info = {
elessair 0:f269e3021894 790 MBEDTLS_CIPHER_CAMELLIA_128_CCM,
elessair 0:f269e3021894 791 MBEDTLS_MODE_CCM,
elessair 0:f269e3021894 792 128,
elessair 0:f269e3021894 793 "CAMELLIA-128-CCM",
elessair 0:f269e3021894 794 12,
elessair 0:f269e3021894 795 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 796 16,
elessair 0:f269e3021894 797 &ccm_camellia_info
elessair 0:f269e3021894 798 };
elessair 0:f269e3021894 799
elessair 0:f269e3021894 800 static const mbedtls_cipher_info_t camellia_192_ccm_info = {
elessair 0:f269e3021894 801 MBEDTLS_CIPHER_CAMELLIA_192_CCM,
elessair 0:f269e3021894 802 MBEDTLS_MODE_CCM,
elessair 0:f269e3021894 803 192,
elessair 0:f269e3021894 804 "CAMELLIA-192-CCM",
elessair 0:f269e3021894 805 12,
elessair 0:f269e3021894 806 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 807 16,
elessair 0:f269e3021894 808 &ccm_camellia_info
elessair 0:f269e3021894 809 };
elessair 0:f269e3021894 810
elessair 0:f269e3021894 811 static const mbedtls_cipher_info_t camellia_256_ccm_info = {
elessair 0:f269e3021894 812 MBEDTLS_CIPHER_CAMELLIA_256_CCM,
elessair 0:f269e3021894 813 MBEDTLS_MODE_CCM,
elessair 0:f269e3021894 814 256,
elessair 0:f269e3021894 815 "CAMELLIA-256-CCM",
elessair 0:f269e3021894 816 12,
elessair 0:f269e3021894 817 MBEDTLS_CIPHER_VARIABLE_IV_LEN,
elessair 0:f269e3021894 818 16,
elessair 0:f269e3021894 819 &ccm_camellia_info
elessair 0:f269e3021894 820 };
elessair 0:f269e3021894 821 #endif /* MBEDTLS_CCM_C */
elessair 0:f269e3021894 822
elessair 0:f269e3021894 823 #endif /* MBEDTLS_CAMELLIA_C */
elessair 0:f269e3021894 824
elessair 0:f269e3021894 825 #if defined(MBEDTLS_DES_C)
elessair 0:f269e3021894 826
elessair 0:f269e3021894 827 static int des_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 828 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 829 {
elessair 0:f269e3021894 830 ((void) operation);
elessair 0:f269e3021894 831 return mbedtls_des_crypt_ecb( (mbedtls_des_context *) ctx, input, output );
elessair 0:f269e3021894 832 }
elessair 0:f269e3021894 833
elessair 0:f269e3021894 834 static int des3_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 835 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 836 {
elessair 0:f269e3021894 837 ((void) operation);
elessair 0:f269e3021894 838 return mbedtls_des3_crypt_ecb( (mbedtls_des3_context *) ctx, input, output );
elessair 0:f269e3021894 839 }
elessair 0:f269e3021894 840
elessair 0:f269e3021894 841 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 842 static int des_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, size_t length,
elessair 0:f269e3021894 843 unsigned char *iv, const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 844 {
elessair 0:f269e3021894 845 return mbedtls_des_crypt_cbc( (mbedtls_des_context *) ctx, operation, length, iv, input,
elessair 0:f269e3021894 846 output );
elessair 0:f269e3021894 847 }
elessair 0:f269e3021894 848 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 849
elessair 0:f269e3021894 850 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 851 static int des3_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, size_t length,
elessair 0:f269e3021894 852 unsigned char *iv, const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 853 {
elessair 0:f269e3021894 854 return mbedtls_des3_crypt_cbc( (mbedtls_des3_context *) ctx, operation, length, iv, input,
elessair 0:f269e3021894 855 output );
elessair 0:f269e3021894 856 }
elessair 0:f269e3021894 857 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 858
elessair 0:f269e3021894 859 static int des_setkey_dec_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 860 unsigned int key_bitlen )
elessair 0:f269e3021894 861 {
elessair 0:f269e3021894 862 ((void) key_bitlen);
elessair 0:f269e3021894 863
elessair 0:f269e3021894 864 return mbedtls_des_setkey_dec( (mbedtls_des_context *) ctx, key );
elessair 0:f269e3021894 865 }
elessair 0:f269e3021894 866
elessair 0:f269e3021894 867 static int des_setkey_enc_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 868 unsigned int key_bitlen )
elessair 0:f269e3021894 869 {
elessair 0:f269e3021894 870 ((void) key_bitlen);
elessair 0:f269e3021894 871
elessair 0:f269e3021894 872 return mbedtls_des_setkey_enc( (mbedtls_des_context *) ctx, key );
elessair 0:f269e3021894 873 }
elessair 0:f269e3021894 874
elessair 0:f269e3021894 875 static int des3_set2key_dec_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 876 unsigned int key_bitlen )
elessair 0:f269e3021894 877 {
elessair 0:f269e3021894 878 ((void) key_bitlen);
elessair 0:f269e3021894 879
elessair 0:f269e3021894 880 return mbedtls_des3_set2key_dec( (mbedtls_des3_context *) ctx, key );
elessair 0:f269e3021894 881 }
elessair 0:f269e3021894 882
elessair 0:f269e3021894 883 static int des3_set2key_enc_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 884 unsigned int key_bitlen )
elessair 0:f269e3021894 885 {
elessair 0:f269e3021894 886 ((void) key_bitlen);
elessair 0:f269e3021894 887
elessair 0:f269e3021894 888 return mbedtls_des3_set2key_enc( (mbedtls_des3_context *) ctx, key );
elessair 0:f269e3021894 889 }
elessair 0:f269e3021894 890
elessair 0:f269e3021894 891 static int des3_set3key_dec_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 892 unsigned int key_bitlen )
elessair 0:f269e3021894 893 {
elessair 0:f269e3021894 894 ((void) key_bitlen);
elessair 0:f269e3021894 895
elessair 0:f269e3021894 896 return mbedtls_des3_set3key_dec( (mbedtls_des3_context *) ctx, key );
elessair 0:f269e3021894 897 }
elessair 0:f269e3021894 898
elessair 0:f269e3021894 899 static int des3_set3key_enc_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 900 unsigned int key_bitlen )
elessair 0:f269e3021894 901 {
elessair 0:f269e3021894 902 ((void) key_bitlen);
elessair 0:f269e3021894 903
elessair 0:f269e3021894 904 return mbedtls_des3_set3key_enc( (mbedtls_des3_context *) ctx, key );
elessair 0:f269e3021894 905 }
elessair 0:f269e3021894 906
elessair 0:f269e3021894 907 static void * des_ctx_alloc( void )
elessair 0:f269e3021894 908 {
elessair 0:f269e3021894 909 mbedtls_des_context *des = mbedtls_calloc( 1, sizeof( mbedtls_des_context ) );
elessair 0:f269e3021894 910
elessair 0:f269e3021894 911 if( des == NULL )
elessair 0:f269e3021894 912 return( NULL );
elessair 0:f269e3021894 913
elessair 0:f269e3021894 914 mbedtls_des_init( des );
elessair 0:f269e3021894 915
elessair 0:f269e3021894 916 return( des );
elessair 0:f269e3021894 917 }
elessair 0:f269e3021894 918
elessair 0:f269e3021894 919 static void des_ctx_free( void *ctx )
elessair 0:f269e3021894 920 {
elessair 0:f269e3021894 921 mbedtls_des_free( (mbedtls_des_context *) ctx );
elessair 0:f269e3021894 922 mbedtls_free( ctx );
elessair 0:f269e3021894 923 }
elessair 0:f269e3021894 924
elessair 0:f269e3021894 925 static void * des3_ctx_alloc( void )
elessair 0:f269e3021894 926 {
elessair 0:f269e3021894 927 mbedtls_des3_context *des3;
elessair 0:f269e3021894 928 des3 = mbedtls_calloc( 1, sizeof( mbedtls_des3_context ) );
elessair 0:f269e3021894 929
elessair 0:f269e3021894 930 if( des3 == NULL )
elessair 0:f269e3021894 931 return( NULL );
elessair 0:f269e3021894 932
elessair 0:f269e3021894 933 mbedtls_des3_init( des3 );
elessair 0:f269e3021894 934
elessair 0:f269e3021894 935 return( des3 );
elessair 0:f269e3021894 936 }
elessair 0:f269e3021894 937
elessair 0:f269e3021894 938 static void des3_ctx_free( void *ctx )
elessair 0:f269e3021894 939 {
elessair 0:f269e3021894 940 mbedtls_des3_free( (mbedtls_des3_context *) ctx );
elessair 0:f269e3021894 941 mbedtls_free( ctx );
elessair 0:f269e3021894 942 }
elessair 0:f269e3021894 943
elessair 0:f269e3021894 944 static const mbedtls_cipher_base_t des_info = {
elessair 0:f269e3021894 945 MBEDTLS_CIPHER_ID_DES,
elessair 0:f269e3021894 946 des_crypt_ecb_wrap,
elessair 0:f269e3021894 947 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 948 des_crypt_cbc_wrap,
elessair 0:f269e3021894 949 #endif
elessair 0:f269e3021894 950 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 951 NULL,
elessair 0:f269e3021894 952 #endif
elessair 0:f269e3021894 953 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 954 NULL,
elessair 0:f269e3021894 955 #endif
elessair 0:f269e3021894 956 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 957 NULL,
elessair 0:f269e3021894 958 #endif
elessair 0:f269e3021894 959 des_setkey_enc_wrap,
elessair 0:f269e3021894 960 des_setkey_dec_wrap,
elessair 0:f269e3021894 961 des_ctx_alloc,
elessair 0:f269e3021894 962 des_ctx_free
elessair 0:f269e3021894 963 };
elessair 0:f269e3021894 964
elessair 0:f269e3021894 965 static const mbedtls_cipher_info_t des_ecb_info = {
elessair 0:f269e3021894 966 MBEDTLS_CIPHER_DES_ECB,
elessair 0:f269e3021894 967 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 968 MBEDTLS_KEY_LENGTH_DES,
elessair 0:f269e3021894 969 "DES-ECB",
elessair 0:f269e3021894 970 8,
elessair 0:f269e3021894 971 0,
elessair 0:f269e3021894 972 8,
elessair 0:f269e3021894 973 &des_info
elessair 0:f269e3021894 974 };
elessair 0:f269e3021894 975
elessair 0:f269e3021894 976 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 977 static const mbedtls_cipher_info_t des_cbc_info = {
elessair 0:f269e3021894 978 MBEDTLS_CIPHER_DES_CBC,
elessair 0:f269e3021894 979 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 980 MBEDTLS_KEY_LENGTH_DES,
elessair 0:f269e3021894 981 "DES-CBC",
elessair 0:f269e3021894 982 8,
elessair 0:f269e3021894 983 0,
elessair 0:f269e3021894 984 8,
elessair 0:f269e3021894 985 &des_info
elessair 0:f269e3021894 986 };
elessair 0:f269e3021894 987 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 988
elessair 0:f269e3021894 989 static const mbedtls_cipher_base_t des_ede_info = {
elessair 0:f269e3021894 990 MBEDTLS_CIPHER_ID_DES,
elessair 0:f269e3021894 991 des3_crypt_ecb_wrap,
elessair 0:f269e3021894 992 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 993 des3_crypt_cbc_wrap,
elessair 0:f269e3021894 994 #endif
elessair 0:f269e3021894 995 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 996 NULL,
elessair 0:f269e3021894 997 #endif
elessair 0:f269e3021894 998 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 999 NULL,
elessair 0:f269e3021894 1000 #endif
elessair 0:f269e3021894 1001 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 1002 NULL,
elessair 0:f269e3021894 1003 #endif
elessair 0:f269e3021894 1004 des3_set2key_enc_wrap,
elessair 0:f269e3021894 1005 des3_set2key_dec_wrap,
elessair 0:f269e3021894 1006 des3_ctx_alloc,
elessair 0:f269e3021894 1007 des3_ctx_free
elessair 0:f269e3021894 1008 };
elessair 0:f269e3021894 1009
elessair 0:f269e3021894 1010 static const mbedtls_cipher_info_t des_ede_ecb_info = {
elessair 0:f269e3021894 1011 MBEDTLS_CIPHER_DES_EDE_ECB,
elessair 0:f269e3021894 1012 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 1013 MBEDTLS_KEY_LENGTH_DES_EDE,
elessair 0:f269e3021894 1014 "DES-EDE-ECB",
elessair 0:f269e3021894 1015 8,
elessair 0:f269e3021894 1016 0,
elessair 0:f269e3021894 1017 8,
elessair 0:f269e3021894 1018 &des_ede_info
elessair 0:f269e3021894 1019 };
elessair 0:f269e3021894 1020
elessair 0:f269e3021894 1021 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1022 static const mbedtls_cipher_info_t des_ede_cbc_info = {
elessair 0:f269e3021894 1023 MBEDTLS_CIPHER_DES_EDE_CBC,
elessair 0:f269e3021894 1024 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 1025 MBEDTLS_KEY_LENGTH_DES_EDE,
elessair 0:f269e3021894 1026 "DES-EDE-CBC",
elessair 0:f269e3021894 1027 8,
elessair 0:f269e3021894 1028 0,
elessair 0:f269e3021894 1029 8,
elessair 0:f269e3021894 1030 &des_ede_info
elessair 0:f269e3021894 1031 };
elessair 0:f269e3021894 1032 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 1033
elessair 0:f269e3021894 1034 static const mbedtls_cipher_base_t des_ede3_info = {
elessair 0:f269e3021894 1035 MBEDTLS_CIPHER_ID_3DES,
elessair 0:f269e3021894 1036 des3_crypt_ecb_wrap,
elessair 0:f269e3021894 1037 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1038 des3_crypt_cbc_wrap,
elessair 0:f269e3021894 1039 #endif
elessair 0:f269e3021894 1040 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1041 NULL,
elessair 0:f269e3021894 1042 #endif
elessair 0:f269e3021894 1043 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1044 NULL,
elessair 0:f269e3021894 1045 #endif
elessair 0:f269e3021894 1046 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 1047 NULL,
elessair 0:f269e3021894 1048 #endif
elessair 0:f269e3021894 1049 des3_set3key_enc_wrap,
elessair 0:f269e3021894 1050 des3_set3key_dec_wrap,
elessair 0:f269e3021894 1051 des3_ctx_alloc,
elessair 0:f269e3021894 1052 des3_ctx_free
elessair 0:f269e3021894 1053 };
elessair 0:f269e3021894 1054
elessair 0:f269e3021894 1055 static const mbedtls_cipher_info_t des_ede3_ecb_info = {
elessair 0:f269e3021894 1056 MBEDTLS_CIPHER_DES_EDE3_ECB,
elessair 0:f269e3021894 1057 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 1058 MBEDTLS_KEY_LENGTH_DES_EDE3,
elessair 0:f269e3021894 1059 "DES-EDE3-ECB",
elessair 0:f269e3021894 1060 8,
elessair 0:f269e3021894 1061 0,
elessair 0:f269e3021894 1062 8,
elessair 0:f269e3021894 1063 &des_ede3_info
elessair 0:f269e3021894 1064 };
elessair 0:f269e3021894 1065 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1066 static const mbedtls_cipher_info_t des_ede3_cbc_info = {
elessair 0:f269e3021894 1067 MBEDTLS_CIPHER_DES_EDE3_CBC,
elessair 0:f269e3021894 1068 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 1069 MBEDTLS_KEY_LENGTH_DES_EDE3,
elessair 0:f269e3021894 1070 "DES-EDE3-CBC",
elessair 0:f269e3021894 1071 8,
elessair 0:f269e3021894 1072 0,
elessair 0:f269e3021894 1073 8,
elessair 0:f269e3021894 1074 &des_ede3_info
elessair 0:f269e3021894 1075 };
elessair 0:f269e3021894 1076 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 1077 #endif /* MBEDTLS_DES_C */
elessair 0:f269e3021894 1078
elessair 0:f269e3021894 1079 #if defined(MBEDTLS_BLOWFISH_C)
elessair 0:f269e3021894 1080
elessair 0:f269e3021894 1081 static int blowfish_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 1082 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 1083 {
elessair 0:f269e3021894 1084 return mbedtls_blowfish_crypt_ecb( (mbedtls_blowfish_context *) ctx, operation, input,
elessair 0:f269e3021894 1085 output );
elessair 0:f269e3021894 1086 }
elessair 0:f269e3021894 1087
elessair 0:f269e3021894 1088 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1089 static int blowfish_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 1090 size_t length, unsigned char *iv, const unsigned char *input,
elessair 0:f269e3021894 1091 unsigned char *output )
elessair 0:f269e3021894 1092 {
elessair 0:f269e3021894 1093 return mbedtls_blowfish_crypt_cbc( (mbedtls_blowfish_context *) ctx, operation, length, iv,
elessair 0:f269e3021894 1094 input, output );
elessair 0:f269e3021894 1095 }
elessair 0:f269e3021894 1096 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 1097
elessair 0:f269e3021894 1098 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1099 static int blowfish_crypt_cfb64_wrap( void *ctx, mbedtls_operation_t operation,
elessair 0:f269e3021894 1100 size_t length, size_t *iv_off, unsigned char *iv,
elessair 0:f269e3021894 1101 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 1102 {
elessair 0:f269e3021894 1103 return mbedtls_blowfish_crypt_cfb64( (mbedtls_blowfish_context *) ctx, operation, length,
elessair 0:f269e3021894 1104 iv_off, iv, input, output );
elessair 0:f269e3021894 1105 }
elessair 0:f269e3021894 1106 #endif /* MBEDTLS_CIPHER_MODE_CFB */
elessair 0:f269e3021894 1107
elessair 0:f269e3021894 1108 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1109 static int blowfish_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
elessair 0:f269e3021894 1110 unsigned char *nonce_counter, unsigned char *stream_block,
elessair 0:f269e3021894 1111 const unsigned char *input, unsigned char *output )
elessair 0:f269e3021894 1112 {
elessair 0:f269e3021894 1113 return mbedtls_blowfish_crypt_ctr( (mbedtls_blowfish_context *) ctx, length, nc_off,
elessair 0:f269e3021894 1114 nonce_counter, stream_block, input, output );
elessair 0:f269e3021894 1115 }
elessair 0:f269e3021894 1116 #endif /* MBEDTLS_CIPHER_MODE_CTR */
elessair 0:f269e3021894 1117
elessair 0:f269e3021894 1118 static int blowfish_setkey_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 1119 unsigned int key_bitlen )
elessair 0:f269e3021894 1120 {
elessair 0:f269e3021894 1121 return mbedtls_blowfish_setkey( (mbedtls_blowfish_context *) ctx, key, key_bitlen );
elessair 0:f269e3021894 1122 }
elessair 0:f269e3021894 1123
elessair 0:f269e3021894 1124 static void * blowfish_ctx_alloc( void )
elessair 0:f269e3021894 1125 {
elessair 0:f269e3021894 1126 mbedtls_blowfish_context *ctx;
elessair 0:f269e3021894 1127 ctx = mbedtls_calloc( 1, sizeof( mbedtls_blowfish_context ) );
elessair 0:f269e3021894 1128
elessair 0:f269e3021894 1129 if( ctx == NULL )
elessair 0:f269e3021894 1130 return( NULL );
elessair 0:f269e3021894 1131
elessair 0:f269e3021894 1132 mbedtls_blowfish_init( ctx );
elessair 0:f269e3021894 1133
elessair 0:f269e3021894 1134 return( ctx );
elessair 0:f269e3021894 1135 }
elessair 0:f269e3021894 1136
elessair 0:f269e3021894 1137 static void blowfish_ctx_free( void *ctx )
elessair 0:f269e3021894 1138 {
elessair 0:f269e3021894 1139 mbedtls_blowfish_free( (mbedtls_blowfish_context *) ctx );
elessair 0:f269e3021894 1140 mbedtls_free( ctx );
elessair 0:f269e3021894 1141 }
elessair 0:f269e3021894 1142
elessair 0:f269e3021894 1143 static const mbedtls_cipher_base_t blowfish_info = {
elessair 0:f269e3021894 1144 MBEDTLS_CIPHER_ID_BLOWFISH,
elessair 0:f269e3021894 1145 blowfish_crypt_ecb_wrap,
elessair 0:f269e3021894 1146 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1147 blowfish_crypt_cbc_wrap,
elessair 0:f269e3021894 1148 #endif
elessair 0:f269e3021894 1149 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1150 blowfish_crypt_cfb64_wrap,
elessair 0:f269e3021894 1151 #endif
elessair 0:f269e3021894 1152 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1153 blowfish_crypt_ctr_wrap,
elessair 0:f269e3021894 1154 #endif
elessair 0:f269e3021894 1155 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 1156 NULL,
elessair 0:f269e3021894 1157 #endif
elessair 0:f269e3021894 1158 blowfish_setkey_wrap,
elessair 0:f269e3021894 1159 blowfish_setkey_wrap,
elessair 0:f269e3021894 1160 blowfish_ctx_alloc,
elessair 0:f269e3021894 1161 blowfish_ctx_free
elessair 0:f269e3021894 1162 };
elessair 0:f269e3021894 1163
elessair 0:f269e3021894 1164 static const mbedtls_cipher_info_t blowfish_ecb_info = {
elessair 0:f269e3021894 1165 MBEDTLS_CIPHER_BLOWFISH_ECB,
elessair 0:f269e3021894 1166 MBEDTLS_MODE_ECB,
elessair 0:f269e3021894 1167 128,
elessair 0:f269e3021894 1168 "BLOWFISH-ECB",
elessair 0:f269e3021894 1169 8,
elessair 0:f269e3021894 1170 MBEDTLS_CIPHER_VARIABLE_KEY_LEN,
elessair 0:f269e3021894 1171 8,
elessair 0:f269e3021894 1172 &blowfish_info
elessair 0:f269e3021894 1173 };
elessair 0:f269e3021894 1174
elessair 0:f269e3021894 1175 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1176 static const mbedtls_cipher_info_t blowfish_cbc_info = {
elessair 0:f269e3021894 1177 MBEDTLS_CIPHER_BLOWFISH_CBC,
elessair 0:f269e3021894 1178 MBEDTLS_MODE_CBC,
elessair 0:f269e3021894 1179 128,
elessair 0:f269e3021894 1180 "BLOWFISH-CBC",
elessair 0:f269e3021894 1181 8,
elessair 0:f269e3021894 1182 MBEDTLS_CIPHER_VARIABLE_KEY_LEN,
elessair 0:f269e3021894 1183 8,
elessair 0:f269e3021894 1184 &blowfish_info
elessair 0:f269e3021894 1185 };
elessair 0:f269e3021894 1186 #endif /* MBEDTLS_CIPHER_MODE_CBC */
elessair 0:f269e3021894 1187
elessair 0:f269e3021894 1188 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1189 static const mbedtls_cipher_info_t blowfish_cfb64_info = {
elessair 0:f269e3021894 1190 MBEDTLS_CIPHER_BLOWFISH_CFB64,
elessair 0:f269e3021894 1191 MBEDTLS_MODE_CFB,
elessair 0:f269e3021894 1192 128,
elessair 0:f269e3021894 1193 "BLOWFISH-CFB64",
elessair 0:f269e3021894 1194 8,
elessair 0:f269e3021894 1195 MBEDTLS_CIPHER_VARIABLE_KEY_LEN,
elessair 0:f269e3021894 1196 8,
elessair 0:f269e3021894 1197 &blowfish_info
elessair 0:f269e3021894 1198 };
elessair 0:f269e3021894 1199 #endif /* MBEDTLS_CIPHER_MODE_CFB */
elessair 0:f269e3021894 1200
elessair 0:f269e3021894 1201 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1202 static const mbedtls_cipher_info_t blowfish_ctr_info = {
elessair 0:f269e3021894 1203 MBEDTLS_CIPHER_BLOWFISH_CTR,
elessair 0:f269e3021894 1204 MBEDTLS_MODE_CTR,
elessair 0:f269e3021894 1205 128,
elessair 0:f269e3021894 1206 "BLOWFISH-CTR",
elessair 0:f269e3021894 1207 8,
elessair 0:f269e3021894 1208 MBEDTLS_CIPHER_VARIABLE_KEY_LEN,
elessair 0:f269e3021894 1209 8,
elessair 0:f269e3021894 1210 &blowfish_info
elessair 0:f269e3021894 1211 };
elessair 0:f269e3021894 1212 #endif /* MBEDTLS_CIPHER_MODE_CTR */
elessair 0:f269e3021894 1213 #endif /* MBEDTLS_BLOWFISH_C */
elessair 0:f269e3021894 1214
elessair 0:f269e3021894 1215 #if defined(MBEDTLS_ARC4_C)
elessair 0:f269e3021894 1216 static int arc4_crypt_stream_wrap( void *ctx, size_t length,
elessair 0:f269e3021894 1217 const unsigned char *input,
elessair 0:f269e3021894 1218 unsigned char *output )
elessair 0:f269e3021894 1219 {
elessair 0:f269e3021894 1220 return( mbedtls_arc4_crypt( (mbedtls_arc4_context *) ctx, length, input, output ) );
elessair 0:f269e3021894 1221 }
elessair 0:f269e3021894 1222
elessair 0:f269e3021894 1223 static int arc4_setkey_wrap( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 1224 unsigned int key_bitlen )
elessair 0:f269e3021894 1225 {
elessair 0:f269e3021894 1226 /* we get key_bitlen in bits, arc4 expects it in bytes */
elessair 0:f269e3021894 1227 if( key_bitlen % 8 != 0 )
elessair 0:f269e3021894 1228 return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
elessair 0:f269e3021894 1229
elessair 0:f269e3021894 1230 mbedtls_arc4_setup( (mbedtls_arc4_context *) ctx, key, key_bitlen / 8 );
elessair 0:f269e3021894 1231 return( 0 );
elessair 0:f269e3021894 1232 }
elessair 0:f269e3021894 1233
elessair 0:f269e3021894 1234 static void * arc4_ctx_alloc( void )
elessair 0:f269e3021894 1235 {
elessair 0:f269e3021894 1236 mbedtls_arc4_context *ctx;
elessair 0:f269e3021894 1237 ctx = mbedtls_calloc( 1, sizeof( mbedtls_arc4_context ) );
elessair 0:f269e3021894 1238
elessair 0:f269e3021894 1239 if( ctx == NULL )
elessair 0:f269e3021894 1240 return( NULL );
elessair 0:f269e3021894 1241
elessair 0:f269e3021894 1242 mbedtls_arc4_init( ctx );
elessair 0:f269e3021894 1243
elessair 0:f269e3021894 1244 return( ctx );
elessair 0:f269e3021894 1245 }
elessair 0:f269e3021894 1246
elessair 0:f269e3021894 1247 static void arc4_ctx_free( void *ctx )
elessair 0:f269e3021894 1248 {
elessair 0:f269e3021894 1249 mbedtls_arc4_free( (mbedtls_arc4_context *) ctx );
elessair 0:f269e3021894 1250 mbedtls_free( ctx );
elessair 0:f269e3021894 1251 }
elessair 0:f269e3021894 1252
elessair 0:f269e3021894 1253 static const mbedtls_cipher_base_t arc4_base_info = {
elessair 0:f269e3021894 1254 MBEDTLS_CIPHER_ID_ARC4,
elessair 0:f269e3021894 1255 NULL,
elessair 0:f269e3021894 1256 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1257 NULL,
elessair 0:f269e3021894 1258 #endif
elessair 0:f269e3021894 1259 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1260 NULL,
elessair 0:f269e3021894 1261 #endif
elessair 0:f269e3021894 1262 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1263 NULL,
elessair 0:f269e3021894 1264 #endif
elessair 0:f269e3021894 1265 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 1266 arc4_crypt_stream_wrap,
elessair 0:f269e3021894 1267 #endif
elessair 0:f269e3021894 1268 arc4_setkey_wrap,
elessair 0:f269e3021894 1269 arc4_setkey_wrap,
elessair 0:f269e3021894 1270 arc4_ctx_alloc,
elessair 0:f269e3021894 1271 arc4_ctx_free
elessair 0:f269e3021894 1272 };
elessair 0:f269e3021894 1273
elessair 0:f269e3021894 1274 static const mbedtls_cipher_info_t arc4_128_info = {
elessair 0:f269e3021894 1275 MBEDTLS_CIPHER_ARC4_128,
elessair 0:f269e3021894 1276 MBEDTLS_MODE_STREAM,
elessair 0:f269e3021894 1277 128,
elessair 0:f269e3021894 1278 "ARC4-128",
elessair 0:f269e3021894 1279 0,
elessair 0:f269e3021894 1280 0,
elessair 0:f269e3021894 1281 1,
elessair 0:f269e3021894 1282 &arc4_base_info
elessair 0:f269e3021894 1283 };
elessair 0:f269e3021894 1284 #endif /* MBEDTLS_ARC4_C */
elessair 0:f269e3021894 1285
elessair 0:f269e3021894 1286 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
elessair 0:f269e3021894 1287 static int null_crypt_stream( void *ctx, size_t length,
elessair 0:f269e3021894 1288 const unsigned char *input,
elessair 0:f269e3021894 1289 unsigned char *output )
elessair 0:f269e3021894 1290 {
elessair 0:f269e3021894 1291 ((void) ctx);
elessair 0:f269e3021894 1292 memmove( output, input, length );
elessair 0:f269e3021894 1293 return( 0 );
elessair 0:f269e3021894 1294 }
elessair 0:f269e3021894 1295
elessair 0:f269e3021894 1296 static int null_setkey( void *ctx, const unsigned char *key,
elessair 0:f269e3021894 1297 unsigned int key_bitlen )
elessair 0:f269e3021894 1298 {
elessair 0:f269e3021894 1299 ((void) ctx);
elessair 0:f269e3021894 1300 ((void) key);
elessair 0:f269e3021894 1301 ((void) key_bitlen);
elessair 0:f269e3021894 1302
elessair 0:f269e3021894 1303 return( 0 );
elessair 0:f269e3021894 1304 }
elessair 0:f269e3021894 1305
elessair 0:f269e3021894 1306 static void * null_ctx_alloc( void )
elessair 0:f269e3021894 1307 {
elessair 0:f269e3021894 1308 return( (void *) 1 );
elessair 0:f269e3021894 1309 }
elessair 0:f269e3021894 1310
elessair 0:f269e3021894 1311 static void null_ctx_free( void *ctx )
elessair 0:f269e3021894 1312 {
elessair 0:f269e3021894 1313 ((void) ctx);
elessair 0:f269e3021894 1314 }
elessair 0:f269e3021894 1315
elessair 0:f269e3021894 1316 static const mbedtls_cipher_base_t null_base_info = {
elessair 0:f269e3021894 1317 MBEDTLS_CIPHER_ID_NULL,
elessair 0:f269e3021894 1318 NULL,
elessair 0:f269e3021894 1319 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1320 NULL,
elessair 0:f269e3021894 1321 #endif
elessair 0:f269e3021894 1322 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1323 NULL,
elessair 0:f269e3021894 1324 #endif
elessair 0:f269e3021894 1325 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1326 NULL,
elessair 0:f269e3021894 1327 #endif
elessair 0:f269e3021894 1328 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
elessair 0:f269e3021894 1329 null_crypt_stream,
elessair 0:f269e3021894 1330 #endif
elessair 0:f269e3021894 1331 null_setkey,
elessair 0:f269e3021894 1332 null_setkey,
elessair 0:f269e3021894 1333 null_ctx_alloc,
elessair 0:f269e3021894 1334 null_ctx_free
elessair 0:f269e3021894 1335 };
elessair 0:f269e3021894 1336
elessair 0:f269e3021894 1337 static const mbedtls_cipher_info_t null_cipher_info = {
elessair 0:f269e3021894 1338 MBEDTLS_CIPHER_NULL,
elessair 0:f269e3021894 1339 MBEDTLS_MODE_STREAM,
elessair 0:f269e3021894 1340 0,
elessair 0:f269e3021894 1341 "NULL",
elessair 0:f269e3021894 1342 0,
elessair 0:f269e3021894 1343 0,
elessair 0:f269e3021894 1344 1,
elessair 0:f269e3021894 1345 &null_base_info
elessair 0:f269e3021894 1346 };
elessair 0:f269e3021894 1347 #endif /* defined(MBEDTLS_CIPHER_NULL_CIPHER) */
elessair 0:f269e3021894 1348
elessair 0:f269e3021894 1349 const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] =
elessair 0:f269e3021894 1350 {
elessair 0:f269e3021894 1351 #if defined(MBEDTLS_AES_C)
elessair 0:f269e3021894 1352 { MBEDTLS_CIPHER_AES_128_ECB, &aes_128_ecb_info },
elessair 0:f269e3021894 1353 { MBEDTLS_CIPHER_AES_192_ECB, &aes_192_ecb_info },
elessair 0:f269e3021894 1354 { MBEDTLS_CIPHER_AES_256_ECB, &aes_256_ecb_info },
elessair 0:f269e3021894 1355 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1356 { MBEDTLS_CIPHER_AES_128_CBC, &aes_128_cbc_info },
elessair 0:f269e3021894 1357 { MBEDTLS_CIPHER_AES_192_CBC, &aes_192_cbc_info },
elessair 0:f269e3021894 1358 { MBEDTLS_CIPHER_AES_256_CBC, &aes_256_cbc_info },
elessair 0:f269e3021894 1359 #endif
elessair 0:f269e3021894 1360 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1361 { MBEDTLS_CIPHER_AES_128_CFB128, &aes_128_cfb128_info },
elessair 0:f269e3021894 1362 { MBEDTLS_CIPHER_AES_192_CFB128, &aes_192_cfb128_info },
elessair 0:f269e3021894 1363 { MBEDTLS_CIPHER_AES_256_CFB128, &aes_256_cfb128_info },
elessair 0:f269e3021894 1364 #endif
elessair 0:f269e3021894 1365 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1366 { MBEDTLS_CIPHER_AES_128_CTR, &aes_128_ctr_info },
elessair 0:f269e3021894 1367 { MBEDTLS_CIPHER_AES_192_CTR, &aes_192_ctr_info },
elessair 0:f269e3021894 1368 { MBEDTLS_CIPHER_AES_256_CTR, &aes_256_ctr_info },
elessair 0:f269e3021894 1369 #endif
elessair 0:f269e3021894 1370 #if defined(MBEDTLS_GCM_C)
elessair 0:f269e3021894 1371 { MBEDTLS_CIPHER_AES_128_GCM, &aes_128_gcm_info },
elessair 0:f269e3021894 1372 { MBEDTLS_CIPHER_AES_192_GCM, &aes_192_gcm_info },
elessair 0:f269e3021894 1373 { MBEDTLS_CIPHER_AES_256_GCM, &aes_256_gcm_info },
elessair 0:f269e3021894 1374 #endif
elessair 0:f269e3021894 1375 #if defined(MBEDTLS_CCM_C)
elessair 0:f269e3021894 1376 { MBEDTLS_CIPHER_AES_128_CCM, &aes_128_ccm_info },
elessair 0:f269e3021894 1377 { MBEDTLS_CIPHER_AES_192_CCM, &aes_192_ccm_info },
elessair 0:f269e3021894 1378 { MBEDTLS_CIPHER_AES_256_CCM, &aes_256_ccm_info },
elessair 0:f269e3021894 1379 #endif
elessair 0:f269e3021894 1380 #endif /* MBEDTLS_AES_C */
elessair 0:f269e3021894 1381
elessair 0:f269e3021894 1382 #if defined(MBEDTLS_ARC4_C)
elessair 0:f269e3021894 1383 { MBEDTLS_CIPHER_ARC4_128, &arc4_128_info },
elessair 0:f269e3021894 1384 #endif
elessair 0:f269e3021894 1385
elessair 0:f269e3021894 1386 #if defined(MBEDTLS_BLOWFISH_C)
elessair 0:f269e3021894 1387 { MBEDTLS_CIPHER_BLOWFISH_ECB, &blowfish_ecb_info },
elessair 0:f269e3021894 1388 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1389 { MBEDTLS_CIPHER_BLOWFISH_CBC, &blowfish_cbc_info },
elessair 0:f269e3021894 1390 #endif
elessair 0:f269e3021894 1391 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1392 { MBEDTLS_CIPHER_BLOWFISH_CFB64, &blowfish_cfb64_info },
elessair 0:f269e3021894 1393 #endif
elessair 0:f269e3021894 1394 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1395 { MBEDTLS_CIPHER_BLOWFISH_CTR, &blowfish_ctr_info },
elessair 0:f269e3021894 1396 #endif
elessair 0:f269e3021894 1397 #endif /* MBEDTLS_BLOWFISH_C */
elessair 0:f269e3021894 1398
elessair 0:f269e3021894 1399 #if defined(MBEDTLS_CAMELLIA_C)
elessair 0:f269e3021894 1400 { MBEDTLS_CIPHER_CAMELLIA_128_ECB, &camellia_128_ecb_info },
elessair 0:f269e3021894 1401 { MBEDTLS_CIPHER_CAMELLIA_192_ECB, &camellia_192_ecb_info },
elessair 0:f269e3021894 1402 { MBEDTLS_CIPHER_CAMELLIA_256_ECB, &camellia_256_ecb_info },
elessair 0:f269e3021894 1403 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1404 { MBEDTLS_CIPHER_CAMELLIA_128_CBC, &camellia_128_cbc_info },
elessair 0:f269e3021894 1405 { MBEDTLS_CIPHER_CAMELLIA_192_CBC, &camellia_192_cbc_info },
elessair 0:f269e3021894 1406 { MBEDTLS_CIPHER_CAMELLIA_256_CBC, &camellia_256_cbc_info },
elessair 0:f269e3021894 1407 #endif
elessair 0:f269e3021894 1408 #if defined(MBEDTLS_CIPHER_MODE_CFB)
elessair 0:f269e3021894 1409 { MBEDTLS_CIPHER_CAMELLIA_128_CFB128, &camellia_128_cfb128_info },
elessair 0:f269e3021894 1410 { MBEDTLS_CIPHER_CAMELLIA_192_CFB128, &camellia_192_cfb128_info },
elessair 0:f269e3021894 1411 { MBEDTLS_CIPHER_CAMELLIA_256_CFB128, &camellia_256_cfb128_info },
elessair 0:f269e3021894 1412 #endif
elessair 0:f269e3021894 1413 #if defined(MBEDTLS_CIPHER_MODE_CTR)
elessair 0:f269e3021894 1414 { MBEDTLS_CIPHER_CAMELLIA_128_CTR, &camellia_128_ctr_info },
elessair 0:f269e3021894 1415 { MBEDTLS_CIPHER_CAMELLIA_192_CTR, &camellia_192_ctr_info },
elessair 0:f269e3021894 1416 { MBEDTLS_CIPHER_CAMELLIA_256_CTR, &camellia_256_ctr_info },
elessair 0:f269e3021894 1417 #endif
elessair 0:f269e3021894 1418 #if defined(MBEDTLS_GCM_C)
elessair 0:f269e3021894 1419 { MBEDTLS_CIPHER_CAMELLIA_128_GCM, &camellia_128_gcm_info },
elessair 0:f269e3021894 1420 { MBEDTLS_CIPHER_CAMELLIA_192_GCM, &camellia_192_gcm_info },
elessair 0:f269e3021894 1421 { MBEDTLS_CIPHER_CAMELLIA_256_GCM, &camellia_256_gcm_info },
elessair 0:f269e3021894 1422 #endif
elessair 0:f269e3021894 1423 #if defined(MBEDTLS_CCM_C)
elessair 0:f269e3021894 1424 { MBEDTLS_CIPHER_CAMELLIA_128_CCM, &camellia_128_ccm_info },
elessair 0:f269e3021894 1425 { MBEDTLS_CIPHER_CAMELLIA_192_CCM, &camellia_192_ccm_info },
elessair 0:f269e3021894 1426 { MBEDTLS_CIPHER_CAMELLIA_256_CCM, &camellia_256_ccm_info },
elessair 0:f269e3021894 1427 #endif
elessair 0:f269e3021894 1428 #endif /* MBEDTLS_CAMELLIA_C */
elessair 0:f269e3021894 1429
elessair 0:f269e3021894 1430 #if defined(MBEDTLS_DES_C)
elessair 0:f269e3021894 1431 { MBEDTLS_CIPHER_DES_ECB, &des_ecb_info },
elessair 0:f269e3021894 1432 { MBEDTLS_CIPHER_DES_EDE_ECB, &des_ede_ecb_info },
elessair 0:f269e3021894 1433 { MBEDTLS_CIPHER_DES_EDE3_ECB, &des_ede3_ecb_info },
elessair 0:f269e3021894 1434 #if defined(MBEDTLS_CIPHER_MODE_CBC)
elessair 0:f269e3021894 1435 { MBEDTLS_CIPHER_DES_CBC, &des_cbc_info },
elessair 0:f269e3021894 1436 { MBEDTLS_CIPHER_DES_EDE_CBC, &des_ede_cbc_info },
elessair 0:f269e3021894 1437 { MBEDTLS_CIPHER_DES_EDE3_CBC, &des_ede3_cbc_info },
elessair 0:f269e3021894 1438 #endif
elessair 0:f269e3021894 1439 #endif /* MBEDTLS_DES_C */
elessair 0:f269e3021894 1440
elessair 0:f269e3021894 1441 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
elessair 0:f269e3021894 1442 { MBEDTLS_CIPHER_NULL, &null_cipher_info },
elessair 0:f269e3021894 1443 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
elessair 0:f269e3021894 1444
elessair 0:f269e3021894 1445 { MBEDTLS_CIPHER_NONE, NULL }
elessair 0:f269e3021894 1446 };
elessair 0:f269e3021894 1447
elessair 0:f269e3021894 1448 #define NUM_CIPHERS sizeof mbedtls_cipher_definitions / sizeof mbedtls_cipher_definitions[0]
elessair 0:f269e3021894 1449 int mbedtls_cipher_supported[NUM_CIPHERS];
elessair 0:f269e3021894 1450
elessair 0:f269e3021894 1451 #endif /* MBEDTLS_CIPHER_C */