blob: 5a2a712a79cdb5b28b89d826b7a5b82ac0ce1963 [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
6 * depends_on:POLARSSL_BLOWFISH_C
7 * END_DEPENDENCIES
8 */
Paul Bakkera9379c02012-07-04 11:02:11 +00009
Paul Bakker33b43f12013-08-20 11:48:36 +020010/* BEGIN_CASE */
11void blowfish_encrypt_ecb( char *hex_key_string, char *hex_src_string,
12 char *hex_dst_string, int setkey_result )
Paul Bakkera9379c02012-07-04 11:02:11 +000013{
14 unsigned char key_str[100];
15 unsigned char src_str[100];
16 unsigned char dst_str[100];
17 unsigned char output[100];
18 blowfish_context ctx;
19 int key_len;
20
21 memset(key_str, 0x00, 100);
22 memset(src_str, 0x00, 100);
23 memset(dst_str, 0x00, 100);
24 memset(output, 0x00, 100);
Paul Bakker8cfd9d82014-06-18 11:16:11 +020025 blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +000026
Paul Bakker33b43f12013-08-20 11:48:36 +020027 key_len = unhexify( key_str, hex_key_string );
28 unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +000029
Paul Bakker33b43f12013-08-20 11:48:36 +020030 TEST_ASSERT( blowfish_setkey( &ctx, key_str, key_len * 8 ) == setkey_result );
31 if( setkey_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +000032 {
33 TEST_ASSERT( blowfish_crypt_ecb( &ctx, BLOWFISH_ENCRYPT, src_str, output ) == 0 );
34 hexify( dst_str, output, 8 );
35
Paul Bakker33b43f12013-08-20 11:48:36 +020036 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +000037 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +020038
Paul Bakkerbd51b262014-07-10 15:26:12 +020039exit:
Paul Bakker8cfd9d82014-06-18 11:16:11 +020040 blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +000041}
Paul Bakker33b43f12013-08-20 11:48:36 +020042/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +000043
Paul Bakker33b43f12013-08-20 11:48:36 +020044/* BEGIN_CASE */
45void blowfish_decrypt_ecb( char *hex_key_string, char *hex_src_string,
46 char *hex_dst_string, int setkey_result )
Paul Bakkera9379c02012-07-04 11:02:11 +000047{
48 unsigned char key_str[100];
49 unsigned char src_str[100];
50 unsigned char dst_str[100];
51 unsigned char output[100];
52 blowfish_context ctx;
53 int key_len;
54
55 memset(key_str, 0x00, 100);
56 memset(src_str, 0x00, 100);
57 memset(dst_str, 0x00, 100);
58 memset(output, 0x00, 100);
Paul Bakker8cfd9d82014-06-18 11:16:11 +020059 blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +000060
Paul Bakker33b43f12013-08-20 11:48:36 +020061 key_len = unhexify( key_str, hex_key_string );
62 unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +000063
Paul Bakker33b43f12013-08-20 11:48:36 +020064 TEST_ASSERT( blowfish_setkey( &ctx, key_str, key_len * 8 ) == setkey_result );
65 if( setkey_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +000066 {
67 TEST_ASSERT( blowfish_crypt_ecb( &ctx, BLOWFISH_DECRYPT, src_str, output ) == 0 );
68 hexify( dst_str, output, 8 );
69
Paul Bakker33b43f12013-08-20 11:48:36 +020070 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +000071 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +020072
Paul Bakkerbd51b262014-07-10 15:26:12 +020073exit:
Paul Bakker8cfd9d82014-06-18 11:16:11 +020074 blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +000075}
Paul Bakker33b43f12013-08-20 11:48:36 +020076/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +000077
Manuel Pégourié-Gonnard92cb1d32013-09-13 16:24:20 +020078/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
Paul Bakker33b43f12013-08-20 11:48:36 +020079void blowfish_encrypt_cbc( char *hex_key_string, char *hex_iv_string,
80 char *hex_src_string, char *hex_dst_string,
81 int cbc_result )
Paul Bakkera9379c02012-07-04 11:02:11 +000082{
83 unsigned char key_str[100];
84 unsigned char iv_str[100];
85 unsigned char src_str[100];
86 unsigned char dst_str[100];
87 unsigned char output[100];
88 blowfish_context ctx;
89 int key_len, data_len;
90
91 memset(key_str, 0x00, 100);
92 memset(iv_str, 0x00, 100);
93 memset(src_str, 0x00, 100);
94 memset(dst_str, 0x00, 100);
95 memset(output, 0x00, 100);
Paul Bakker8cfd9d82014-06-18 11:16:11 +020096 blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +000097
Paul Bakker33b43f12013-08-20 11:48:36 +020098 key_len = unhexify( key_str, hex_key_string );
99 unhexify( iv_str, hex_iv_string );
100 data_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000101
102 blowfish_setkey( &ctx, key_str, key_len * 8 );
103
Paul Bakker33b43f12013-08-20 11:48:36 +0200104 TEST_ASSERT( blowfish_crypt_cbc( &ctx, BLOWFISH_ENCRYPT, data_len , iv_str, src_str, output ) == cbc_result );
105 if( cbc_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +0000106 {
107 hexify( dst_str, output, data_len );
108
Paul Bakker33b43f12013-08-20 11:48:36 +0200109 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000110 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200111
Paul Bakkerbd51b262014-07-10 15:26:12 +0200112exit:
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200113 blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000114}
Paul Bakker33b43f12013-08-20 11:48:36 +0200115/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000116
Manuel Pégourié-Gonnard92cb1d32013-09-13 16:24:20 +0200117/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
Paul Bakker33b43f12013-08-20 11:48:36 +0200118void blowfish_decrypt_cbc( char *hex_key_string, char *hex_iv_string,
119 char *hex_src_string, char *hex_dst_string,
120 int cbc_result )
Paul Bakkera9379c02012-07-04 11:02:11 +0000121{
122 unsigned char key_str[100];
123 unsigned char iv_str[100];
124 unsigned char src_str[100];
125 unsigned char dst_str[100];
126 unsigned char output[100];
127 blowfish_context ctx;
128 int key_len, data_len;
129
130 memset(key_str, 0x00, 100);
131 memset(iv_str, 0x00, 100);
132 memset(src_str, 0x00, 100);
133 memset(dst_str, 0x00, 100);
134 memset(output, 0x00, 100);
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200135 blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000136
Paul Bakker33b43f12013-08-20 11:48:36 +0200137 key_len = unhexify( key_str, hex_key_string );
138 unhexify( iv_str, hex_iv_string );
139 data_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000140
141 blowfish_setkey( &ctx, key_str, key_len * 8 );
Paul Bakker33b43f12013-08-20 11:48:36 +0200142 TEST_ASSERT( blowfish_crypt_cbc( &ctx, BLOWFISH_DECRYPT, data_len , iv_str, src_str, output ) == cbc_result );
143 if( cbc_result == 0)
Paul Bakkera9379c02012-07-04 11:02:11 +0000144 {
145 hexify( dst_str, output, data_len );
146
Paul Bakker33b43f12013-08-20 11:48:36 +0200147 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000148 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200149
Paul Bakkerbd51b262014-07-10 15:26:12 +0200150exit:
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200151 blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000152}
Paul Bakker33b43f12013-08-20 11:48:36 +0200153/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000154
Manuel Pégourié-Gonnard29dcc0b2014-03-10 11:32:07 +0100155/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CFB */
Paul Bakker33b43f12013-08-20 11:48:36 +0200156void blowfish_encrypt_cfb64( char *hex_key_string, char *hex_iv_string,
157 char *hex_src_string, char *hex_dst_string )
Paul Bakkera9379c02012-07-04 11:02:11 +0000158{
159 unsigned char key_str[100];
160 unsigned char iv_str[100];
161 unsigned char src_str[100];
162 unsigned char dst_str[100];
163 unsigned char output[100];
164 blowfish_context ctx;
165 size_t iv_offset = 0;
166 int key_len, src_len;
167
168 memset(key_str, 0x00, 100);
169 memset(iv_str, 0x00, 100);
170 memset(src_str, 0x00, 100);
171 memset(dst_str, 0x00, 100);
172 memset(output, 0x00, 100);
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200173 blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000174
Paul Bakker33b43f12013-08-20 11:48:36 +0200175 key_len = unhexify( key_str, hex_key_string );
176 unhexify( iv_str, hex_iv_string );
177 src_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000178
179 blowfish_setkey( &ctx, key_str, key_len * 8 );
180 TEST_ASSERT( blowfish_crypt_cfb64( &ctx, BLOWFISH_ENCRYPT, src_len, &iv_offset, iv_str, src_str, output ) == 0 );
181 hexify( dst_str, output, src_len );
182
Paul Bakker33b43f12013-08-20 11:48:36 +0200183 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200184
Paul Bakkerbd51b262014-07-10 15:26:12 +0200185exit:
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200186 blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000187}
Paul Bakker33b43f12013-08-20 11:48:36 +0200188/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000189
Manuel Pégourié-Gonnard29dcc0b2014-03-10 11:32:07 +0100190/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CFB */
Paul Bakker33b43f12013-08-20 11:48:36 +0200191void blowfish_decrypt_cfb64( char *hex_key_string, char *hex_iv_string,
192 char *hex_src_string, char *hex_dst_string )
Paul Bakkera9379c02012-07-04 11:02:11 +0000193{
194 unsigned char key_str[100];
195 unsigned char iv_str[100];
196 unsigned char src_str[100];
197 unsigned char dst_str[100];
198 unsigned char output[100];
199 blowfish_context ctx;
200 size_t iv_offset = 0;
201 int key_len, src_len;
202
203 memset(key_str, 0x00, 100);
204 memset(iv_str, 0x00, 100);
205 memset(src_str, 0x00, 100);
206 memset(dst_str, 0x00, 100);
207 memset(output, 0x00, 100);
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200208 blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000209
Paul Bakker33b43f12013-08-20 11:48:36 +0200210 key_len = unhexify( key_str, hex_key_string );
211 unhexify( iv_str, hex_iv_string );
212 src_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000213
214 blowfish_setkey( &ctx, key_str, key_len * 8 );
215 TEST_ASSERT( blowfish_crypt_cfb64( &ctx, BLOWFISH_DECRYPT, src_len, &iv_offset, iv_str, src_str, output ) == 0 );
216 hexify( dst_str, output, src_len );
217
Paul Bakker33b43f12013-08-20 11:48:36 +0200218 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200219
Paul Bakkerbd51b262014-07-10 15:26:12 +0200220exit:
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200221 blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000222}
Paul Bakker33b43f12013-08-20 11:48:36 +0200223/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000224
Manuel Pégourié-Gonnard29dcc0b2014-03-10 11:32:07 +0100225/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CTR */
Paul Bakker33b43f12013-08-20 11:48:36 +0200226void blowfish_encrypt_ctr( char *hex_key_string, char *hex_iv_string,
227 char *hex_src_string, char *hex_dst_string )
Paul Bakkera9379c02012-07-04 11:02:11 +0000228{
229 unsigned char key_str[100];
230 unsigned char iv_str[100];
231 unsigned char stream_str[100];
232 unsigned char src_str[100];
233 unsigned char dst_str[100];
234 unsigned char output[100];
235 blowfish_context ctx;
236 size_t iv_offset = 0;
237 int key_len, src_len;
238
239 memset(key_str, 0x00, 100);
240 memset(iv_str, 0x00, 100);
241 memset(stream_str, 0x00, 100);
242 memset(src_str, 0x00, 100);
243 memset(dst_str, 0x00, 100);
244 memset(output, 0x00, 100);
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200245 blowfish_init( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000246
Paul Bakker33b43f12013-08-20 11:48:36 +0200247 key_len = unhexify( key_str, hex_key_string );
248 unhexify( iv_str, hex_iv_string );
249 src_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000250
251 blowfish_setkey( &ctx, key_str, key_len * 8 );
252 TEST_ASSERT( blowfish_crypt_ctr( &ctx, src_len, &iv_offset, iv_str, stream_str, src_str, output ) == 0 );
253 hexify( dst_str, output, src_len );
254
Paul Bakker33b43f12013-08-20 11:48:36 +0200255 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200256
Paul Bakkerbd51b262014-07-10 15:26:12 +0200257exit:
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200258 blowfish_free( &ctx );
Paul Bakkera9379c02012-07-04 11:02:11 +0000259}
Paul Bakker33b43f12013-08-20 11:48:36 +0200260/* END_CASE */