32 #if defined(POLARSSL_CIPHER_C)
39 #if defined _MSC_VER && !defined strcasecmp
40 #define strcasecmp _stricmp
43 static const int supported_ciphers[] = {
45 #if defined(POLARSSL_AES_C)
50 #if defined(POLARSSL_CIPHER_MODE_CFB)
56 #if defined(POLARSSL_CIPHER_MODE_CTR)
64 #if defined(POLARSSL_CAMELLIA_C)
69 #if defined(POLARSSL_CIPHER_MODE_CFB)
75 #if defined(POLARSSL_CIPHER_MODE_CTR)
83 #if defined(POLARSSL_DES_C)
94 return supported_ciphers;
100 switch ( cipher_type )
102 #if defined(POLARSSL_AES_C)
110 #if defined(POLARSSL_CIPHER_MODE_CFB)
119 #if defined(POLARSSL_CIPHER_MODE_CTR)
130 #if defined(POLARSSL_CAMELLIA_C)
138 #if defined(POLARSSL_CIPHER_MODE_CFB)
147 #if defined(POLARSSL_CIPHER_MODE_CTR)
158 #if defined(POLARSSL_DES_C)
174 if( NULL == cipher_name )
178 #if defined(POLARSSL_CAMELLIA_C)
179 if( !strcasecmp(
"CAMELLIA-128-CBC", cipher_name ) )
181 if( !strcasecmp(
"CAMELLIA-192-CBC", cipher_name ) )
183 if( !strcasecmp(
"CAMELLIA-256-CBC", cipher_name ) )
186 #if defined(POLARSSL_CIPHER_MODE_CFB)
187 if( !strcasecmp(
"CAMELLIA-128-CFB128", cipher_name ) )
189 if( !strcasecmp(
"CAMELLIA-192-CFB128", cipher_name ) )
191 if( !strcasecmp(
"CAMELLIA-256-CFB128", cipher_name ) )
195 #if defined(POLARSSL_CIPHER_MODE_CTR)
196 if( !strcasecmp(
"CAMELLIA-128-CTR", cipher_name ) )
198 if( !strcasecmp(
"CAMELLIA-192-CTR", cipher_name ) )
200 if( !strcasecmp(
"CAMELLIA-256-CTR", cipher_name ) )
205 #if defined(POLARSSL_AES_C)
206 if( !strcasecmp(
"AES-128-CBC", cipher_name ) )
208 if( !strcasecmp(
"AES-192-CBC", cipher_name ) )
210 if( !strcasecmp(
"AES-256-CBC", cipher_name ) )
213 #if defined(POLARSSL_CIPHER_MODE_CFB)
214 if( !strcasecmp(
"AES-128-CFB128", cipher_name ) )
216 if( !strcasecmp(
"AES-192-CFB128", cipher_name ) )
218 if( !strcasecmp(
"AES-256-CFB128", cipher_name ) )
222 #if defined(POLARSSL_CIPHER_MODE_CTR)
223 if( !strcasecmp(
"AES-128-CTR", cipher_name ) )
225 if( !strcasecmp(
"AES-192-CTR", cipher_name ) )
227 if( !strcasecmp(
"AES-256-CTR", cipher_name ) )
232 #if defined(POLARSSL_DES_C)
233 if( !strcasecmp(
"DES-CBC", cipher_name ) )
235 if( !strcasecmp(
"DES-EDE-CBC", cipher_name ) )
237 if( !strcasecmp(
"DES-EDE3-CBC", cipher_name ) )
245 if( NULL == cipher_info || NULL == ctx )
297 if( NULL == ctx || NULL == ctx->
cipher_info || NULL == iv )
308 unsigned char *output,
size_t *olen )
313 if( NULL == ctx || NULL == ctx->
cipher_info || NULL == olen ||
426 static void add_pkcs_padding(
unsigned char *output,
size_t output_len,
429 size_t padding_len = output_len - data_len;
432 for( i = 0; i < padding_len; i++ )
433 output[data_len + i] = (
unsigned char) padding_len;
436 static int get_pkcs_padding(
unsigned char *input,
unsigned int input_len,
439 unsigned int i, padding_len = 0;
441 if( NULL == input || NULL == data_len )
444 padding_len = input[input_len - 1];
446 if( padding_len > input_len )
449 for( i = input_len - padding_len; i < input_len; i++ )
450 if( input[i] != padding_len )
453 *data_len = input_len - padding_len;
462 if( NULL == ctx || NULL == ctx->
cipher_info || NULL == olen )
506 #if defined(POLARSSL_SELF_TEST)
510 #define ASSERT(x) if (!(x)) { \
511 printf( "failed with %i at %s\n", value, (#x) ); \