blob: 673b88c18d272bedc3e54cf0548dbe85a58cff32 [file] [log] [blame]
Paul Bakker33b43f12013-08-20 11:48:36 +02001/* BEGIN_HEADER */
Paul Bakkera9379c02012-07-04 11:02:11 +00002#include "polarssl/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);
25
Paul Bakker33b43f12013-08-20 11:48:36 +020026 key_len = unhexify( key_str, hex_key_string );
27 unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +000028
Paul Bakker33b43f12013-08-20 11:48:36 +020029 TEST_ASSERT( blowfish_setkey( &ctx, key_str, key_len * 8 ) == setkey_result );
30 if( setkey_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +000031 {
32 TEST_ASSERT( blowfish_crypt_ecb( &ctx, BLOWFISH_ENCRYPT, src_str, output ) == 0 );
33 hexify( dst_str, output, 8 );
34
Paul Bakker33b43f12013-08-20 11:48:36 +020035 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +000036 }
37}
Paul Bakker33b43f12013-08-20 11:48:36 +020038/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +000039
Paul Bakker33b43f12013-08-20 11:48:36 +020040/* BEGIN_CASE */
41void blowfish_decrypt_ecb( char *hex_key_string, char *hex_src_string,
42 char *hex_dst_string, int setkey_result )
Paul Bakkera9379c02012-07-04 11:02:11 +000043{
44 unsigned char key_str[100];
45 unsigned char src_str[100];
46 unsigned char dst_str[100];
47 unsigned char output[100];
48 blowfish_context ctx;
49 int key_len;
50
51 memset(key_str, 0x00, 100);
52 memset(src_str, 0x00, 100);
53 memset(dst_str, 0x00, 100);
54 memset(output, 0x00, 100);
55
Paul Bakker33b43f12013-08-20 11:48:36 +020056 key_len = unhexify( key_str, hex_key_string );
57 unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +000058
Paul Bakker33b43f12013-08-20 11:48:36 +020059 TEST_ASSERT( blowfish_setkey( &ctx, key_str, key_len * 8 ) == setkey_result );
60 if( setkey_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +000061 {
62 TEST_ASSERT( blowfish_crypt_ecb( &ctx, BLOWFISH_DECRYPT, src_str, output ) == 0 );
63 hexify( dst_str, output, 8 );
64
Paul Bakker33b43f12013-08-20 11:48:36 +020065 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +000066 }
67}
Paul Bakker33b43f12013-08-20 11:48:36 +020068/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +000069
Manuel Pégourié-Gonnard92cb1d32013-09-13 16:24:20 +020070/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
Paul Bakker33b43f12013-08-20 11:48:36 +020071void blowfish_encrypt_cbc( char *hex_key_string, char *hex_iv_string,
72 char *hex_src_string, char *hex_dst_string,
73 int cbc_result )
Paul Bakkera9379c02012-07-04 11:02:11 +000074{
75 unsigned char key_str[100];
76 unsigned char iv_str[100];
77 unsigned char src_str[100];
78 unsigned char dst_str[100];
79 unsigned char output[100];
80 blowfish_context ctx;
81 int key_len, data_len;
82
83 memset(key_str, 0x00, 100);
84 memset(iv_str, 0x00, 100);
85 memset(src_str, 0x00, 100);
86 memset(dst_str, 0x00, 100);
87 memset(output, 0x00, 100);
88
Paul Bakker33b43f12013-08-20 11:48:36 +020089 key_len = unhexify( key_str, hex_key_string );
90 unhexify( iv_str, hex_iv_string );
91 data_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +000092
93 blowfish_setkey( &ctx, key_str, key_len * 8 );
94
Paul Bakker33b43f12013-08-20 11:48:36 +020095 TEST_ASSERT( blowfish_crypt_cbc( &ctx, BLOWFISH_ENCRYPT, data_len , iv_str, src_str, output ) == cbc_result );
96 if( cbc_result == 0 )
Paul Bakkera9379c02012-07-04 11:02:11 +000097 {
98 hexify( dst_str, output, data_len );
99
Paul Bakker33b43f12013-08-20 11:48:36 +0200100 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000101 }
102}
Paul Bakker33b43f12013-08-20 11:48:36 +0200103/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000104
Manuel Pégourié-Gonnard92cb1d32013-09-13 16:24:20 +0200105/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
Paul Bakker33b43f12013-08-20 11:48:36 +0200106void blowfish_decrypt_cbc( char *hex_key_string, char *hex_iv_string,
107 char *hex_src_string, char *hex_dst_string,
108 int cbc_result )
Paul Bakkera9379c02012-07-04 11:02:11 +0000109{
110 unsigned char key_str[100];
111 unsigned char iv_str[100];
112 unsigned char src_str[100];
113 unsigned char dst_str[100];
114 unsigned char output[100];
115 blowfish_context ctx;
116 int key_len, data_len;
117
118 memset(key_str, 0x00, 100);
119 memset(iv_str, 0x00, 100);
120 memset(src_str, 0x00, 100);
121 memset(dst_str, 0x00, 100);
122 memset(output, 0x00, 100);
123
Paul Bakker33b43f12013-08-20 11:48:36 +0200124 key_len = unhexify( key_str, hex_key_string );
125 unhexify( iv_str, hex_iv_string );
126 data_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000127
128 blowfish_setkey( &ctx, key_str, key_len * 8 );
Paul Bakker33b43f12013-08-20 11:48:36 +0200129 TEST_ASSERT( blowfish_crypt_cbc( &ctx, BLOWFISH_DECRYPT, data_len , iv_str, src_str, output ) == cbc_result );
130 if( cbc_result == 0)
Paul Bakkera9379c02012-07-04 11:02:11 +0000131 {
132 hexify( dst_str, output, data_len );
133
Paul Bakker33b43f12013-08-20 11:48:36 +0200134 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000135 }
136}
Paul Bakker33b43f12013-08-20 11:48:36 +0200137/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000138
Manuel Pégourié-Gonnard29dcc0b2014-03-10 11:32:07 +0100139/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CFB */
Paul Bakker33b43f12013-08-20 11:48:36 +0200140void blowfish_encrypt_cfb64( char *hex_key_string, char *hex_iv_string,
141 char *hex_src_string, char *hex_dst_string )
Paul Bakkera9379c02012-07-04 11:02:11 +0000142{
143 unsigned char key_str[100];
144 unsigned char iv_str[100];
145 unsigned char src_str[100];
146 unsigned char dst_str[100];
147 unsigned char output[100];
148 blowfish_context ctx;
149 size_t iv_offset = 0;
150 int key_len, src_len;
151
152 memset(key_str, 0x00, 100);
153 memset(iv_str, 0x00, 100);
154 memset(src_str, 0x00, 100);
155 memset(dst_str, 0x00, 100);
156 memset(output, 0x00, 100);
157
Paul Bakker33b43f12013-08-20 11:48:36 +0200158 key_len = unhexify( key_str, hex_key_string );
159 unhexify( iv_str, hex_iv_string );
160 src_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000161
162 blowfish_setkey( &ctx, key_str, key_len * 8 );
163 TEST_ASSERT( blowfish_crypt_cfb64( &ctx, BLOWFISH_ENCRYPT, src_len, &iv_offset, iv_str, src_str, output ) == 0 );
164 hexify( dst_str, output, src_len );
165
Paul Bakker33b43f12013-08-20 11:48:36 +0200166 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000167}
Paul Bakker33b43f12013-08-20 11:48:36 +0200168/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000169
Manuel Pégourié-Gonnard29dcc0b2014-03-10 11:32:07 +0100170/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CFB */
Paul Bakker33b43f12013-08-20 11:48:36 +0200171void blowfish_decrypt_cfb64( char *hex_key_string, char *hex_iv_string,
172 char *hex_src_string, char *hex_dst_string )
Paul Bakkera9379c02012-07-04 11:02:11 +0000173{
174 unsigned char key_str[100];
175 unsigned char iv_str[100];
176 unsigned char src_str[100];
177 unsigned char dst_str[100];
178 unsigned char output[100];
179 blowfish_context ctx;
180 size_t iv_offset = 0;
181 int key_len, src_len;
182
183 memset(key_str, 0x00, 100);
184 memset(iv_str, 0x00, 100);
185 memset(src_str, 0x00, 100);
186 memset(dst_str, 0x00, 100);
187 memset(output, 0x00, 100);
188
Paul Bakker33b43f12013-08-20 11:48:36 +0200189 key_len = unhexify( key_str, hex_key_string );
190 unhexify( iv_str, hex_iv_string );
191 src_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000192
193 blowfish_setkey( &ctx, key_str, key_len * 8 );
194 TEST_ASSERT( blowfish_crypt_cfb64( &ctx, BLOWFISH_DECRYPT, src_len, &iv_offset, iv_str, src_str, output ) == 0 );
195 hexify( dst_str, output, src_len );
196
Paul Bakker33b43f12013-08-20 11:48:36 +0200197 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000198}
Paul Bakker33b43f12013-08-20 11:48:36 +0200199/* END_CASE */
Paul Bakkera9379c02012-07-04 11:02:11 +0000200
Manuel Pégourié-Gonnard29dcc0b2014-03-10 11:32:07 +0100201/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CTR */
Paul Bakker33b43f12013-08-20 11:48:36 +0200202void blowfish_encrypt_ctr( char *hex_key_string, char *hex_iv_string,
203 char *hex_src_string, char *hex_dst_string )
Paul Bakkera9379c02012-07-04 11:02:11 +0000204{
205 unsigned char key_str[100];
206 unsigned char iv_str[100];
207 unsigned char stream_str[100];
208 unsigned char src_str[100];
209 unsigned char dst_str[100];
210 unsigned char output[100];
211 blowfish_context ctx;
212 size_t iv_offset = 0;
213 int key_len, src_len;
214
215 memset(key_str, 0x00, 100);
216 memset(iv_str, 0x00, 100);
217 memset(stream_str, 0x00, 100);
218 memset(src_str, 0x00, 100);
219 memset(dst_str, 0x00, 100);
220 memset(output, 0x00, 100);
221
Paul Bakker33b43f12013-08-20 11:48:36 +0200222 key_len = unhexify( key_str, hex_key_string );
223 unhexify( iv_str, hex_iv_string );
224 src_len = unhexify( src_str, hex_src_string );
Paul Bakkera9379c02012-07-04 11:02:11 +0000225
226 blowfish_setkey( &ctx, key_str, key_len * 8 );
227 TEST_ASSERT( blowfish_crypt_ctr( &ctx, src_len, &iv_offset, iv_str, stream_str, src_str, output ) == 0 );
228 hexify( dst_str, output, src_len );
229
Paul Bakker33b43f12013-08-20 11:48:36 +0200230 TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 );
Paul Bakkera9379c02012-07-04 11:02:11 +0000231}
Paul Bakker33b43f12013-08-20 11:48:36 +0200232/* END_CASE */