blob: 7a93cd1395dcf3730687c0270336e24e41c4ec87 [file] [log] [blame]
Paul Bakker33b43f12013-08-20 11:48:36 +02001/* BEGIN_HEADER */
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +00002#include "mbedtls/blowfish.h"
Paul Bakker33b43f12013-08-20 11:48:36 +02003/* END_HEADER */
Paul Bakkera9379c02012-07-04 11:02:11 +00004
Paul Bakker33b43f12013-08-20 11:48:36 +02005/* BEGIN_DEPENDENCIES
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006 * depends_on:MBEDTLS_BLOWFISH_C
Paul Bakker33b43f12013-08-20 11:48:36 +02007 * END_DEPENDENCIES
8 */
Paul Bakkera9379c02012-07-04 11:02:11 +00009
Hanno Beckerf947c0a2018-12-17 14:17:10 +000010/* BEGIN_CASE */
11void blowfish_valid_param( )
12{
13 TEST_VALID_PARAM( mbedtls_blowfish_free( NULL ) );
14}
15/* END_CASE */
16
Hanno Beckere38b4cd2018-12-12 18:46:19 +000017/* BEGIN_CASE depends_on:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
18void blowfish_invalid_param( )
19{
20 mbedtls_blowfish_context ctx;
21 unsigned char buf[16] = { 0 };
Hanno Becker49acc642018-12-17 09:24:51 +000022 size_t const valid_keylength = sizeof( buf ) * 8;
23 size_t valid_mode = MBEDTLS_BLOWFISH_ENCRYPT;
24 size_t invalid_mode = 42;
Hanno Beckere38b4cd2018-12-12 18:46:19 +000025 size_t off;
26 ((void) off);
27
28 TEST_INVALID_PARAM( mbedtls_blowfish_init( NULL ) );
29 TEST_VALID_PARAM( mbedtls_blowfish_free( NULL ) );
30
31 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
32 mbedtls_blowfish_setkey( NULL,
33 buf,
Hanno Becker49acc642018-12-17 09:24:51 +000034 valid_keylength ) );
Hanno Beckere38b4cd2018-12-12 18:46:19 +000035 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
36 mbedtls_blowfish_setkey( &ctx,
37 NULL,
Hanno Becker49acc642018-12-17 09:24:51 +000038 valid_keylength ) );
Hanno Beckere38b4cd2018-12-12 18:46:19 +000039
40 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
41 mbedtls_blowfish_crypt_ecb( NULL,
Hanno Becker49acc642018-12-17 09:24:51 +000042 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000043 buf, buf ) );
44 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
45 mbedtls_blowfish_crypt_ecb( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +000046 invalid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000047 buf, buf ) );
48 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
49 mbedtls_blowfish_crypt_ecb( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +000050 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000051 NULL, buf ) );
52 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
53 mbedtls_blowfish_crypt_ecb( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +000054 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000055 buf, NULL ) );
56
57#if defined(MBEDTLS_CIPHER_MODE_CBC)
58 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
59 mbedtls_blowfish_crypt_cbc( NULL,
Hanno Becker49acc642018-12-17 09:24:51 +000060 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000061 sizeof( buf ),
62 buf, buf, buf ) );
63 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
64 mbedtls_blowfish_crypt_cbc( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +000065 invalid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000066 sizeof( buf ),
67 buf, buf, buf ) );
68 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
69 mbedtls_blowfish_crypt_cbc( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +000070 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000071 sizeof( buf ),
72 NULL, buf, buf ) );
73 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
74 mbedtls_blowfish_crypt_cbc( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +000075 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000076 sizeof( buf ),
77 buf, NULL, buf ) );
78 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
79 mbedtls_blowfish_crypt_cbc( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +000080 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000081 sizeof( buf ),
82 buf, buf, NULL ) );
83#endif /* MBEDTLS_CIPHER_MODE_CBC */
84
85#if defined(MBEDTLS_CIPHER_MODE_CFB)
86 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
87 mbedtls_blowfish_crypt_cfb64( NULL,
Hanno Becker49acc642018-12-17 09:24:51 +000088 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000089 sizeof( buf ),
90 &off, buf,
91 buf, buf ) );
92 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
93 mbedtls_blowfish_crypt_cfb64( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +000094 invalid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +000095 sizeof( buf ),
96 &off, buf,
97 buf, buf ) );
98 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
99 mbedtls_blowfish_crypt_cfb64( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +0000100 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +0000101 sizeof( buf ),
102 NULL, buf,
103 buf, buf ) );
104 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
105 mbedtls_blowfish_crypt_cfb64( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +0000106 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +0000107 sizeof( buf ),
108 &off, NULL,
109 buf, buf ) );
110 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
111 mbedtls_blowfish_crypt_cfb64( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +0000112 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +0000113 sizeof( buf ),
114 &off, buf,
115 NULL, buf ) );
116 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
117 mbedtls_blowfish_crypt_cfb64( &ctx,
Hanno Becker49acc642018-12-17 09:24:51 +0000118 valid_mode,
Hanno Beckere38b4cd2018-12-12 18:46:19 +0000119 sizeof( buf ),
120 &off, buf,
121 buf, NULL ) );
122#endif /* MBEDTLS_CIPHER_MODE_CFB */
123
124#if defined(MBEDTLS_CIPHER_MODE_CTR)
125 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
126 mbedtls_blowfish_crypt_ctr( NULL,
127 sizeof( buf ),
128 &off,
129 buf, buf,
130 buf, buf ) );
131 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
132 mbedtls_blowfish_crypt_ctr( &ctx,
133 sizeof( buf ),
134 NULL,
135 buf, buf,
136 buf, buf ) );
137 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
138 mbedtls_blowfish_crypt_ctr( &ctx,
139 sizeof( buf ),
140 &off,
141 NULL, buf,
142 buf, buf ) );
143 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
144 mbedtls_blowfish_crypt_ctr( &ctx,
145 sizeof( buf ),
146 &off,
147 buf, NULL,
148 buf, buf ) );
149 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
150 mbedtls_blowfish_crypt_ctr( &ctx,
151 sizeof( buf ),
152 &off,
153 buf, buf,
154 NULL, buf ) );
155 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA,
156 mbedtls_blowfish_crypt_ctr( &ctx,
157 sizeof( buf ),
158 &off,
159 buf, buf,
160 buf, NULL ) );
161#endif /* MBEDTLS_CIPHER_MODE_CTR */
162
163exit:
164 return;
165}
166/* END_CASE */
167
Paul Bakker33b43f12013-08-20 11:48:36 +0200168/* BEGIN_CASE */
Azim Khan5fcca462018-06-29 11:05:32 +0100169void blowfish_encrypt_ecb( data_t * key_str, data_t * src_str,
170 data_t * hex_dst_string, int setkey_result )
Paul Bakkera9379c02012-07-04 11:02:11 +0000171{
Paul Bakkera9379c02012-07-04 11:02:11 +0000172 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200173 mbedtls_blowfish_context ctx;
Paul Bakkera9379c02012-07-04 11:02:11 +0000174
Paul Bakkera9379c02012-07-04 11:02:11 +0000175 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200176 mbedtls_blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000177
Paul Bakkera9379c02012-07-04 11:02:11 +0000178
Azim Khand30ca132017-06-09 04:32:58 +0100179 TEST_ASSERT( mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ) == setkey_result );
Paul Bakker33b43f12013-08-20 11:48:36 +0200180 if( setkey_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +0000181 {
Azim Khand30ca132017-06-09 04:32:58 +0100182 TEST_ASSERT( mbedtls_blowfish_crypt_ecb( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_str->x, output ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000183
Azim Khand30ca132017-06-09 04:32:58 +0100184 TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000185 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200186
Paul Bakkerbd51b262014-07-10 15:26:12 +0200187exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200188 mbedtls_blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000189}
Paul Bakker33b43f12013-08-20 11:48:36 +0200190/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000191
Paul Bakker33b43f12013-08-20 11:48:36 +0200192/* BEGIN_CASE */
Azim Khan5fcca462018-06-29 11:05:32 +0100193void blowfish_decrypt_ecb( data_t * key_str, data_t * src_str,
194 data_t * hex_dst_string, int setkey_result )
Paul Bakkera9379c02012-07-04 11:02:11 +0000195{
Paul Bakkera9379c02012-07-04 11:02:11 +0000196 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200197 mbedtls_blowfish_context ctx;
Paul Bakkera9379c02012-07-04 11:02:11 +0000198
Paul Bakkera9379c02012-07-04 11:02:11 +0000199 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200200 mbedtls_blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000201
Paul Bakkera9379c02012-07-04 11:02:11 +0000202
Azim Khand30ca132017-06-09 04:32:58 +0100203 TEST_ASSERT( mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ) == setkey_result );
Paul Bakker33b43f12013-08-20 11:48:36 +0200204 if( setkey_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +0000205 {
Azim Khand30ca132017-06-09 04:32:58 +0100206 TEST_ASSERT( mbedtls_blowfish_crypt_ecb( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_str->x, output ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000207
Azim Khand30ca132017-06-09 04:32:58 +0100208 TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000209 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200210
Paul Bakkerbd51b262014-07-10 15:26:12 +0200211exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200212 mbedtls_blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000213}
Paul Bakker33b43f12013-08-20 11:48:36 +0200214/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000215
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200216/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Azim Khan5fcca462018-06-29 11:05:32 +0100217void blowfish_encrypt_cbc( data_t * key_str, data_t * iv_str,
218 data_t * src_str, data_t * hex_dst_string,
Azim Khand30ca132017-06-09 04:32:58 +0100219 int cbc_result )
Paul Bakkera9379c02012-07-04 11:02:11 +0000220{
Paul Bakkera9379c02012-07-04 11:02:11 +0000221 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200222 mbedtls_blowfish_context ctx;
Paul Bakkera9379c02012-07-04 11:02:11 +0000223
Paul Bakkera9379c02012-07-04 11:02:11 +0000224 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200225 mbedtls_blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000226
Paul Bakkera9379c02012-07-04 11:02:11 +0000227
Azim Khand30ca132017-06-09 04:32:58 +0100228 mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000229
Azim Khand30ca132017-06-09 04:32:58 +0100230 TEST_ASSERT( mbedtls_blowfish_crypt_cbc( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_str->len , iv_str->x, src_str->x, output ) == cbc_result );
Paul Bakker33b43f12013-08-20 11:48:36 +0200231 if( cbc_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +0000232 {
Paul Bakkera9379c02012-07-04 11:02:11 +0000233
Azim Khand30ca132017-06-09 04:32:58 +0100234 TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000235 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200236
Paul Bakkerbd51b262014-07-10 15:26:12 +0200237exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200238 mbedtls_blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000239}
Paul Bakker33b43f12013-08-20 11:48:36 +0200240/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000241
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200242/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Azim Khan5fcca462018-06-29 11:05:32 +0100243void blowfish_decrypt_cbc( data_t * key_str, data_t * iv_str,
244 data_t * src_str, data_t * hex_dst_string,
Azim Khand30ca132017-06-09 04:32:58 +0100245 int cbc_result )
Paul Bakkera9379c02012-07-04 11:02:11 +0000246{
Paul Bakkera9379c02012-07-04 11:02:11 +0000247 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200248 mbedtls_blowfish_context ctx;
Paul Bakkera9379c02012-07-04 11:02:11 +0000249
Paul Bakkera9379c02012-07-04 11:02:11 +0000250 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200251 mbedtls_blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000252
Paul Bakkera9379c02012-07-04 11:02:11 +0000253
Azim Khand30ca132017-06-09 04:32:58 +0100254 mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 );
255 TEST_ASSERT( mbedtls_blowfish_crypt_cbc( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_str->len , iv_str->x, src_str->x, output ) == cbc_result );
Paul Bakker33b43f12013-08-20 11:48:36 +0200256 if( cbc_result == 0)
Paul Bakkera9379c02012-07-04 11:02:11 +0000257 {
Paul Bakkera9379c02012-07-04 11:02:11 +0000258
Azim Khand30ca132017-06-09 04:32:58 +0100259 TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000260 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200261
Paul Bakkerbd51b262014-07-10 15:26:12 +0200262exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200263 mbedtls_blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000264}
Paul Bakker33b43f12013-08-20 11:48:36 +0200265/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000266
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200267/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Azim Khan5fcca462018-06-29 11:05:32 +0100268void blowfish_encrypt_cfb64( data_t * key_str, data_t * iv_str,
269 data_t * src_str, data_t * hex_dst_string
Azim Khand30ca132017-06-09 04:32:58 +0100270 )
Paul Bakkera9379c02012-07-04 11:02:11 +0000271{
Paul Bakkera9379c02012-07-04 11:02:11 +0000272 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200273 mbedtls_blowfish_context ctx;
Paul Bakkera9379c02012-07-04 11:02:11 +0000274 size_t iv_offset = 0;
Paul Bakkera9379c02012-07-04 11:02:11 +0000275
Paul Bakkera9379c02012-07-04 11:02:11 +0000276 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200277 mbedtls_blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000278
Paul Bakkera9379c02012-07-04 11:02:11 +0000279
Azim Khand30ca132017-06-09 04:32:58 +0100280 mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 );
281 TEST_ASSERT( mbedtls_blowfish_crypt_cfb64( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_str->len, &iv_offset, iv_str->x, src_str->x, output ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000282
Azim Khand30ca132017-06-09 04:32:58 +0100283 TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200284
Paul Bakkerbd51b262014-07-10 15:26:12 +0200285exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200286 mbedtls_blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000287}
Paul Bakker33b43f12013-08-20 11:48:36 +0200288/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000289
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200290/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Azim Khan5fcca462018-06-29 11:05:32 +0100291void blowfish_decrypt_cfb64( data_t * key_str, data_t * iv_str,
292 data_t * src_str, data_t * hex_dst_string
Azim Khand30ca132017-06-09 04:32:58 +0100293 )
Paul Bakkera9379c02012-07-04 11:02:11 +0000294{
Paul Bakkera9379c02012-07-04 11:02:11 +0000295 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200296 mbedtls_blowfish_context ctx;
Paul Bakkera9379c02012-07-04 11:02:11 +0000297 size_t iv_offset = 0;
Paul Bakkera9379c02012-07-04 11:02:11 +0000298
Paul Bakkera9379c02012-07-04 11:02:11 +0000299 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200300 mbedtls_blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000301
Paul Bakkera9379c02012-07-04 11:02:11 +0000302
Azim Khand30ca132017-06-09 04:32:58 +0100303 mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 );
304 TEST_ASSERT( mbedtls_blowfish_crypt_cfb64( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_str->len, &iv_offset, iv_str->x, src_str->x, output ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000305
Azim Khand30ca132017-06-09 04:32:58 +0100306 TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200307
Paul Bakkerbd51b262014-07-10 15:26:12 +0200308exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200309 mbedtls_blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000310}
Paul Bakker33b43f12013-08-20 11:48:36 +0200311/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000312
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200313/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Azim Khan5fcca462018-06-29 11:05:32 +0100314void blowfish_encrypt_ctr( data_t * key_str, data_t * iv_str,
315 data_t * src_str, data_t * hex_dst_string )
Paul Bakkera9379c02012-07-04 11:02:11 +0000316{
Paul Bakkera9379c02012-07-04 11:02:11 +0000317 unsigned char stream_str[100];
Paul Bakkera9379c02012-07-04 11:02:11 +0000318 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200319 mbedtls_blowfish_context ctx;
Paul Bakkera9379c02012-07-04 11:02:11 +0000320 size_t iv_offset = 0;
Paul Bakkera9379c02012-07-04 11:02:11 +0000321
Paul Bakkera9379c02012-07-04 11:02:11 +0000322 memset(stream_str, 0x00, 100);
Paul Bakkera9379c02012-07-04 11:02:11 +0000323 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200324 mbedtls_blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000325
Paul Bakkera9379c02012-07-04 11:02:11 +0000326
Azim Khand30ca132017-06-09 04:32:58 +0100327 mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 );
328 TEST_ASSERT( mbedtls_blowfish_crypt_ctr( &ctx, src_str->len, &iv_offset, iv_str->x, stream_str, src_str->x, output ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000329
Azim Khand30ca132017-06-09 04:32:58 +0100330 TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200331
Paul Bakkerbd51b262014-07-10 15:26:12 +0200332exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200333 mbedtls_blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000334}
Paul Bakker33b43f12013-08-20 11:48:36 +0200335/* END_CASE */