Example program to test AES-GCM functionality. Used for a workshop

Dependencies:   mbed

Committer:
HannesTschofenig
Date:
Thu Sep 27 06:34:22 2018 +0000
Revision:
0:796d0f61a05b
Example AES-GCM test program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HannesTschofenig 0:796d0f61a05b 1 /**
HannesTschofenig 0:796d0f61a05b 2 * \file cipher_wrap.c
HannesTschofenig 0:796d0f61a05b 3 *
HannesTschofenig 0:796d0f61a05b 4 * \brief Generic cipher wrapper for PolarSSL
HannesTschofenig 0:796d0f61a05b 5 *
HannesTschofenig 0:796d0f61a05b 6 * \author Adriaan de Jong <dejong@fox-it.com>
HannesTschofenig 0:796d0f61a05b 7 *
HannesTschofenig 0:796d0f61a05b 8 * Copyright (C) 2006-2014, Brainspark B.V.
HannesTschofenig 0:796d0f61a05b 9 *
HannesTschofenig 0:796d0f61a05b 10 * This file is part of PolarSSL (http://www.polarssl.org)
HannesTschofenig 0:796d0f61a05b 11 * Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
HannesTschofenig 0:796d0f61a05b 12 *
HannesTschofenig 0:796d0f61a05b 13 * All rights reserved.
HannesTschofenig 0:796d0f61a05b 14 *
HannesTschofenig 0:796d0f61a05b 15 * This program is free software; you can redistribute it and/or modify
HannesTschofenig 0:796d0f61a05b 16 * it under the terms of the GNU General Public License as published by
HannesTschofenig 0:796d0f61a05b 17 * the Free Software Foundation; either version 2 of the License, or
HannesTschofenig 0:796d0f61a05b 18 * (at your option) any later version.
HannesTschofenig 0:796d0f61a05b 19 *
HannesTschofenig 0:796d0f61a05b 20 * This program is distributed in the hope that it will be useful,
HannesTschofenig 0:796d0f61a05b 21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
HannesTschofenig 0:796d0f61a05b 22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
HannesTschofenig 0:796d0f61a05b 23 * GNU General Public License for more details.
HannesTschofenig 0:796d0f61a05b 24 *
HannesTschofenig 0:796d0f61a05b 25 * You should have received a copy of the GNU General Public License along
HannesTschofenig 0:796d0f61a05b 26 * with this program; if not, write to the Free Software Foundation, Inc.,
HannesTschofenig 0:796d0f61a05b 27 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
HannesTschofenig 0:796d0f61a05b 28 */
HannesTschofenig 0:796d0f61a05b 29
HannesTschofenig 0:796d0f61a05b 30 #if !defined(POLARSSL_CONFIG_FILE)
HannesTschofenig 0:796d0f61a05b 31 #include "polarssl/config.h"
HannesTschofenig 0:796d0f61a05b 32 #else
HannesTschofenig 0:796d0f61a05b 33 #include POLARSSL_CONFIG_FILE
HannesTschofenig 0:796d0f61a05b 34 #endif
HannesTschofenig 0:796d0f61a05b 35
HannesTschofenig 0:796d0f61a05b 36 #if defined(POLARSSL_CIPHER_C)
HannesTschofenig 0:796d0f61a05b 37
HannesTschofenig 0:796d0f61a05b 38 #include "polarssl/cipher_wrap.h"
HannesTschofenig 0:796d0f61a05b 39
HannesTschofenig 0:796d0f61a05b 40 #if defined(POLARSSL_AES_C)
HannesTschofenig 0:796d0f61a05b 41 #include "polarssl/aes.h"
HannesTschofenig 0:796d0f61a05b 42 #endif
HannesTschofenig 0:796d0f61a05b 43
HannesTschofenig 0:796d0f61a05b 44 #if defined(POLARSSL_ARC4_C)
HannesTschofenig 0:796d0f61a05b 45 #include "polarssl/arc4.h"
HannesTschofenig 0:796d0f61a05b 46 #endif
HannesTschofenig 0:796d0f61a05b 47
HannesTschofenig 0:796d0f61a05b 48 #if defined(POLARSSL_CAMELLIA_C)
HannesTschofenig 0:796d0f61a05b 49 #include "polarssl/camellia.h"
HannesTschofenig 0:796d0f61a05b 50 #endif
HannesTschofenig 0:796d0f61a05b 51
HannesTschofenig 0:796d0f61a05b 52 #if defined(POLARSSL_DES_C)
HannesTschofenig 0:796d0f61a05b 53 #include "polarssl/des.h"
HannesTschofenig 0:796d0f61a05b 54 #endif
HannesTschofenig 0:796d0f61a05b 55
HannesTschofenig 0:796d0f61a05b 56 #if defined(POLARSSL_BLOWFISH_C)
HannesTschofenig 0:796d0f61a05b 57 #include "polarssl/blowfish.h"
HannesTschofenig 0:796d0f61a05b 58 #endif
HannesTschofenig 0:796d0f61a05b 59
HannesTschofenig 0:796d0f61a05b 60 #if defined(POLARSSL_GCM_C)
HannesTschofenig 0:796d0f61a05b 61 #include "polarssl/gcm.h"
HannesTschofenig 0:796d0f61a05b 62 #endif
HannesTschofenig 0:796d0f61a05b 63
HannesTschofenig 0:796d0f61a05b 64 #if defined(POLARSSL_PLATFORM_C)
HannesTschofenig 0:796d0f61a05b 65 #include "polarssl/platform.h"
HannesTschofenig 0:796d0f61a05b 66 #else
HannesTschofenig 0:796d0f61a05b 67 #define polarssl_malloc malloc
HannesTschofenig 0:796d0f61a05b 68 #define polarssl_free free
HannesTschofenig 0:796d0f61a05b 69 #endif
HannesTschofenig 0:796d0f61a05b 70
HannesTschofenig 0:796d0f61a05b 71 #include <stdlib.h>
HannesTschofenig 0:796d0f61a05b 72
HannesTschofenig 0:796d0f61a05b 73 #if defined(POLARSSL_GCM_C)
HannesTschofenig 0:796d0f61a05b 74 /* shared by all GCM ciphers */
HannesTschofenig 0:796d0f61a05b 75 static void *gcm_ctx_alloc( void )
HannesTschofenig 0:796d0f61a05b 76 {
HannesTschofenig 0:796d0f61a05b 77 return polarssl_malloc( sizeof( gcm_context ) );
HannesTschofenig 0:796d0f61a05b 78 }
HannesTschofenig 0:796d0f61a05b 79
HannesTschofenig 0:796d0f61a05b 80 static void gcm_ctx_free( void *ctx )
HannesTschofenig 0:796d0f61a05b 81 {
HannesTschofenig 0:796d0f61a05b 82 gcm_free( ctx );
HannesTschofenig 0:796d0f61a05b 83 polarssl_free( ctx );
HannesTschofenig 0:796d0f61a05b 84 }
HannesTschofenig 0:796d0f61a05b 85 #endif /* POLARSSL_GCM_C */
HannesTschofenig 0:796d0f61a05b 86
HannesTschofenig 0:796d0f61a05b 87 #if defined(POLARSSL_AES_C)
HannesTschofenig 0:796d0f61a05b 88
HannesTschofenig 0:796d0f61a05b 89 static int aes_crypt_ecb_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 90 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 91 {
HannesTschofenig 0:796d0f61a05b 92 return aes_crypt_ecb( (aes_context *) ctx, operation, input, output );
HannesTschofenig 0:796d0f61a05b 93 }
HannesTschofenig 0:796d0f61a05b 94
HannesTschofenig 0:796d0f61a05b 95 static int aes_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
HannesTschofenig 0:796d0f61a05b 96 unsigned char *iv, const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 97 {
HannesTschofenig 0:796d0f61a05b 98 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 99 return aes_crypt_cbc( (aes_context *) ctx, operation, length, iv, input,
HannesTschofenig 0:796d0f61a05b 100 output );
HannesTschofenig 0:796d0f61a05b 101 #else
HannesTschofenig 0:796d0f61a05b 102 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 103 ((void) operation);
HannesTschofenig 0:796d0f61a05b 104 ((void) length);
HannesTschofenig 0:796d0f61a05b 105 ((void) iv);
HannesTschofenig 0:796d0f61a05b 106 ((void) input);
HannesTschofenig 0:796d0f61a05b 107 ((void) output);
HannesTschofenig 0:796d0f61a05b 108
HannesTschofenig 0:796d0f61a05b 109 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 110 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 111 }
HannesTschofenig 0:796d0f61a05b 112
HannesTschofenig 0:796d0f61a05b 113 static int aes_crypt_cfb128_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 114 size_t length, size_t *iv_off, unsigned char *iv,
HannesTschofenig 0:796d0f61a05b 115 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 116 {
HannesTschofenig 0:796d0f61a05b 117 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 118 return aes_crypt_cfb128( (aes_context *) ctx, operation, length, iv_off, iv,
HannesTschofenig 0:796d0f61a05b 119 input, output );
HannesTschofenig 0:796d0f61a05b 120 #else
HannesTschofenig 0:796d0f61a05b 121 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 122 ((void) operation);
HannesTschofenig 0:796d0f61a05b 123 ((void) length);
HannesTschofenig 0:796d0f61a05b 124 ((void) iv_off);
HannesTschofenig 0:796d0f61a05b 125 ((void) iv);
HannesTschofenig 0:796d0f61a05b 126 ((void) input);
HannesTschofenig 0:796d0f61a05b 127 ((void) output);
HannesTschofenig 0:796d0f61a05b 128
HannesTschofenig 0:796d0f61a05b 129 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 130 #endif /* POLARSSL_CIPHER_MODE_CFB */
HannesTschofenig 0:796d0f61a05b 131 }
HannesTschofenig 0:796d0f61a05b 132
HannesTschofenig 0:796d0f61a05b 133 static int aes_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
HannesTschofenig 0:796d0f61a05b 134 unsigned char *nonce_counter, unsigned char *stream_block,
HannesTschofenig 0:796d0f61a05b 135 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 136 {
HannesTschofenig 0:796d0f61a05b 137 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 138 return aes_crypt_ctr( (aes_context *) ctx, length, nc_off, nonce_counter,
HannesTschofenig 0:796d0f61a05b 139 stream_block, input, output );
HannesTschofenig 0:796d0f61a05b 140 #else
HannesTschofenig 0:796d0f61a05b 141 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 142 ((void) length);
HannesTschofenig 0:796d0f61a05b 143 ((void) nc_off);
HannesTschofenig 0:796d0f61a05b 144 ((void) nonce_counter);
HannesTschofenig 0:796d0f61a05b 145 ((void) stream_block);
HannesTschofenig 0:796d0f61a05b 146 ((void) input);
HannesTschofenig 0:796d0f61a05b 147 ((void) output);
HannesTschofenig 0:796d0f61a05b 148
HannesTschofenig 0:796d0f61a05b 149 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 150 #endif /* POLARSSL_CIPHER_MODE_CTR */
HannesTschofenig 0:796d0f61a05b 151 }
HannesTschofenig 0:796d0f61a05b 152
HannesTschofenig 0:796d0f61a05b 153 static int aes_setkey_dec_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 154 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 155 {
HannesTschofenig 0:796d0f61a05b 156 return aes_setkey_dec( (aes_context *) ctx, key, key_length );
HannesTschofenig 0:796d0f61a05b 157 }
HannesTschofenig 0:796d0f61a05b 158
HannesTschofenig 0:796d0f61a05b 159 static int aes_setkey_enc_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 160 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 161 {
HannesTschofenig 0:796d0f61a05b 162 return aes_setkey_enc( (aes_context *) ctx, key, key_length );
HannesTschofenig 0:796d0f61a05b 163 }
HannesTschofenig 0:796d0f61a05b 164
HannesTschofenig 0:796d0f61a05b 165 static void * aes_ctx_alloc( void )
HannesTschofenig 0:796d0f61a05b 166 {
HannesTschofenig 0:796d0f61a05b 167 return polarssl_malloc( sizeof( aes_context ) );
HannesTschofenig 0:796d0f61a05b 168 }
HannesTschofenig 0:796d0f61a05b 169
HannesTschofenig 0:796d0f61a05b 170 static void aes_ctx_free( void *ctx )
HannesTschofenig 0:796d0f61a05b 171 {
HannesTschofenig 0:796d0f61a05b 172 polarssl_free( ctx );
HannesTschofenig 0:796d0f61a05b 173 }
HannesTschofenig 0:796d0f61a05b 174
HannesTschofenig 0:796d0f61a05b 175 const cipher_base_t aes_info = {
HannesTschofenig 0:796d0f61a05b 176 POLARSSL_CIPHER_ID_AES,
HannesTschofenig 0:796d0f61a05b 177 aes_crypt_ecb_wrap,
HannesTschofenig 0:796d0f61a05b 178 aes_crypt_cbc_wrap,
HannesTschofenig 0:796d0f61a05b 179 aes_crypt_cfb128_wrap,
HannesTschofenig 0:796d0f61a05b 180 aes_crypt_ctr_wrap,
HannesTschofenig 0:796d0f61a05b 181 NULL,
HannesTschofenig 0:796d0f61a05b 182 aes_setkey_enc_wrap,
HannesTschofenig 0:796d0f61a05b 183 aes_setkey_dec_wrap,
HannesTschofenig 0:796d0f61a05b 184 aes_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 185 aes_ctx_free
HannesTschofenig 0:796d0f61a05b 186 };
HannesTschofenig 0:796d0f61a05b 187
HannesTschofenig 0:796d0f61a05b 188 const cipher_info_t aes_128_ecb_info = {
HannesTschofenig 0:796d0f61a05b 189 POLARSSL_CIPHER_AES_128_ECB,
HannesTschofenig 0:796d0f61a05b 190 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 191 128,
HannesTschofenig 0:796d0f61a05b 192 "AES-128-ECB",
HannesTschofenig 0:796d0f61a05b 193 16,
HannesTschofenig 0:796d0f61a05b 194 0,
HannesTschofenig 0:796d0f61a05b 195 16,
HannesTschofenig 0:796d0f61a05b 196 &aes_info
HannesTschofenig 0:796d0f61a05b 197 };
HannesTschofenig 0:796d0f61a05b 198
HannesTschofenig 0:796d0f61a05b 199 const cipher_info_t aes_192_ecb_info = {
HannesTschofenig 0:796d0f61a05b 200 POLARSSL_CIPHER_AES_192_ECB,
HannesTschofenig 0:796d0f61a05b 201 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 202 192,
HannesTschofenig 0:796d0f61a05b 203 "AES-192-ECB",
HannesTschofenig 0:796d0f61a05b 204 16,
HannesTschofenig 0:796d0f61a05b 205 0,
HannesTschofenig 0:796d0f61a05b 206 16,
HannesTschofenig 0:796d0f61a05b 207 &aes_info
HannesTschofenig 0:796d0f61a05b 208 };
HannesTschofenig 0:796d0f61a05b 209
HannesTschofenig 0:796d0f61a05b 210 const cipher_info_t aes_256_ecb_info = {
HannesTschofenig 0:796d0f61a05b 211 POLARSSL_CIPHER_AES_256_ECB,
HannesTschofenig 0:796d0f61a05b 212 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 213 256,
HannesTschofenig 0:796d0f61a05b 214 "AES-256-ECB",
HannesTschofenig 0:796d0f61a05b 215 16,
HannesTschofenig 0:796d0f61a05b 216 0,
HannesTschofenig 0:796d0f61a05b 217 16,
HannesTschofenig 0:796d0f61a05b 218 &aes_info
HannesTschofenig 0:796d0f61a05b 219 };
HannesTschofenig 0:796d0f61a05b 220
HannesTschofenig 0:796d0f61a05b 221 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 222 const cipher_info_t aes_128_cbc_info = {
HannesTschofenig 0:796d0f61a05b 223 POLARSSL_CIPHER_AES_128_CBC,
HannesTschofenig 0:796d0f61a05b 224 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 225 128,
HannesTschofenig 0:796d0f61a05b 226 "AES-128-CBC",
HannesTschofenig 0:796d0f61a05b 227 16,
HannesTschofenig 0:796d0f61a05b 228 0,
HannesTschofenig 0:796d0f61a05b 229 16,
HannesTschofenig 0:796d0f61a05b 230 &aes_info
HannesTschofenig 0:796d0f61a05b 231 };
HannesTschofenig 0:796d0f61a05b 232
HannesTschofenig 0:796d0f61a05b 233 const cipher_info_t aes_192_cbc_info = {
HannesTschofenig 0:796d0f61a05b 234 POLARSSL_CIPHER_AES_192_CBC,
HannesTschofenig 0:796d0f61a05b 235 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 236 192,
HannesTschofenig 0:796d0f61a05b 237 "AES-192-CBC",
HannesTschofenig 0:796d0f61a05b 238 16,
HannesTschofenig 0:796d0f61a05b 239 0,
HannesTschofenig 0:796d0f61a05b 240 16,
HannesTschofenig 0:796d0f61a05b 241 &aes_info
HannesTschofenig 0:796d0f61a05b 242 };
HannesTschofenig 0:796d0f61a05b 243
HannesTschofenig 0:796d0f61a05b 244 const cipher_info_t aes_256_cbc_info = {
HannesTschofenig 0:796d0f61a05b 245 POLARSSL_CIPHER_AES_256_CBC,
HannesTschofenig 0:796d0f61a05b 246 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 247 256,
HannesTschofenig 0:796d0f61a05b 248 "AES-256-CBC",
HannesTschofenig 0:796d0f61a05b 249 16,
HannesTschofenig 0:796d0f61a05b 250 0,
HannesTschofenig 0:796d0f61a05b 251 16,
HannesTschofenig 0:796d0f61a05b 252 &aes_info
HannesTschofenig 0:796d0f61a05b 253 };
HannesTschofenig 0:796d0f61a05b 254 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 255
HannesTschofenig 0:796d0f61a05b 256 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 257 const cipher_info_t aes_128_cfb128_info = {
HannesTschofenig 0:796d0f61a05b 258 POLARSSL_CIPHER_AES_128_CFB128,
HannesTschofenig 0:796d0f61a05b 259 POLARSSL_MODE_CFB,
HannesTschofenig 0:796d0f61a05b 260 128,
HannesTschofenig 0:796d0f61a05b 261 "AES-128-CFB128",
HannesTschofenig 0:796d0f61a05b 262 16,
HannesTschofenig 0:796d0f61a05b 263 0,
HannesTschofenig 0:796d0f61a05b 264 16,
HannesTschofenig 0:796d0f61a05b 265 &aes_info
HannesTschofenig 0:796d0f61a05b 266 };
HannesTschofenig 0:796d0f61a05b 267
HannesTschofenig 0:796d0f61a05b 268 const cipher_info_t aes_192_cfb128_info = {
HannesTschofenig 0:796d0f61a05b 269 POLARSSL_CIPHER_AES_192_CFB128,
HannesTschofenig 0:796d0f61a05b 270 POLARSSL_MODE_CFB,
HannesTschofenig 0:796d0f61a05b 271 192,
HannesTschofenig 0:796d0f61a05b 272 "AES-192-CFB128",
HannesTschofenig 0:796d0f61a05b 273 16,
HannesTschofenig 0:796d0f61a05b 274 0,
HannesTschofenig 0:796d0f61a05b 275 16,
HannesTschofenig 0:796d0f61a05b 276 &aes_info
HannesTschofenig 0:796d0f61a05b 277 };
HannesTschofenig 0:796d0f61a05b 278
HannesTschofenig 0:796d0f61a05b 279 const cipher_info_t aes_256_cfb128_info = {
HannesTschofenig 0:796d0f61a05b 280 POLARSSL_CIPHER_AES_256_CFB128,
HannesTschofenig 0:796d0f61a05b 281 POLARSSL_MODE_CFB,
HannesTschofenig 0:796d0f61a05b 282 256,
HannesTschofenig 0:796d0f61a05b 283 "AES-256-CFB128",
HannesTschofenig 0:796d0f61a05b 284 16,
HannesTschofenig 0:796d0f61a05b 285 0,
HannesTschofenig 0:796d0f61a05b 286 16,
HannesTschofenig 0:796d0f61a05b 287 &aes_info
HannesTschofenig 0:796d0f61a05b 288 };
HannesTschofenig 0:796d0f61a05b 289 #endif /* POLARSSL_CIPHER_MODE_CFB */
HannesTschofenig 0:796d0f61a05b 290
HannesTschofenig 0:796d0f61a05b 291 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 292 const cipher_info_t aes_128_ctr_info = {
HannesTschofenig 0:796d0f61a05b 293 POLARSSL_CIPHER_AES_128_CTR,
HannesTschofenig 0:796d0f61a05b 294 POLARSSL_MODE_CTR,
HannesTschofenig 0:796d0f61a05b 295 128,
HannesTschofenig 0:796d0f61a05b 296 "AES-128-CTR",
HannesTschofenig 0:796d0f61a05b 297 16,
HannesTschofenig 0:796d0f61a05b 298 0,
HannesTschofenig 0:796d0f61a05b 299 16,
HannesTschofenig 0:796d0f61a05b 300 &aes_info
HannesTschofenig 0:796d0f61a05b 301 };
HannesTschofenig 0:796d0f61a05b 302
HannesTschofenig 0:796d0f61a05b 303 const cipher_info_t aes_192_ctr_info = {
HannesTschofenig 0:796d0f61a05b 304 POLARSSL_CIPHER_AES_192_CTR,
HannesTschofenig 0:796d0f61a05b 305 POLARSSL_MODE_CTR,
HannesTschofenig 0:796d0f61a05b 306 192,
HannesTschofenig 0:796d0f61a05b 307 "AES-192-CTR",
HannesTschofenig 0:796d0f61a05b 308 16,
HannesTschofenig 0:796d0f61a05b 309 0,
HannesTschofenig 0:796d0f61a05b 310 16,
HannesTschofenig 0:796d0f61a05b 311 &aes_info
HannesTschofenig 0:796d0f61a05b 312 };
HannesTschofenig 0:796d0f61a05b 313
HannesTschofenig 0:796d0f61a05b 314 const cipher_info_t aes_256_ctr_info = {
HannesTschofenig 0:796d0f61a05b 315 POLARSSL_CIPHER_AES_256_CTR,
HannesTschofenig 0:796d0f61a05b 316 POLARSSL_MODE_CTR,
HannesTschofenig 0:796d0f61a05b 317 256,
HannesTschofenig 0:796d0f61a05b 318 "AES-256-CTR",
HannesTschofenig 0:796d0f61a05b 319 16,
HannesTschofenig 0:796d0f61a05b 320 0,
HannesTschofenig 0:796d0f61a05b 321 16,
HannesTschofenig 0:796d0f61a05b 322 &aes_info
HannesTschofenig 0:796d0f61a05b 323 };
HannesTschofenig 0:796d0f61a05b 324 #endif /* POLARSSL_CIPHER_MODE_CTR */
HannesTschofenig 0:796d0f61a05b 325
HannesTschofenig 0:796d0f61a05b 326 #if defined(POLARSSL_GCM_C)
HannesTschofenig 0:796d0f61a05b 327 static int gcm_aes_setkey_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 328 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 329 {
HannesTschofenig 0:796d0f61a05b 330 return gcm_init( (gcm_context *) ctx, POLARSSL_CIPHER_ID_AES,
HannesTschofenig 0:796d0f61a05b 331 key, key_length );
HannesTschofenig 0:796d0f61a05b 332 }
HannesTschofenig 0:796d0f61a05b 333
HannesTschofenig 0:796d0f61a05b 334 const cipher_base_t gcm_aes_info = {
HannesTschofenig 0:796d0f61a05b 335 POLARSSL_CIPHER_ID_AES,
HannesTschofenig 0:796d0f61a05b 336 NULL,
HannesTschofenig 0:796d0f61a05b 337 NULL,
HannesTschofenig 0:796d0f61a05b 338 NULL,
HannesTschofenig 0:796d0f61a05b 339 NULL,
HannesTschofenig 0:796d0f61a05b 340 NULL,
HannesTschofenig 0:796d0f61a05b 341 gcm_aes_setkey_wrap,
HannesTschofenig 0:796d0f61a05b 342 gcm_aes_setkey_wrap,
HannesTschofenig 0:796d0f61a05b 343 gcm_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 344 gcm_ctx_free,
HannesTschofenig 0:796d0f61a05b 345 };
HannesTschofenig 0:796d0f61a05b 346
HannesTschofenig 0:796d0f61a05b 347 const cipher_info_t aes_128_gcm_info = {
HannesTschofenig 0:796d0f61a05b 348 POLARSSL_CIPHER_AES_128_GCM,
HannesTschofenig 0:796d0f61a05b 349 POLARSSL_MODE_GCM,
HannesTschofenig 0:796d0f61a05b 350 128,
HannesTschofenig 0:796d0f61a05b 351 "AES-128-GCM",
HannesTschofenig 0:796d0f61a05b 352 12,
HannesTschofenig 0:796d0f61a05b 353 1,
HannesTschofenig 0:796d0f61a05b 354 16,
HannesTschofenig 0:796d0f61a05b 355 &gcm_aes_info
HannesTschofenig 0:796d0f61a05b 356 };
HannesTschofenig 0:796d0f61a05b 357
HannesTschofenig 0:796d0f61a05b 358 const cipher_info_t aes_192_gcm_info = {
HannesTschofenig 0:796d0f61a05b 359 POLARSSL_CIPHER_AES_192_GCM,
HannesTschofenig 0:796d0f61a05b 360 POLARSSL_MODE_GCM,
HannesTschofenig 0:796d0f61a05b 361 192,
HannesTschofenig 0:796d0f61a05b 362 "AES-192-GCM",
HannesTschofenig 0:796d0f61a05b 363 12,
HannesTschofenig 0:796d0f61a05b 364 1,
HannesTschofenig 0:796d0f61a05b 365 16,
HannesTschofenig 0:796d0f61a05b 366 &gcm_aes_info
HannesTschofenig 0:796d0f61a05b 367 };
HannesTschofenig 0:796d0f61a05b 368
HannesTschofenig 0:796d0f61a05b 369 const cipher_info_t aes_256_gcm_info = {
HannesTschofenig 0:796d0f61a05b 370 POLARSSL_CIPHER_AES_256_GCM,
HannesTschofenig 0:796d0f61a05b 371 POLARSSL_MODE_GCM,
HannesTschofenig 0:796d0f61a05b 372 256,
HannesTschofenig 0:796d0f61a05b 373 "AES-256-GCM",
HannesTschofenig 0:796d0f61a05b 374 12,
HannesTschofenig 0:796d0f61a05b 375 1,
HannesTschofenig 0:796d0f61a05b 376 16,
HannesTschofenig 0:796d0f61a05b 377 &gcm_aes_info
HannesTschofenig 0:796d0f61a05b 378 };
HannesTschofenig 0:796d0f61a05b 379 #endif /* POLARSSL_GCM_C */
HannesTschofenig 0:796d0f61a05b 380
HannesTschofenig 0:796d0f61a05b 381 #endif /* POLARSSL_AES_C */
HannesTschofenig 0:796d0f61a05b 382
HannesTschofenig 0:796d0f61a05b 383 #if defined(POLARSSL_CAMELLIA_C)
HannesTschofenig 0:796d0f61a05b 384
HannesTschofenig 0:796d0f61a05b 385 static int camellia_crypt_ecb_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 386 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 387 {
HannesTschofenig 0:796d0f61a05b 388 return camellia_crypt_ecb( (camellia_context *) ctx, operation, input,
HannesTschofenig 0:796d0f61a05b 389 output );
HannesTschofenig 0:796d0f61a05b 390 }
HannesTschofenig 0:796d0f61a05b 391
HannesTschofenig 0:796d0f61a05b 392 static int camellia_crypt_cbc_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 393 size_t length, unsigned char *iv,
HannesTschofenig 0:796d0f61a05b 394 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 395 {
HannesTschofenig 0:796d0f61a05b 396 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 397 return camellia_crypt_cbc( (camellia_context *) ctx, operation, length, iv,
HannesTschofenig 0:796d0f61a05b 398 input, output );
HannesTschofenig 0:796d0f61a05b 399 #else
HannesTschofenig 0:796d0f61a05b 400 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 401 ((void) operation);
HannesTschofenig 0:796d0f61a05b 402 ((void) length);
HannesTschofenig 0:796d0f61a05b 403 ((void) iv);
HannesTschofenig 0:796d0f61a05b 404 ((void) input);
HannesTschofenig 0:796d0f61a05b 405 ((void) output);
HannesTschofenig 0:796d0f61a05b 406
HannesTschofenig 0:796d0f61a05b 407 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 408 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 409 }
HannesTschofenig 0:796d0f61a05b 410
HannesTschofenig 0:796d0f61a05b 411 static int camellia_crypt_cfb128_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 412 size_t length, size_t *iv_off, unsigned char *iv,
HannesTschofenig 0:796d0f61a05b 413 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 414 {
HannesTschofenig 0:796d0f61a05b 415 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 416 return camellia_crypt_cfb128( (camellia_context *) ctx, operation, length,
HannesTschofenig 0:796d0f61a05b 417 iv_off, iv, input, output );
HannesTschofenig 0:796d0f61a05b 418 #else
HannesTschofenig 0:796d0f61a05b 419 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 420 ((void) operation);
HannesTschofenig 0:796d0f61a05b 421 ((void) length);
HannesTschofenig 0:796d0f61a05b 422 ((void) iv_off);
HannesTschofenig 0:796d0f61a05b 423 ((void) iv);
HannesTschofenig 0:796d0f61a05b 424 ((void) input);
HannesTschofenig 0:796d0f61a05b 425 ((void) output);
HannesTschofenig 0:796d0f61a05b 426
HannesTschofenig 0:796d0f61a05b 427 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 428 #endif /* POLARSSL_CIPHER_MODE_CFB */
HannesTschofenig 0:796d0f61a05b 429 }
HannesTschofenig 0:796d0f61a05b 430
HannesTschofenig 0:796d0f61a05b 431 static int camellia_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
HannesTschofenig 0:796d0f61a05b 432 unsigned char *nonce_counter, unsigned char *stream_block,
HannesTschofenig 0:796d0f61a05b 433 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 434 {
HannesTschofenig 0:796d0f61a05b 435 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 436 return camellia_crypt_ctr( (camellia_context *) ctx, length, nc_off,
HannesTschofenig 0:796d0f61a05b 437 nonce_counter, stream_block, input, output );
HannesTschofenig 0:796d0f61a05b 438 #else
HannesTschofenig 0:796d0f61a05b 439 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 440 ((void) length);
HannesTschofenig 0:796d0f61a05b 441 ((void) nc_off);
HannesTschofenig 0:796d0f61a05b 442 ((void) nonce_counter);
HannesTschofenig 0:796d0f61a05b 443 ((void) stream_block);
HannesTschofenig 0:796d0f61a05b 444 ((void) input);
HannesTschofenig 0:796d0f61a05b 445 ((void) output);
HannesTschofenig 0:796d0f61a05b 446
HannesTschofenig 0:796d0f61a05b 447 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 448 #endif /* POLARSSL_CIPHER_MODE_CTR */
HannesTschofenig 0:796d0f61a05b 449 }
HannesTschofenig 0:796d0f61a05b 450
HannesTschofenig 0:796d0f61a05b 451 static int camellia_setkey_dec_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 452 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 453 {
HannesTschofenig 0:796d0f61a05b 454 return camellia_setkey_dec( (camellia_context *) ctx, key, key_length );
HannesTschofenig 0:796d0f61a05b 455 }
HannesTschofenig 0:796d0f61a05b 456
HannesTschofenig 0:796d0f61a05b 457 static int camellia_setkey_enc_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 458 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 459 {
HannesTschofenig 0:796d0f61a05b 460 return camellia_setkey_enc( (camellia_context *) ctx, key, key_length );
HannesTschofenig 0:796d0f61a05b 461 }
HannesTschofenig 0:796d0f61a05b 462
HannesTschofenig 0:796d0f61a05b 463 static void * camellia_ctx_alloc( void )
HannesTschofenig 0:796d0f61a05b 464 {
HannesTschofenig 0:796d0f61a05b 465 return polarssl_malloc( sizeof( camellia_context ) );
HannesTschofenig 0:796d0f61a05b 466 }
HannesTschofenig 0:796d0f61a05b 467
HannesTschofenig 0:796d0f61a05b 468 static void camellia_ctx_free( void *ctx )
HannesTschofenig 0:796d0f61a05b 469 {
HannesTschofenig 0:796d0f61a05b 470 polarssl_free( ctx );
HannesTschofenig 0:796d0f61a05b 471 }
HannesTschofenig 0:796d0f61a05b 472
HannesTschofenig 0:796d0f61a05b 473 const cipher_base_t camellia_info = {
HannesTschofenig 0:796d0f61a05b 474 POLARSSL_CIPHER_ID_CAMELLIA,
HannesTschofenig 0:796d0f61a05b 475 camellia_crypt_ecb_wrap,
HannesTschofenig 0:796d0f61a05b 476 camellia_crypt_cbc_wrap,
HannesTschofenig 0:796d0f61a05b 477 camellia_crypt_cfb128_wrap,
HannesTschofenig 0:796d0f61a05b 478 camellia_crypt_ctr_wrap,
HannesTschofenig 0:796d0f61a05b 479 NULL,
HannesTschofenig 0:796d0f61a05b 480 camellia_setkey_enc_wrap,
HannesTschofenig 0:796d0f61a05b 481 camellia_setkey_dec_wrap,
HannesTschofenig 0:796d0f61a05b 482 camellia_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 483 camellia_ctx_free
HannesTschofenig 0:796d0f61a05b 484 };
HannesTschofenig 0:796d0f61a05b 485
HannesTschofenig 0:796d0f61a05b 486 const cipher_info_t camellia_128_ecb_info = {
HannesTschofenig 0:796d0f61a05b 487 POLARSSL_CIPHER_CAMELLIA_128_ECB,
HannesTschofenig 0:796d0f61a05b 488 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 489 128,
HannesTschofenig 0:796d0f61a05b 490 "CAMELLIA-128-ECB",
HannesTschofenig 0:796d0f61a05b 491 16,
HannesTschofenig 0:796d0f61a05b 492 0,
HannesTschofenig 0:796d0f61a05b 493 16,
HannesTschofenig 0:796d0f61a05b 494 &camellia_info
HannesTschofenig 0:796d0f61a05b 495 };
HannesTschofenig 0:796d0f61a05b 496
HannesTschofenig 0:796d0f61a05b 497 const cipher_info_t camellia_192_ecb_info = {
HannesTschofenig 0:796d0f61a05b 498 POLARSSL_CIPHER_CAMELLIA_192_ECB,
HannesTschofenig 0:796d0f61a05b 499 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 500 192,
HannesTschofenig 0:796d0f61a05b 501 "CAMELLIA-192-ECB",
HannesTschofenig 0:796d0f61a05b 502 16,
HannesTschofenig 0:796d0f61a05b 503 0,
HannesTschofenig 0:796d0f61a05b 504 16,
HannesTschofenig 0:796d0f61a05b 505 &camellia_info
HannesTschofenig 0:796d0f61a05b 506 };
HannesTschofenig 0:796d0f61a05b 507
HannesTschofenig 0:796d0f61a05b 508 const cipher_info_t camellia_256_ecb_info = {
HannesTschofenig 0:796d0f61a05b 509 POLARSSL_CIPHER_CAMELLIA_256_ECB,
HannesTschofenig 0:796d0f61a05b 510 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 511 256,
HannesTschofenig 0:796d0f61a05b 512 "CAMELLIA-256-ECB",
HannesTschofenig 0:796d0f61a05b 513 16,
HannesTschofenig 0:796d0f61a05b 514 0,
HannesTschofenig 0:796d0f61a05b 515 16,
HannesTschofenig 0:796d0f61a05b 516 &camellia_info
HannesTschofenig 0:796d0f61a05b 517 };
HannesTschofenig 0:796d0f61a05b 518
HannesTschofenig 0:796d0f61a05b 519 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 520 const cipher_info_t camellia_128_cbc_info = {
HannesTschofenig 0:796d0f61a05b 521 POLARSSL_CIPHER_CAMELLIA_128_CBC,
HannesTschofenig 0:796d0f61a05b 522 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 523 128,
HannesTschofenig 0:796d0f61a05b 524 "CAMELLIA-128-CBC",
HannesTschofenig 0:796d0f61a05b 525 16,
HannesTschofenig 0:796d0f61a05b 526 0,
HannesTschofenig 0:796d0f61a05b 527 16,
HannesTschofenig 0:796d0f61a05b 528 &camellia_info
HannesTschofenig 0:796d0f61a05b 529 };
HannesTschofenig 0:796d0f61a05b 530
HannesTschofenig 0:796d0f61a05b 531 const cipher_info_t camellia_192_cbc_info = {
HannesTschofenig 0:796d0f61a05b 532 POLARSSL_CIPHER_CAMELLIA_192_CBC,
HannesTschofenig 0:796d0f61a05b 533 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 534 192,
HannesTschofenig 0:796d0f61a05b 535 "CAMELLIA-192-CBC",
HannesTschofenig 0:796d0f61a05b 536 16,
HannesTschofenig 0:796d0f61a05b 537 0,
HannesTschofenig 0:796d0f61a05b 538 16,
HannesTschofenig 0:796d0f61a05b 539 &camellia_info
HannesTschofenig 0:796d0f61a05b 540 };
HannesTschofenig 0:796d0f61a05b 541
HannesTschofenig 0:796d0f61a05b 542 const cipher_info_t camellia_256_cbc_info = {
HannesTschofenig 0:796d0f61a05b 543 POLARSSL_CIPHER_CAMELLIA_256_CBC,
HannesTschofenig 0:796d0f61a05b 544 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 545 256,
HannesTschofenig 0:796d0f61a05b 546 "CAMELLIA-256-CBC",
HannesTschofenig 0:796d0f61a05b 547 16,
HannesTschofenig 0:796d0f61a05b 548 0,
HannesTschofenig 0:796d0f61a05b 549 16,
HannesTschofenig 0:796d0f61a05b 550 &camellia_info
HannesTschofenig 0:796d0f61a05b 551 };
HannesTschofenig 0:796d0f61a05b 552 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 553
HannesTschofenig 0:796d0f61a05b 554 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 555 const cipher_info_t camellia_128_cfb128_info = {
HannesTschofenig 0:796d0f61a05b 556 POLARSSL_CIPHER_CAMELLIA_128_CFB128,
HannesTschofenig 0:796d0f61a05b 557 POLARSSL_MODE_CFB,
HannesTschofenig 0:796d0f61a05b 558 128,
HannesTschofenig 0:796d0f61a05b 559 "CAMELLIA-128-CFB128",
HannesTschofenig 0:796d0f61a05b 560 16,
HannesTschofenig 0:796d0f61a05b 561 0,
HannesTschofenig 0:796d0f61a05b 562 16,
HannesTschofenig 0:796d0f61a05b 563 &camellia_info
HannesTschofenig 0:796d0f61a05b 564 };
HannesTschofenig 0:796d0f61a05b 565
HannesTschofenig 0:796d0f61a05b 566 const cipher_info_t camellia_192_cfb128_info = {
HannesTschofenig 0:796d0f61a05b 567 POLARSSL_CIPHER_CAMELLIA_192_CFB128,
HannesTschofenig 0:796d0f61a05b 568 POLARSSL_MODE_CFB,
HannesTschofenig 0:796d0f61a05b 569 192,
HannesTschofenig 0:796d0f61a05b 570 "CAMELLIA-192-CFB128",
HannesTschofenig 0:796d0f61a05b 571 16,
HannesTschofenig 0:796d0f61a05b 572 0,
HannesTschofenig 0:796d0f61a05b 573 16,
HannesTschofenig 0:796d0f61a05b 574 &camellia_info
HannesTschofenig 0:796d0f61a05b 575 };
HannesTschofenig 0:796d0f61a05b 576
HannesTschofenig 0:796d0f61a05b 577 const cipher_info_t camellia_256_cfb128_info = {
HannesTschofenig 0:796d0f61a05b 578 POLARSSL_CIPHER_CAMELLIA_256_CFB128,
HannesTschofenig 0:796d0f61a05b 579 POLARSSL_MODE_CFB,
HannesTschofenig 0:796d0f61a05b 580 256,
HannesTschofenig 0:796d0f61a05b 581 "CAMELLIA-256-CFB128",
HannesTschofenig 0:796d0f61a05b 582 16,
HannesTschofenig 0:796d0f61a05b 583 0,
HannesTschofenig 0:796d0f61a05b 584 16,
HannesTschofenig 0:796d0f61a05b 585 &camellia_info
HannesTschofenig 0:796d0f61a05b 586 };
HannesTschofenig 0:796d0f61a05b 587 #endif /* POLARSSL_CIPHER_MODE_CFB */
HannesTschofenig 0:796d0f61a05b 588
HannesTschofenig 0:796d0f61a05b 589 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 590 const cipher_info_t camellia_128_ctr_info = {
HannesTschofenig 0:796d0f61a05b 591 POLARSSL_CIPHER_CAMELLIA_128_CTR,
HannesTschofenig 0:796d0f61a05b 592 POLARSSL_MODE_CTR,
HannesTschofenig 0:796d0f61a05b 593 128,
HannesTschofenig 0:796d0f61a05b 594 "CAMELLIA-128-CTR",
HannesTschofenig 0:796d0f61a05b 595 16,
HannesTschofenig 0:796d0f61a05b 596 0,
HannesTschofenig 0:796d0f61a05b 597 16,
HannesTschofenig 0:796d0f61a05b 598 &camellia_info
HannesTschofenig 0:796d0f61a05b 599 };
HannesTschofenig 0:796d0f61a05b 600
HannesTschofenig 0:796d0f61a05b 601 const cipher_info_t camellia_192_ctr_info = {
HannesTschofenig 0:796d0f61a05b 602 POLARSSL_CIPHER_CAMELLIA_192_CTR,
HannesTschofenig 0:796d0f61a05b 603 POLARSSL_MODE_CTR,
HannesTschofenig 0:796d0f61a05b 604 192,
HannesTschofenig 0:796d0f61a05b 605 "CAMELLIA-192-CTR",
HannesTschofenig 0:796d0f61a05b 606 16,
HannesTschofenig 0:796d0f61a05b 607 0,
HannesTschofenig 0:796d0f61a05b 608 16,
HannesTschofenig 0:796d0f61a05b 609 &camellia_info
HannesTschofenig 0:796d0f61a05b 610 };
HannesTschofenig 0:796d0f61a05b 611
HannesTschofenig 0:796d0f61a05b 612 const cipher_info_t camellia_256_ctr_info = {
HannesTschofenig 0:796d0f61a05b 613 POLARSSL_CIPHER_CAMELLIA_256_CTR,
HannesTschofenig 0:796d0f61a05b 614 POLARSSL_MODE_CTR,
HannesTschofenig 0:796d0f61a05b 615 256,
HannesTschofenig 0:796d0f61a05b 616 "CAMELLIA-256-CTR",
HannesTschofenig 0:796d0f61a05b 617 16,
HannesTschofenig 0:796d0f61a05b 618 0,
HannesTschofenig 0:796d0f61a05b 619 16,
HannesTschofenig 0:796d0f61a05b 620 &camellia_info
HannesTschofenig 0:796d0f61a05b 621 };
HannesTschofenig 0:796d0f61a05b 622 #endif /* POLARSSL_CIPHER_MODE_CTR */
HannesTschofenig 0:796d0f61a05b 623
HannesTschofenig 0:796d0f61a05b 624 #if defined(POLARSSL_GCM_C)
HannesTschofenig 0:796d0f61a05b 625 static int gcm_camellia_setkey_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 626 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 627 {
HannesTschofenig 0:796d0f61a05b 628 return gcm_init( (gcm_context *) ctx, POLARSSL_CIPHER_ID_CAMELLIA,
HannesTschofenig 0:796d0f61a05b 629 key, key_length );
HannesTschofenig 0:796d0f61a05b 630 }
HannesTschofenig 0:796d0f61a05b 631
HannesTschofenig 0:796d0f61a05b 632 const cipher_base_t gcm_camellia_info = {
HannesTschofenig 0:796d0f61a05b 633 POLARSSL_CIPHER_ID_CAMELLIA,
HannesTschofenig 0:796d0f61a05b 634 NULL,
HannesTschofenig 0:796d0f61a05b 635 NULL,
HannesTschofenig 0:796d0f61a05b 636 NULL,
HannesTschofenig 0:796d0f61a05b 637 NULL,
HannesTschofenig 0:796d0f61a05b 638 NULL,
HannesTschofenig 0:796d0f61a05b 639 gcm_camellia_setkey_wrap,
HannesTschofenig 0:796d0f61a05b 640 gcm_camellia_setkey_wrap,
HannesTschofenig 0:796d0f61a05b 641 gcm_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 642 gcm_ctx_free,
HannesTschofenig 0:796d0f61a05b 643 };
HannesTschofenig 0:796d0f61a05b 644
HannesTschofenig 0:796d0f61a05b 645 const cipher_info_t camellia_128_gcm_info = {
HannesTschofenig 0:796d0f61a05b 646 POLARSSL_CIPHER_CAMELLIA_128_GCM,
HannesTschofenig 0:796d0f61a05b 647 POLARSSL_MODE_GCM,
HannesTschofenig 0:796d0f61a05b 648 128,
HannesTschofenig 0:796d0f61a05b 649 "CAMELLIA-128-GCM",
HannesTschofenig 0:796d0f61a05b 650 12,
HannesTschofenig 0:796d0f61a05b 651 1,
HannesTschofenig 0:796d0f61a05b 652 16,
HannesTschofenig 0:796d0f61a05b 653 &gcm_camellia_info
HannesTschofenig 0:796d0f61a05b 654 };
HannesTschofenig 0:796d0f61a05b 655
HannesTschofenig 0:796d0f61a05b 656 const cipher_info_t camellia_192_gcm_info = {
HannesTschofenig 0:796d0f61a05b 657 POLARSSL_CIPHER_CAMELLIA_192_GCM,
HannesTschofenig 0:796d0f61a05b 658 POLARSSL_MODE_GCM,
HannesTschofenig 0:796d0f61a05b 659 192,
HannesTschofenig 0:796d0f61a05b 660 "CAMELLIA-192-GCM",
HannesTschofenig 0:796d0f61a05b 661 12,
HannesTschofenig 0:796d0f61a05b 662 1,
HannesTschofenig 0:796d0f61a05b 663 16,
HannesTschofenig 0:796d0f61a05b 664 &gcm_camellia_info
HannesTschofenig 0:796d0f61a05b 665 };
HannesTschofenig 0:796d0f61a05b 666
HannesTschofenig 0:796d0f61a05b 667 const cipher_info_t camellia_256_gcm_info = {
HannesTschofenig 0:796d0f61a05b 668 POLARSSL_CIPHER_CAMELLIA_256_GCM,
HannesTschofenig 0:796d0f61a05b 669 POLARSSL_MODE_GCM,
HannesTschofenig 0:796d0f61a05b 670 256,
HannesTschofenig 0:796d0f61a05b 671 "CAMELLIA-256-GCM",
HannesTschofenig 0:796d0f61a05b 672 12,
HannesTschofenig 0:796d0f61a05b 673 1,
HannesTschofenig 0:796d0f61a05b 674 16,
HannesTschofenig 0:796d0f61a05b 675 &gcm_camellia_info
HannesTschofenig 0:796d0f61a05b 676 };
HannesTschofenig 0:796d0f61a05b 677 #endif /* POLARSSL_GCM_C */
HannesTschofenig 0:796d0f61a05b 678
HannesTschofenig 0:796d0f61a05b 679 #endif /* POLARSSL_CAMELLIA_C */
HannesTschofenig 0:796d0f61a05b 680
HannesTschofenig 0:796d0f61a05b 681 #if defined(POLARSSL_DES_C)
HannesTschofenig 0:796d0f61a05b 682
HannesTschofenig 0:796d0f61a05b 683 static int des_crypt_ecb_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 684 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 685 {
HannesTschofenig 0:796d0f61a05b 686 ((void) operation);
HannesTschofenig 0:796d0f61a05b 687 return des_crypt_ecb( (des_context *) ctx, input, output );
HannesTschofenig 0:796d0f61a05b 688 }
HannesTschofenig 0:796d0f61a05b 689
HannesTschofenig 0:796d0f61a05b 690 static int des3_crypt_ecb_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 691 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 692 {
HannesTschofenig 0:796d0f61a05b 693 ((void) operation);
HannesTschofenig 0:796d0f61a05b 694 return des3_crypt_ecb( (des3_context *) ctx, input, output );
HannesTschofenig 0:796d0f61a05b 695 }
HannesTschofenig 0:796d0f61a05b 696
HannesTschofenig 0:796d0f61a05b 697 static int des_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
HannesTschofenig 0:796d0f61a05b 698 unsigned char *iv, const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 699 {
HannesTschofenig 0:796d0f61a05b 700 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 701 return des_crypt_cbc( (des_context *) ctx, operation, length, iv, input,
HannesTschofenig 0:796d0f61a05b 702 output );
HannesTschofenig 0:796d0f61a05b 703 #else
HannesTschofenig 0:796d0f61a05b 704 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 705 ((void) operation);
HannesTschofenig 0:796d0f61a05b 706 ((void) length);
HannesTschofenig 0:796d0f61a05b 707 ((void) iv);
HannesTschofenig 0:796d0f61a05b 708 ((void) input);
HannesTschofenig 0:796d0f61a05b 709 ((void) output);
HannesTschofenig 0:796d0f61a05b 710
HannesTschofenig 0:796d0f61a05b 711 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 712 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 713 }
HannesTschofenig 0:796d0f61a05b 714
HannesTschofenig 0:796d0f61a05b 715 static int des3_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
HannesTschofenig 0:796d0f61a05b 716 unsigned char *iv, const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 717 {
HannesTschofenig 0:796d0f61a05b 718 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 719 return des3_crypt_cbc( (des3_context *) ctx, operation, length, iv, input,
HannesTschofenig 0:796d0f61a05b 720 output );
HannesTschofenig 0:796d0f61a05b 721 #else
HannesTschofenig 0:796d0f61a05b 722 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 723 ((void) operation);
HannesTschofenig 0:796d0f61a05b 724 ((void) length);
HannesTschofenig 0:796d0f61a05b 725 ((void) iv);
HannesTschofenig 0:796d0f61a05b 726 ((void) input);
HannesTschofenig 0:796d0f61a05b 727 ((void) output);
HannesTschofenig 0:796d0f61a05b 728
HannesTschofenig 0:796d0f61a05b 729 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 730 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 731 }
HannesTschofenig 0:796d0f61a05b 732
HannesTschofenig 0:796d0f61a05b 733 static int des_crypt_cfb128_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 734 size_t length, size_t *iv_off, unsigned char *iv,
HannesTschofenig 0:796d0f61a05b 735 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 736 {
HannesTschofenig 0:796d0f61a05b 737 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 738 ((void) operation);
HannesTschofenig 0:796d0f61a05b 739 ((void) length);
HannesTschofenig 0:796d0f61a05b 740 ((void) iv_off);
HannesTschofenig 0:796d0f61a05b 741 ((void) iv);
HannesTschofenig 0:796d0f61a05b 742 ((void) input);
HannesTschofenig 0:796d0f61a05b 743 ((void) output);
HannesTschofenig 0:796d0f61a05b 744
HannesTschofenig 0:796d0f61a05b 745 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 746 }
HannesTschofenig 0:796d0f61a05b 747
HannesTschofenig 0:796d0f61a05b 748 static int des_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
HannesTschofenig 0:796d0f61a05b 749 unsigned char *nonce_counter, unsigned char *stream_block,
HannesTschofenig 0:796d0f61a05b 750 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 751 {
HannesTschofenig 0:796d0f61a05b 752 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 753 ((void) length);
HannesTschofenig 0:796d0f61a05b 754 ((void) nc_off);
HannesTschofenig 0:796d0f61a05b 755 ((void) nonce_counter);
HannesTschofenig 0:796d0f61a05b 756 ((void) stream_block);
HannesTschofenig 0:796d0f61a05b 757 ((void) input);
HannesTschofenig 0:796d0f61a05b 758 ((void) output);
HannesTschofenig 0:796d0f61a05b 759
HannesTschofenig 0:796d0f61a05b 760 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 761 }
HannesTschofenig 0:796d0f61a05b 762
HannesTschofenig 0:796d0f61a05b 763 static int des_setkey_dec_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 764 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 765 {
HannesTschofenig 0:796d0f61a05b 766 ((void) key_length);
HannesTschofenig 0:796d0f61a05b 767
HannesTschofenig 0:796d0f61a05b 768 return des_setkey_dec( (des_context *) ctx, key );
HannesTschofenig 0:796d0f61a05b 769 }
HannesTschofenig 0:796d0f61a05b 770
HannesTschofenig 0:796d0f61a05b 771 static int des_setkey_enc_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 772 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 773 {
HannesTschofenig 0:796d0f61a05b 774 ((void) key_length);
HannesTschofenig 0:796d0f61a05b 775
HannesTschofenig 0:796d0f61a05b 776 return des_setkey_enc( (des_context *) ctx, key );
HannesTschofenig 0:796d0f61a05b 777 }
HannesTschofenig 0:796d0f61a05b 778
HannesTschofenig 0:796d0f61a05b 779 static int des3_set2key_dec_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 780 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 781 {
HannesTschofenig 0:796d0f61a05b 782 ((void) key_length);
HannesTschofenig 0:796d0f61a05b 783
HannesTschofenig 0:796d0f61a05b 784 return des3_set2key_dec( (des3_context *) ctx, key );
HannesTschofenig 0:796d0f61a05b 785 }
HannesTschofenig 0:796d0f61a05b 786
HannesTschofenig 0:796d0f61a05b 787 static int des3_set2key_enc_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 788 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 789 {
HannesTschofenig 0:796d0f61a05b 790 ((void) key_length);
HannesTschofenig 0:796d0f61a05b 791
HannesTschofenig 0:796d0f61a05b 792 return des3_set2key_enc( (des3_context *) ctx, key );
HannesTschofenig 0:796d0f61a05b 793 }
HannesTschofenig 0:796d0f61a05b 794
HannesTschofenig 0:796d0f61a05b 795 static int des3_set3key_dec_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 796 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 797 {
HannesTschofenig 0:796d0f61a05b 798 ((void) key_length);
HannesTschofenig 0:796d0f61a05b 799
HannesTschofenig 0:796d0f61a05b 800 return des3_set3key_dec( (des3_context *) ctx, key );
HannesTschofenig 0:796d0f61a05b 801 }
HannesTschofenig 0:796d0f61a05b 802
HannesTschofenig 0:796d0f61a05b 803 static int des3_set3key_enc_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 804 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 805 {
HannesTschofenig 0:796d0f61a05b 806 ((void) key_length);
HannesTschofenig 0:796d0f61a05b 807
HannesTschofenig 0:796d0f61a05b 808 return des3_set3key_enc( (des3_context *) ctx, key );
HannesTschofenig 0:796d0f61a05b 809 }
HannesTschofenig 0:796d0f61a05b 810
HannesTschofenig 0:796d0f61a05b 811 static void * des_ctx_alloc( void )
HannesTschofenig 0:796d0f61a05b 812 {
HannesTschofenig 0:796d0f61a05b 813 return polarssl_malloc( sizeof( des_context ) );
HannesTschofenig 0:796d0f61a05b 814 }
HannesTschofenig 0:796d0f61a05b 815
HannesTschofenig 0:796d0f61a05b 816 static void * des3_ctx_alloc( void )
HannesTschofenig 0:796d0f61a05b 817 {
HannesTschofenig 0:796d0f61a05b 818 return polarssl_malloc( sizeof( des3_context ) );
HannesTschofenig 0:796d0f61a05b 819 }
HannesTschofenig 0:796d0f61a05b 820
HannesTschofenig 0:796d0f61a05b 821 static void des_ctx_free( void *ctx )
HannesTschofenig 0:796d0f61a05b 822 {
HannesTschofenig 0:796d0f61a05b 823 polarssl_free( ctx );
HannesTschofenig 0:796d0f61a05b 824 }
HannesTschofenig 0:796d0f61a05b 825
HannesTschofenig 0:796d0f61a05b 826 const cipher_base_t des_info = {
HannesTschofenig 0:796d0f61a05b 827 POLARSSL_CIPHER_ID_DES,
HannesTschofenig 0:796d0f61a05b 828 des_crypt_ecb_wrap,
HannesTschofenig 0:796d0f61a05b 829 des_crypt_cbc_wrap,
HannesTschofenig 0:796d0f61a05b 830 des_crypt_cfb128_wrap,
HannesTschofenig 0:796d0f61a05b 831 des_crypt_ctr_wrap,
HannesTschofenig 0:796d0f61a05b 832 NULL,
HannesTschofenig 0:796d0f61a05b 833 des_setkey_enc_wrap,
HannesTschofenig 0:796d0f61a05b 834 des_setkey_dec_wrap,
HannesTschofenig 0:796d0f61a05b 835 des_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 836 des_ctx_free
HannesTschofenig 0:796d0f61a05b 837 };
HannesTschofenig 0:796d0f61a05b 838
HannesTschofenig 0:796d0f61a05b 839 const cipher_info_t des_ecb_info = {
HannesTschofenig 0:796d0f61a05b 840 POLARSSL_CIPHER_DES_ECB,
HannesTschofenig 0:796d0f61a05b 841 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 842 POLARSSL_KEY_LENGTH_DES,
HannesTschofenig 0:796d0f61a05b 843 "DES-ECB",
HannesTschofenig 0:796d0f61a05b 844 8,
HannesTschofenig 0:796d0f61a05b 845 0,
HannesTschofenig 0:796d0f61a05b 846 8,
HannesTschofenig 0:796d0f61a05b 847 &des_info
HannesTschofenig 0:796d0f61a05b 848 };
HannesTschofenig 0:796d0f61a05b 849
HannesTschofenig 0:796d0f61a05b 850 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 851 const cipher_info_t des_cbc_info = {
HannesTschofenig 0:796d0f61a05b 852 POLARSSL_CIPHER_DES_CBC,
HannesTschofenig 0:796d0f61a05b 853 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 854 POLARSSL_KEY_LENGTH_DES,
HannesTschofenig 0:796d0f61a05b 855 "DES-CBC",
HannesTschofenig 0:796d0f61a05b 856 8,
HannesTschofenig 0:796d0f61a05b 857 0,
HannesTschofenig 0:796d0f61a05b 858 8,
HannesTschofenig 0:796d0f61a05b 859 &des_info
HannesTschofenig 0:796d0f61a05b 860 };
HannesTschofenig 0:796d0f61a05b 861 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 862
HannesTschofenig 0:796d0f61a05b 863 const cipher_base_t des_ede_info = {
HannesTschofenig 0:796d0f61a05b 864 POLARSSL_CIPHER_ID_DES,
HannesTschofenig 0:796d0f61a05b 865 des3_crypt_ecb_wrap,
HannesTschofenig 0:796d0f61a05b 866 des3_crypt_cbc_wrap,
HannesTschofenig 0:796d0f61a05b 867 des_crypt_cfb128_wrap,
HannesTschofenig 0:796d0f61a05b 868 des_crypt_ctr_wrap,
HannesTschofenig 0:796d0f61a05b 869 NULL,
HannesTschofenig 0:796d0f61a05b 870 des3_set2key_enc_wrap,
HannesTschofenig 0:796d0f61a05b 871 des3_set2key_dec_wrap,
HannesTschofenig 0:796d0f61a05b 872 des3_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 873 des_ctx_free
HannesTschofenig 0:796d0f61a05b 874 };
HannesTschofenig 0:796d0f61a05b 875
HannesTschofenig 0:796d0f61a05b 876 const cipher_info_t des_ede_ecb_info = {
HannesTschofenig 0:796d0f61a05b 877 POLARSSL_CIPHER_DES_EDE_ECB,
HannesTschofenig 0:796d0f61a05b 878 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 879 POLARSSL_KEY_LENGTH_DES_EDE,
HannesTschofenig 0:796d0f61a05b 880 "DES-EDE-ECB",
HannesTschofenig 0:796d0f61a05b 881 8,
HannesTschofenig 0:796d0f61a05b 882 0,
HannesTschofenig 0:796d0f61a05b 883 8,
HannesTschofenig 0:796d0f61a05b 884 &des_ede_info
HannesTschofenig 0:796d0f61a05b 885 };
HannesTschofenig 0:796d0f61a05b 886
HannesTschofenig 0:796d0f61a05b 887 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 888 const cipher_info_t des_ede_cbc_info = {
HannesTschofenig 0:796d0f61a05b 889 POLARSSL_CIPHER_DES_EDE_CBC,
HannesTschofenig 0:796d0f61a05b 890 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 891 POLARSSL_KEY_LENGTH_DES_EDE,
HannesTschofenig 0:796d0f61a05b 892 "DES-EDE-CBC",
HannesTschofenig 0:796d0f61a05b 893 8,
HannesTschofenig 0:796d0f61a05b 894 0,
HannesTschofenig 0:796d0f61a05b 895 8,
HannesTschofenig 0:796d0f61a05b 896 &des_ede_info
HannesTschofenig 0:796d0f61a05b 897 };
HannesTschofenig 0:796d0f61a05b 898 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 899
HannesTschofenig 0:796d0f61a05b 900 const cipher_base_t des_ede3_info = {
HannesTschofenig 0:796d0f61a05b 901 POLARSSL_CIPHER_ID_DES,
HannesTschofenig 0:796d0f61a05b 902 des3_crypt_ecb_wrap,
HannesTschofenig 0:796d0f61a05b 903 des3_crypt_cbc_wrap,
HannesTschofenig 0:796d0f61a05b 904 des_crypt_cfb128_wrap,
HannesTschofenig 0:796d0f61a05b 905 des_crypt_ctr_wrap,
HannesTschofenig 0:796d0f61a05b 906 NULL,
HannesTschofenig 0:796d0f61a05b 907 des3_set3key_enc_wrap,
HannesTschofenig 0:796d0f61a05b 908 des3_set3key_dec_wrap,
HannesTschofenig 0:796d0f61a05b 909 des3_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 910 des_ctx_free
HannesTschofenig 0:796d0f61a05b 911 };
HannesTschofenig 0:796d0f61a05b 912
HannesTschofenig 0:796d0f61a05b 913 const cipher_info_t des_ede3_ecb_info = {
HannesTschofenig 0:796d0f61a05b 914 POLARSSL_CIPHER_DES_EDE3_ECB,
HannesTschofenig 0:796d0f61a05b 915 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 916 POLARSSL_KEY_LENGTH_DES_EDE3,
HannesTschofenig 0:796d0f61a05b 917 "DES-EDE3-ECB",
HannesTschofenig 0:796d0f61a05b 918 8,
HannesTschofenig 0:796d0f61a05b 919 0,
HannesTschofenig 0:796d0f61a05b 920 8,
HannesTschofenig 0:796d0f61a05b 921 &des_ede3_info
HannesTschofenig 0:796d0f61a05b 922 };
HannesTschofenig 0:796d0f61a05b 923 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 924 const cipher_info_t des_ede3_cbc_info = {
HannesTschofenig 0:796d0f61a05b 925 POLARSSL_CIPHER_DES_EDE3_CBC,
HannesTschofenig 0:796d0f61a05b 926 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 927 POLARSSL_KEY_LENGTH_DES_EDE3,
HannesTschofenig 0:796d0f61a05b 928 "DES-EDE3-CBC",
HannesTschofenig 0:796d0f61a05b 929 8,
HannesTschofenig 0:796d0f61a05b 930 0,
HannesTschofenig 0:796d0f61a05b 931 8,
HannesTschofenig 0:796d0f61a05b 932 &des_ede3_info
HannesTschofenig 0:796d0f61a05b 933 };
HannesTschofenig 0:796d0f61a05b 934 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 935 #endif /* POLARSSL_DES_C */
HannesTschofenig 0:796d0f61a05b 936
HannesTschofenig 0:796d0f61a05b 937 #if defined(POLARSSL_BLOWFISH_C)
HannesTschofenig 0:796d0f61a05b 938
HannesTschofenig 0:796d0f61a05b 939 static int blowfish_crypt_ecb_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 940 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 941 {
HannesTschofenig 0:796d0f61a05b 942 return blowfish_crypt_ecb( (blowfish_context *) ctx, operation, input,
HannesTschofenig 0:796d0f61a05b 943 output );
HannesTschofenig 0:796d0f61a05b 944 }
HannesTschofenig 0:796d0f61a05b 945
HannesTschofenig 0:796d0f61a05b 946 static int blowfish_crypt_cbc_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 947 size_t length, unsigned char *iv, const unsigned char *input,
HannesTschofenig 0:796d0f61a05b 948 unsigned char *output )
HannesTschofenig 0:796d0f61a05b 949 {
HannesTschofenig 0:796d0f61a05b 950 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 951 return blowfish_crypt_cbc( (blowfish_context *) ctx, operation, length, iv,
HannesTschofenig 0:796d0f61a05b 952 input, output );
HannesTschofenig 0:796d0f61a05b 953 #else
HannesTschofenig 0:796d0f61a05b 954 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 955 ((void) operation);
HannesTschofenig 0:796d0f61a05b 956 ((void) length);
HannesTschofenig 0:796d0f61a05b 957 ((void) iv);
HannesTschofenig 0:796d0f61a05b 958 ((void) input);
HannesTschofenig 0:796d0f61a05b 959 ((void) output);
HannesTschofenig 0:796d0f61a05b 960
HannesTschofenig 0:796d0f61a05b 961 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 962 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 963 }
HannesTschofenig 0:796d0f61a05b 964
HannesTschofenig 0:796d0f61a05b 965 static int blowfish_crypt_cfb64_wrap( void *ctx, operation_t operation,
HannesTschofenig 0:796d0f61a05b 966 size_t length, size_t *iv_off, unsigned char *iv,
HannesTschofenig 0:796d0f61a05b 967 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 968 {
HannesTschofenig 0:796d0f61a05b 969 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 970 return blowfish_crypt_cfb64( (blowfish_context *) ctx, operation, length,
HannesTschofenig 0:796d0f61a05b 971 iv_off, iv, input, output );
HannesTschofenig 0:796d0f61a05b 972 #else
HannesTschofenig 0:796d0f61a05b 973 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 974 ((void) operation);
HannesTschofenig 0:796d0f61a05b 975 ((void) length);
HannesTschofenig 0:796d0f61a05b 976 ((void) iv_off);
HannesTschofenig 0:796d0f61a05b 977 ((void) iv);
HannesTschofenig 0:796d0f61a05b 978 ((void) input);
HannesTschofenig 0:796d0f61a05b 979 ((void) output);
HannesTschofenig 0:796d0f61a05b 980
HannesTschofenig 0:796d0f61a05b 981 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 982 #endif /* POLARSSL_CIPHER_MODE_CFB */
HannesTschofenig 0:796d0f61a05b 983 }
HannesTschofenig 0:796d0f61a05b 984
HannesTschofenig 0:796d0f61a05b 985 static int blowfish_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off,
HannesTschofenig 0:796d0f61a05b 986 unsigned char *nonce_counter, unsigned char *stream_block,
HannesTschofenig 0:796d0f61a05b 987 const unsigned char *input, unsigned char *output )
HannesTschofenig 0:796d0f61a05b 988 {
HannesTschofenig 0:796d0f61a05b 989 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 990 return blowfish_crypt_ctr( (blowfish_context *) ctx, length, nc_off,
HannesTschofenig 0:796d0f61a05b 991 nonce_counter, stream_block, input, output );
HannesTschofenig 0:796d0f61a05b 992 #else
HannesTschofenig 0:796d0f61a05b 993 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 994 ((void) length);
HannesTschofenig 0:796d0f61a05b 995 ((void) nc_off);
HannesTschofenig 0:796d0f61a05b 996 ((void) nonce_counter);
HannesTschofenig 0:796d0f61a05b 997 ((void) stream_block);
HannesTschofenig 0:796d0f61a05b 998 ((void) input);
HannesTschofenig 0:796d0f61a05b 999 ((void) output);
HannesTschofenig 0:796d0f61a05b 1000
HannesTschofenig 0:796d0f61a05b 1001 return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
HannesTschofenig 0:796d0f61a05b 1002 #endif /* POLARSSL_CIPHER_MODE_CTR */
HannesTschofenig 0:796d0f61a05b 1003 }
HannesTschofenig 0:796d0f61a05b 1004
HannesTschofenig 0:796d0f61a05b 1005 static int blowfish_setkey_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 1006 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 1007 {
HannesTschofenig 0:796d0f61a05b 1008 return blowfish_setkey( (blowfish_context *) ctx, key, key_length );
HannesTschofenig 0:796d0f61a05b 1009 }
HannesTschofenig 0:796d0f61a05b 1010
HannesTschofenig 0:796d0f61a05b 1011 static void * blowfish_ctx_alloc( void )
HannesTschofenig 0:796d0f61a05b 1012 {
HannesTschofenig 0:796d0f61a05b 1013 return polarssl_malloc( sizeof( blowfish_context ) );
HannesTschofenig 0:796d0f61a05b 1014 }
HannesTschofenig 0:796d0f61a05b 1015
HannesTschofenig 0:796d0f61a05b 1016 static void blowfish_ctx_free( void *ctx )
HannesTschofenig 0:796d0f61a05b 1017 {
HannesTschofenig 0:796d0f61a05b 1018 polarssl_free( ctx );
HannesTschofenig 0:796d0f61a05b 1019 }
HannesTschofenig 0:796d0f61a05b 1020
HannesTschofenig 0:796d0f61a05b 1021 const cipher_base_t blowfish_info = {
HannesTschofenig 0:796d0f61a05b 1022 POLARSSL_CIPHER_ID_BLOWFISH,
HannesTschofenig 0:796d0f61a05b 1023 blowfish_crypt_ecb_wrap,
HannesTschofenig 0:796d0f61a05b 1024 blowfish_crypt_cbc_wrap,
HannesTschofenig 0:796d0f61a05b 1025 blowfish_crypt_cfb64_wrap,
HannesTschofenig 0:796d0f61a05b 1026 blowfish_crypt_ctr_wrap,
HannesTschofenig 0:796d0f61a05b 1027 NULL,
HannesTschofenig 0:796d0f61a05b 1028 blowfish_setkey_wrap,
HannesTschofenig 0:796d0f61a05b 1029 blowfish_setkey_wrap,
HannesTschofenig 0:796d0f61a05b 1030 blowfish_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 1031 blowfish_ctx_free
HannesTschofenig 0:796d0f61a05b 1032 };
HannesTschofenig 0:796d0f61a05b 1033
HannesTschofenig 0:796d0f61a05b 1034 const cipher_info_t blowfish_ecb_info = {
HannesTschofenig 0:796d0f61a05b 1035 POLARSSL_CIPHER_BLOWFISH_ECB,
HannesTschofenig 0:796d0f61a05b 1036 POLARSSL_MODE_ECB,
HannesTschofenig 0:796d0f61a05b 1037 128,
HannesTschofenig 0:796d0f61a05b 1038 "BLOWFISH-ECB",
HannesTschofenig 0:796d0f61a05b 1039 8,
HannesTschofenig 0:796d0f61a05b 1040 0,
HannesTschofenig 0:796d0f61a05b 1041 8,
HannesTschofenig 0:796d0f61a05b 1042 &blowfish_info
HannesTschofenig 0:796d0f61a05b 1043 };
HannesTschofenig 0:796d0f61a05b 1044
HannesTschofenig 0:796d0f61a05b 1045 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 1046 const cipher_info_t blowfish_cbc_info = {
HannesTschofenig 0:796d0f61a05b 1047 POLARSSL_CIPHER_BLOWFISH_CBC,
HannesTschofenig 0:796d0f61a05b 1048 POLARSSL_MODE_CBC,
HannesTschofenig 0:796d0f61a05b 1049 128,
HannesTschofenig 0:796d0f61a05b 1050 "BLOWFISH-CBC",
HannesTschofenig 0:796d0f61a05b 1051 8,
HannesTschofenig 0:796d0f61a05b 1052 0,
HannesTschofenig 0:796d0f61a05b 1053 8,
HannesTschofenig 0:796d0f61a05b 1054 &blowfish_info
HannesTschofenig 0:796d0f61a05b 1055 };
HannesTschofenig 0:796d0f61a05b 1056 #endif /* POLARSSL_CIPHER_MODE_CBC */
HannesTschofenig 0:796d0f61a05b 1057
HannesTschofenig 0:796d0f61a05b 1058 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 1059 const cipher_info_t blowfish_cfb64_info = {
HannesTschofenig 0:796d0f61a05b 1060 POLARSSL_CIPHER_BLOWFISH_CFB64,
HannesTschofenig 0:796d0f61a05b 1061 POLARSSL_MODE_CFB,
HannesTschofenig 0:796d0f61a05b 1062 128,
HannesTschofenig 0:796d0f61a05b 1063 "BLOWFISH-CFB64",
HannesTschofenig 0:796d0f61a05b 1064 8,
HannesTschofenig 0:796d0f61a05b 1065 0,
HannesTschofenig 0:796d0f61a05b 1066 8,
HannesTschofenig 0:796d0f61a05b 1067 &blowfish_info
HannesTschofenig 0:796d0f61a05b 1068 };
HannesTschofenig 0:796d0f61a05b 1069 #endif /* POLARSSL_CIPHER_MODE_CFB */
HannesTschofenig 0:796d0f61a05b 1070
HannesTschofenig 0:796d0f61a05b 1071 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 1072 const cipher_info_t blowfish_ctr_info = {
HannesTschofenig 0:796d0f61a05b 1073 POLARSSL_CIPHER_BLOWFISH_CTR,
HannesTschofenig 0:796d0f61a05b 1074 POLARSSL_MODE_CTR,
HannesTschofenig 0:796d0f61a05b 1075 128,
HannesTschofenig 0:796d0f61a05b 1076 "BLOWFISH-CTR",
HannesTschofenig 0:796d0f61a05b 1077 8,
HannesTschofenig 0:796d0f61a05b 1078 0,
HannesTschofenig 0:796d0f61a05b 1079 8,
HannesTschofenig 0:796d0f61a05b 1080 &blowfish_info
HannesTschofenig 0:796d0f61a05b 1081 };
HannesTschofenig 0:796d0f61a05b 1082 #endif /* POLARSSL_CIPHER_MODE_CTR */
HannesTschofenig 0:796d0f61a05b 1083 #endif /* POLARSSL_BLOWFISH_C */
HannesTschofenig 0:796d0f61a05b 1084
HannesTschofenig 0:796d0f61a05b 1085 #if defined(POLARSSL_ARC4_C)
HannesTschofenig 0:796d0f61a05b 1086 static int arc4_crypt_stream_wrap( void *ctx, size_t length,
HannesTschofenig 0:796d0f61a05b 1087 const unsigned char *input,
HannesTschofenig 0:796d0f61a05b 1088 unsigned char *output )
HannesTschofenig 0:796d0f61a05b 1089 {
HannesTschofenig 0:796d0f61a05b 1090 return( arc4_crypt( (arc4_context *) ctx, length, input, output ) );
HannesTschofenig 0:796d0f61a05b 1091 }
HannesTschofenig 0:796d0f61a05b 1092
HannesTschofenig 0:796d0f61a05b 1093 static int arc4_setkey_wrap( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 1094 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 1095 {
HannesTschofenig 0:796d0f61a05b 1096 /* we get key_length in bits, arc4 expects it in bytes */
HannesTschofenig 0:796d0f61a05b 1097 if( key_length % 8 != 0)
HannesTschofenig 0:796d0f61a05b 1098 return( POLARSSL_ERR_CIPHER_BAD_INPUT_DATA );
HannesTschofenig 0:796d0f61a05b 1099
HannesTschofenig 0:796d0f61a05b 1100 arc4_setup( (arc4_context *) ctx, key, key_length / 8 );
HannesTschofenig 0:796d0f61a05b 1101 return( 0 );
HannesTschofenig 0:796d0f61a05b 1102 }
HannesTschofenig 0:796d0f61a05b 1103
HannesTschofenig 0:796d0f61a05b 1104 static void * arc4_ctx_alloc( void )
HannesTschofenig 0:796d0f61a05b 1105 {
HannesTschofenig 0:796d0f61a05b 1106 return polarssl_malloc( sizeof( arc4_context ) );
HannesTschofenig 0:796d0f61a05b 1107 }
HannesTschofenig 0:796d0f61a05b 1108
HannesTschofenig 0:796d0f61a05b 1109 static void arc4_ctx_free( void *ctx )
HannesTschofenig 0:796d0f61a05b 1110 {
HannesTschofenig 0:796d0f61a05b 1111 polarssl_free( ctx );
HannesTschofenig 0:796d0f61a05b 1112 }
HannesTschofenig 0:796d0f61a05b 1113
HannesTschofenig 0:796d0f61a05b 1114 const cipher_base_t arc4_base_info = {
HannesTschofenig 0:796d0f61a05b 1115 POLARSSL_CIPHER_ID_ARC4,
HannesTschofenig 0:796d0f61a05b 1116 NULL,
HannesTschofenig 0:796d0f61a05b 1117 NULL,
HannesTschofenig 0:796d0f61a05b 1118 NULL,
HannesTschofenig 0:796d0f61a05b 1119 NULL,
HannesTschofenig 0:796d0f61a05b 1120 arc4_crypt_stream_wrap,
HannesTschofenig 0:796d0f61a05b 1121 arc4_setkey_wrap,
HannesTschofenig 0:796d0f61a05b 1122 arc4_setkey_wrap,
HannesTschofenig 0:796d0f61a05b 1123 arc4_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 1124 arc4_ctx_free
HannesTschofenig 0:796d0f61a05b 1125 };
HannesTschofenig 0:796d0f61a05b 1126
HannesTschofenig 0:796d0f61a05b 1127 const cipher_info_t arc4_128_info = {
HannesTschofenig 0:796d0f61a05b 1128 POLARSSL_CIPHER_ARC4_128,
HannesTschofenig 0:796d0f61a05b 1129 POLARSSL_MODE_STREAM,
HannesTschofenig 0:796d0f61a05b 1130 128,
HannesTschofenig 0:796d0f61a05b 1131 "ARC4-128",
HannesTschofenig 0:796d0f61a05b 1132 0,
HannesTschofenig 0:796d0f61a05b 1133 0,
HannesTschofenig 0:796d0f61a05b 1134 1,
HannesTschofenig 0:796d0f61a05b 1135 &arc4_base_info
HannesTschofenig 0:796d0f61a05b 1136 };
HannesTschofenig 0:796d0f61a05b 1137 #endif /* POLARSSL_ARC4_C */
HannesTschofenig 0:796d0f61a05b 1138
HannesTschofenig 0:796d0f61a05b 1139 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
HannesTschofenig 0:796d0f61a05b 1140 static int null_crypt_stream( void *ctx, size_t length,
HannesTschofenig 0:796d0f61a05b 1141 const unsigned char *input,
HannesTschofenig 0:796d0f61a05b 1142 unsigned char *output )
HannesTschofenig 0:796d0f61a05b 1143 {
HannesTschofenig 0:796d0f61a05b 1144 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 1145 memmove( output, input, length );
HannesTschofenig 0:796d0f61a05b 1146 return( 0 );
HannesTschofenig 0:796d0f61a05b 1147 }
HannesTschofenig 0:796d0f61a05b 1148
HannesTschofenig 0:796d0f61a05b 1149 static int null_setkey( void *ctx, const unsigned char *key,
HannesTschofenig 0:796d0f61a05b 1150 unsigned int key_length )
HannesTschofenig 0:796d0f61a05b 1151 {
HannesTschofenig 0:796d0f61a05b 1152 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 1153 ((void) key);
HannesTschofenig 0:796d0f61a05b 1154 ((void) key_length);
HannesTschofenig 0:796d0f61a05b 1155
HannesTschofenig 0:796d0f61a05b 1156 return( 0 );
HannesTschofenig 0:796d0f61a05b 1157 }
HannesTschofenig 0:796d0f61a05b 1158
HannesTschofenig 0:796d0f61a05b 1159 static void * null_ctx_alloc( void )
HannesTschofenig 0:796d0f61a05b 1160 {
HannesTschofenig 0:796d0f61a05b 1161 return (void *) 1;
HannesTschofenig 0:796d0f61a05b 1162 }
HannesTschofenig 0:796d0f61a05b 1163
HannesTschofenig 0:796d0f61a05b 1164 static void null_ctx_free( void *ctx )
HannesTschofenig 0:796d0f61a05b 1165 {
HannesTschofenig 0:796d0f61a05b 1166 ((void) ctx);
HannesTschofenig 0:796d0f61a05b 1167 }
HannesTschofenig 0:796d0f61a05b 1168
HannesTschofenig 0:796d0f61a05b 1169 const cipher_base_t null_base_info = {
HannesTschofenig 0:796d0f61a05b 1170 POLARSSL_CIPHER_ID_NULL,
HannesTschofenig 0:796d0f61a05b 1171 NULL,
HannesTschofenig 0:796d0f61a05b 1172 NULL,
HannesTschofenig 0:796d0f61a05b 1173 NULL,
HannesTschofenig 0:796d0f61a05b 1174 NULL,
HannesTschofenig 0:796d0f61a05b 1175 null_crypt_stream,
HannesTschofenig 0:796d0f61a05b 1176 null_setkey,
HannesTschofenig 0:796d0f61a05b 1177 null_setkey,
HannesTschofenig 0:796d0f61a05b 1178 null_ctx_alloc,
HannesTschofenig 0:796d0f61a05b 1179 null_ctx_free
HannesTschofenig 0:796d0f61a05b 1180 };
HannesTschofenig 0:796d0f61a05b 1181
HannesTschofenig 0:796d0f61a05b 1182 const cipher_info_t null_cipher_info = {
HannesTschofenig 0:796d0f61a05b 1183 POLARSSL_CIPHER_NULL,
HannesTschofenig 0:796d0f61a05b 1184 POLARSSL_MODE_STREAM,
HannesTschofenig 0:796d0f61a05b 1185 0,
HannesTschofenig 0:796d0f61a05b 1186 "NULL",
HannesTschofenig 0:796d0f61a05b 1187 0,
HannesTschofenig 0:796d0f61a05b 1188 0,
HannesTschofenig 0:796d0f61a05b 1189 1,
HannesTschofenig 0:796d0f61a05b 1190 &null_base_info
HannesTschofenig 0:796d0f61a05b 1191 };
HannesTschofenig 0:796d0f61a05b 1192 #endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
HannesTschofenig 0:796d0f61a05b 1193
HannesTschofenig 0:796d0f61a05b 1194 const cipher_definition_t cipher_definitions[] =
HannesTschofenig 0:796d0f61a05b 1195 {
HannesTschofenig 0:796d0f61a05b 1196 #if defined(POLARSSL_AES_C)
HannesTschofenig 0:796d0f61a05b 1197 { POLARSSL_CIPHER_AES_128_ECB, &aes_128_ecb_info },
HannesTschofenig 0:796d0f61a05b 1198 { POLARSSL_CIPHER_AES_192_ECB, &aes_192_ecb_info },
HannesTschofenig 0:796d0f61a05b 1199 { POLARSSL_CIPHER_AES_256_ECB, &aes_256_ecb_info },
HannesTschofenig 0:796d0f61a05b 1200 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 1201 { POLARSSL_CIPHER_AES_128_CBC, &aes_128_cbc_info },
HannesTschofenig 0:796d0f61a05b 1202 { POLARSSL_CIPHER_AES_192_CBC, &aes_192_cbc_info },
HannesTschofenig 0:796d0f61a05b 1203 { POLARSSL_CIPHER_AES_256_CBC, &aes_256_cbc_info },
HannesTschofenig 0:796d0f61a05b 1204 #endif
HannesTschofenig 0:796d0f61a05b 1205 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 1206 { POLARSSL_CIPHER_AES_128_CFB128, &aes_128_cfb128_info },
HannesTschofenig 0:796d0f61a05b 1207 { POLARSSL_CIPHER_AES_192_CFB128, &aes_192_cfb128_info },
HannesTschofenig 0:796d0f61a05b 1208 { POLARSSL_CIPHER_AES_256_CFB128, &aes_256_cfb128_info },
HannesTschofenig 0:796d0f61a05b 1209 #endif
HannesTschofenig 0:796d0f61a05b 1210 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 1211 { POLARSSL_CIPHER_AES_128_CTR, &aes_128_ctr_info },
HannesTschofenig 0:796d0f61a05b 1212 { POLARSSL_CIPHER_AES_192_CTR, &aes_192_ctr_info },
HannesTschofenig 0:796d0f61a05b 1213 { POLARSSL_CIPHER_AES_256_CTR, &aes_256_ctr_info },
HannesTschofenig 0:796d0f61a05b 1214 #endif
HannesTschofenig 0:796d0f61a05b 1215 #if defined(POLARSSL_GCM_C)
HannesTschofenig 0:796d0f61a05b 1216 { POLARSSL_CIPHER_AES_128_GCM, &aes_128_gcm_info },
HannesTschofenig 0:796d0f61a05b 1217 { POLARSSL_CIPHER_AES_192_GCM, &aes_192_gcm_info },
HannesTschofenig 0:796d0f61a05b 1218 { POLARSSL_CIPHER_AES_256_GCM, &aes_256_gcm_info },
HannesTschofenig 0:796d0f61a05b 1219 #endif
HannesTschofenig 0:796d0f61a05b 1220 #endif /* POLARSSL_AES_C */
HannesTschofenig 0:796d0f61a05b 1221
HannesTschofenig 0:796d0f61a05b 1222 #if defined(POLARSSL_ARC4_C)
HannesTschofenig 0:796d0f61a05b 1223 { POLARSSL_CIPHER_ARC4_128, &arc4_128_info },
HannesTschofenig 0:796d0f61a05b 1224 #endif
HannesTschofenig 0:796d0f61a05b 1225
HannesTschofenig 0:796d0f61a05b 1226 #if defined(POLARSSL_BLOWFISH_C)
HannesTschofenig 0:796d0f61a05b 1227 { POLARSSL_CIPHER_BLOWFISH_ECB, &blowfish_ecb_info },
HannesTschofenig 0:796d0f61a05b 1228 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 1229 { POLARSSL_CIPHER_BLOWFISH_CBC, &blowfish_cbc_info },
HannesTschofenig 0:796d0f61a05b 1230 #endif
HannesTschofenig 0:796d0f61a05b 1231 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 1232 { POLARSSL_CIPHER_BLOWFISH_CFB64, &blowfish_cfb64_info },
HannesTschofenig 0:796d0f61a05b 1233 #endif
HannesTschofenig 0:796d0f61a05b 1234 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 1235 { POLARSSL_CIPHER_BLOWFISH_CTR, &blowfish_ctr_info },
HannesTschofenig 0:796d0f61a05b 1236 #endif
HannesTschofenig 0:796d0f61a05b 1237 #endif /* POLARSSL_BLOWFISH_C */
HannesTschofenig 0:796d0f61a05b 1238
HannesTschofenig 0:796d0f61a05b 1239 #if defined(POLARSSL_CAMELLIA_C)
HannesTschofenig 0:796d0f61a05b 1240 { POLARSSL_CIPHER_CAMELLIA_128_ECB, &camellia_128_ecb_info },
HannesTschofenig 0:796d0f61a05b 1241 { POLARSSL_CIPHER_CAMELLIA_192_ECB, &camellia_192_ecb_info },
HannesTschofenig 0:796d0f61a05b 1242 { POLARSSL_CIPHER_CAMELLIA_256_ECB, &camellia_256_ecb_info },
HannesTschofenig 0:796d0f61a05b 1243 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 1244 { POLARSSL_CIPHER_CAMELLIA_128_CBC, &camellia_128_cbc_info },
HannesTschofenig 0:796d0f61a05b 1245 { POLARSSL_CIPHER_CAMELLIA_192_CBC, &camellia_192_cbc_info },
HannesTschofenig 0:796d0f61a05b 1246 { POLARSSL_CIPHER_CAMELLIA_256_CBC, &camellia_256_cbc_info },
HannesTschofenig 0:796d0f61a05b 1247 #endif
HannesTschofenig 0:796d0f61a05b 1248 #if defined(POLARSSL_CIPHER_MODE_CFB)
HannesTschofenig 0:796d0f61a05b 1249 { POLARSSL_CIPHER_CAMELLIA_128_CFB128, &camellia_128_cfb128_info },
HannesTschofenig 0:796d0f61a05b 1250 { POLARSSL_CIPHER_CAMELLIA_192_CFB128, &camellia_192_cfb128_info },
HannesTschofenig 0:796d0f61a05b 1251 { POLARSSL_CIPHER_CAMELLIA_256_CFB128, &camellia_256_cfb128_info },
HannesTschofenig 0:796d0f61a05b 1252 #endif
HannesTschofenig 0:796d0f61a05b 1253 #if defined(POLARSSL_CIPHER_MODE_CTR)
HannesTschofenig 0:796d0f61a05b 1254 { POLARSSL_CIPHER_CAMELLIA_128_CTR, &camellia_128_ctr_info },
HannesTschofenig 0:796d0f61a05b 1255 { POLARSSL_CIPHER_CAMELLIA_192_CTR, &camellia_192_ctr_info },
HannesTschofenig 0:796d0f61a05b 1256 { POLARSSL_CIPHER_CAMELLIA_256_CTR, &camellia_256_ctr_info },
HannesTschofenig 0:796d0f61a05b 1257 #endif
HannesTschofenig 0:796d0f61a05b 1258 #if defined(POLARSSL_GCM_C)
HannesTschofenig 0:796d0f61a05b 1259 { POLARSSL_CIPHER_CAMELLIA_128_GCM, &camellia_128_gcm_info },
HannesTschofenig 0:796d0f61a05b 1260 { POLARSSL_CIPHER_CAMELLIA_192_GCM, &camellia_192_gcm_info },
HannesTschofenig 0:796d0f61a05b 1261 { POLARSSL_CIPHER_CAMELLIA_256_GCM, &camellia_256_gcm_info },
HannesTschofenig 0:796d0f61a05b 1262 #endif
HannesTschofenig 0:796d0f61a05b 1263 #endif /* POLARSSL_CAMELLIA_C */
HannesTschofenig 0:796d0f61a05b 1264
HannesTschofenig 0:796d0f61a05b 1265 #if defined(POLARSSL_DES_C)
HannesTschofenig 0:796d0f61a05b 1266 { POLARSSL_CIPHER_DES_ECB, &des_ecb_info },
HannesTschofenig 0:796d0f61a05b 1267 { POLARSSL_CIPHER_DES_EDE_ECB, &des_ede_ecb_info },
HannesTschofenig 0:796d0f61a05b 1268 { POLARSSL_CIPHER_DES_EDE3_ECB, &des_ede3_ecb_info },
HannesTschofenig 0:796d0f61a05b 1269 #if defined(POLARSSL_CIPHER_MODE_CBC)
HannesTschofenig 0:796d0f61a05b 1270 { POLARSSL_CIPHER_DES_CBC, &des_cbc_info },
HannesTschofenig 0:796d0f61a05b 1271 { POLARSSL_CIPHER_DES_EDE_CBC, &des_ede_cbc_info },
HannesTschofenig 0:796d0f61a05b 1272 { POLARSSL_CIPHER_DES_EDE3_CBC, &des_ede3_cbc_info },
HannesTschofenig 0:796d0f61a05b 1273 #endif
HannesTschofenig 0:796d0f61a05b 1274 #endif /* POLARSSL_DES_C */
HannesTschofenig 0:796d0f61a05b 1275
HannesTschofenig 0:796d0f61a05b 1276 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
HannesTschofenig 0:796d0f61a05b 1277 { POLARSSL_CIPHER_NULL, &null_cipher_info },
HannesTschofenig 0:796d0f61a05b 1278 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
HannesTschofenig 0:796d0f61a05b 1279
HannesTschofenig 0:796d0f61a05b 1280 { 0, NULL }
HannesTschofenig 0:796d0f61a05b 1281 };
HannesTschofenig 0:796d0f61a05b 1282
HannesTschofenig 0:796d0f61a05b 1283 #define NUM_CIPHERS sizeof cipher_definitions / sizeof cipher_definitions[0]
HannesTschofenig 0:796d0f61a05b 1284 int supported_ciphers[NUM_CIPHERS];
HannesTschofenig 0:796d0f61a05b 1285
HannesTschofenig 0:796d0f61a05b 1286 #endif /* POLARSSL_CIPHER_C */
HannesTschofenig 0:796d0f61a05b 1287
HannesTschofenig 0:796d0f61a05b 1288