add changelog and NEWS entry
[gnuk/gnuk.git] / polarssl-0.14.0 / tests / suites / test_suite_camellia.function
1 BEGIN_HEADER
2 #include <polarssl/camellia.h>
3 END_HEADER
4
5 BEGIN_CASE
6 camellia_encrypt_ecb:hex_key_string:hex_src_string:hex_dst_string:setkey_result
7 {
8     unsigned char key_str[100];
9     unsigned char src_str[100];
10     unsigned char dst_str[100];
11     unsigned char output[100];
12     camellia_context ctx;
13     int key_len;
14
15     memset(key_str, 0x00, 100);
16     memset(src_str, 0x00, 100);
17     memset(dst_str, 0x00, 100);
18     memset(output, 0x00, 100);
19
20     key_len = unhexify( key_str, {hex_key_string} );
21     unhexify( src_str, {hex_src_string} );
22
23     TEST_ASSERT( camellia_setkey_enc( &ctx, key_str, key_len * 8 ) == {setkey_result} );
24     if( {setkey_result} == 0 )
25     {
26         TEST_ASSERT( camellia_crypt_ecb( &ctx, CAMELLIA_ENCRYPT, src_str, output ) == 0 );
27         hexify( dst_str, output, 16 );
28
29         TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
30     }
31 }
32 END_CASE
33
34 BEGIN_CASE
35 camellia_decrypt_ecb:hex_key_string:hex_src_string:hex_dst_string:setkey_result
36 {
37     unsigned char key_str[100];
38     unsigned char src_str[100];
39     unsigned char dst_str[100];
40     unsigned char output[100];
41     camellia_context ctx;
42     int key_len;
43
44     memset(key_str, 0x00, 100);
45     memset(src_str, 0x00, 100);
46     memset(dst_str, 0x00, 100);
47     memset(output, 0x00, 100);
48
49     key_len = unhexify( key_str, {hex_key_string} );
50     unhexify( src_str, {hex_src_string} );
51
52     TEST_ASSERT( camellia_setkey_dec( &ctx, key_str, key_len * 8 ) == {setkey_result} );
53     if( {setkey_result} == 0 )
54     {
55         TEST_ASSERT( camellia_crypt_ecb( &ctx, CAMELLIA_DECRYPT, src_str, output ) == 0 );
56         hexify( dst_str, output, 16 );
57
58         TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
59     }
60 }
61 END_CASE
62
63 BEGIN_CASE
64 camellia_encrypt_cbc:hex_key_string:hex_iv_string:hex_src_string:hex_dst_string:cbc_result
65 {
66     unsigned char key_str[100];
67     unsigned char iv_str[100];
68     unsigned char src_str[100];
69     unsigned char dst_str[100];
70     unsigned char output[100];
71     camellia_context ctx;
72     int key_len, data_len;
73
74     memset(key_str, 0x00, 100);
75     memset(iv_str, 0x00, 100);
76     memset(src_str, 0x00, 100);
77     memset(dst_str, 0x00, 100);
78     memset(output, 0x00, 100);
79
80     key_len = unhexify( key_str, {hex_key_string} );
81     unhexify( iv_str, {hex_iv_string} );
82     data_len = unhexify( src_str, {hex_src_string} );
83
84     camellia_setkey_enc( &ctx, key_str, key_len * 8 );
85     TEST_ASSERT( camellia_crypt_cbc( &ctx, CAMELLIA_ENCRYPT, data_len, iv_str, src_str, output) == {cbc_result} );
86     if( {cbc_result} == 0 )
87     {
88         hexify( dst_str, output, data_len );
89
90         TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
91     }
92 }
93 END_CASE
94
95 BEGIN_CASE
96 camellia_decrypt_cbc:hex_key_string:hex_iv_string:hex_src_string:hex_dst_string:cbc_result
97 {
98     unsigned char key_str[100];
99     unsigned char iv_str[100];
100     unsigned char src_str[100];
101     unsigned char dst_str[100];
102     unsigned char output[100];
103     camellia_context ctx;
104     int key_len, data_len;
105
106     memset(key_str, 0x00, 100);
107     memset(iv_str, 0x00, 100);
108     memset(src_str, 0x00, 100);
109     memset(dst_str, 0x00, 100);
110     memset(output, 0x00, 100);
111
112     key_len = unhexify( key_str, {hex_key_string} );
113     unhexify( iv_str, {hex_iv_string} );
114     data_len = unhexify( src_str, {hex_src_string} );
115
116     camellia_setkey_dec( &ctx, key_str, key_len * 8 );
117     TEST_ASSERT( camellia_crypt_cbc( &ctx, CAMELLIA_DECRYPT, data_len, iv_str, src_str, output ) == {cbc_result} );
118     if( {cbc_result} == 0 )
119     {
120         hexify( dst_str, output, data_len );
121
122         TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
123     }
124 }
125 END_CASE
126
127 BEGIN_CASE
128 camellia_encrypt_cfb128:hex_key_string:hex_iv_string:hex_src_string:hex_dst_string
129 {
130     unsigned char key_str[100];
131     unsigned char iv_str[100];
132     unsigned char src_str[100];
133     unsigned char dst_str[100];
134     unsigned char output[100];
135     camellia_context ctx;
136     int iv_offset = 0;
137     int key_len;
138
139     memset(key_str, 0x00, 100);
140     memset(iv_str, 0x00, 100);
141     memset(src_str, 0x00, 100);
142     memset(dst_str, 0x00, 100);
143     memset(output, 0x00, 100);
144
145     key_len = unhexify( key_str, {hex_key_string} );
146     unhexify( iv_str, {hex_iv_string} );
147     unhexify( src_str, {hex_src_string} );
148
149     camellia_setkey_enc( &ctx, key_str, key_len * 8 );
150     TEST_ASSERT( camellia_crypt_cfb128( &ctx, CAMELLIA_ENCRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 );
151     hexify( dst_str, output, 16 );
152
153     TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
154 }
155 END_CASE
156
157 BEGIN_CASE
158 camellia_decrypt_cfb128:hex_key_string:hex_iv_string:hex_src_string:hex_dst_string
159 {
160     unsigned char key_str[100];
161     unsigned char iv_str[100];
162     unsigned char src_str[100];
163     unsigned char dst_str[100];
164     unsigned char output[100];
165     camellia_context ctx;
166     int iv_offset = 0;
167     int key_len;
168
169     memset(key_str, 0x00, 100);
170     memset(iv_str, 0x00, 100);
171     memset(src_str, 0x00, 100);
172     memset(dst_str, 0x00, 100);
173     memset(output, 0x00, 100);
174
175     key_len = unhexify( key_str, {hex_key_string} );
176     unhexify( iv_str, {hex_iv_string} );
177     unhexify( src_str, {hex_src_string} );
178
179     camellia_setkey_enc( &ctx, key_str, key_len * 8 );
180     TEST_ASSERT( camellia_crypt_cfb128( &ctx, CAMELLIA_DECRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 );
181     hexify( dst_str, output, 16 );
182
183     TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
184 }
185 END_CASE
186
187 BEGIN_CASE
188 camellia_selftest:
189 {
190     TEST_ASSERT( camellia_self_test( 0 ) == 0 );
191 }
192 END_CASE