Rahul Dahiya / Mbed OS STM32F7 Ethernet
Committer:
rahul_dahiya
Date:
Wed Jan 15 15:57:15 2020 +0530
Revision:
0:fb8047b156bb
STM32F7 LWIP

Who changed what in which revision?

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