blob: 5b249355b66903b64547b6fe5a9570c8f3b18184 [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/des.h"
Paul Bakker33b43f12013-08-20 11:48:36 +02003/* END_HEADER */
Paul Bakkere896fea2009-07-06 06:40:23 +00004
Paul Bakker33b43f12013-08-20 11:48:36 +02005/* BEGIN_DEPENDENCIES
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006 * depends_on:MBEDTLS_DES_C
Paul Bakker33b43f12013-08-20 11:48:36 +02007 * END_DEPENDENCIES
8 */
Paul Bakker5690efc2011-05-26 13:16:06 +00009
Paul Bakker33b43f12013-08-20 11:48:36 +020010/* BEGIN_CASE */
Azim Khan5fcca462018-06-29 11:05:32 +010011void des_check_weak( data_t * key, int ret )
Manuel Pégourié-Gonnard9ce7e842014-03-29 17:06:43 +010012{
Azim Khand30ca132017-06-09 04:32:58 +010013 TEST_ASSERT( mbedtls_des_key_check_weak( key->x ) == ret );
Manuel Pégourié-Gonnard9ce7e842014-03-29 17:06:43 +010014}
15/* END_CASE */
16
17/* BEGIN_CASE */
Ronald Cronac6ae352020-06-26 14:33:03 +020018void des_encrypt_ecb( data_t * key_str, data_t * src_str, data_t * dst )
Paul Bakkere896fea2009-07-06 06:40:23 +000019{
Paul Bakkere896fea2009-07-06 06:40:23 +000020 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020021 mbedtls_des_context ctx;
Paul Bakkere896fea2009-07-06 06:40:23 +000022
Paul Bakkere896fea2009-07-06 06:40:23 +000023 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020024 mbedtls_des_init( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +000025
Paul Bakkere896fea2009-07-06 06:40:23 +000026
Azim Khand30ca132017-06-09 04:32:58 +010027 mbedtls_des_setkey_enc( &ctx, key_str->x );
28 TEST_ASSERT( mbedtls_des_crypt_ecb( &ctx, src_str->x, output ) == 0 );
Paul Bakkere896fea2009-07-06 06:40:23 +000029
Ronald Cronac6ae352020-06-26 14:33:03 +020030 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, 8, dst->len ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +020031
Paul Bakkerbd51b262014-07-10 15:26:12 +020032exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020033 mbedtls_des_free( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +000034}
Paul Bakker33b43f12013-08-20 11:48:36 +020035/* END_CASE */
Paul Bakkere896fea2009-07-06 06:40:23 +000036
Paul Bakker33b43f12013-08-20 11:48:36 +020037/* BEGIN_CASE */
Ronald Cronac6ae352020-06-26 14:33:03 +020038void des_decrypt_ecb( data_t * key_str, data_t * src_str, data_t * dst )
Paul Bakkere896fea2009-07-06 06:40:23 +000039{
Paul Bakkere896fea2009-07-06 06:40:23 +000040 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020041 mbedtls_des_context ctx;
Paul Bakkere896fea2009-07-06 06:40:23 +000042
Paul Bakkere896fea2009-07-06 06:40:23 +000043 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020044 mbedtls_des_init( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +000045
Paul Bakkere896fea2009-07-06 06:40:23 +000046
Azim Khand30ca132017-06-09 04:32:58 +010047 mbedtls_des_setkey_dec( &ctx, key_str->x );
48 TEST_ASSERT( mbedtls_des_crypt_ecb( &ctx, src_str->x, output ) == 0 );
Paul Bakkere896fea2009-07-06 06:40:23 +000049
Ronald Cronac6ae352020-06-26 14:33:03 +020050 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, 8, dst->len ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +020051
Paul Bakkerbd51b262014-07-10 15:26:12 +020052exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020053 mbedtls_des_free( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +000054}
Paul Bakker33b43f12013-08-20 11:48:36 +020055/* END_CASE */
Paul Bakkere896fea2009-07-06 06:40:23 +000056
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020057/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Azim Khan5fcca462018-06-29 11:05:32 +010058void des_encrypt_cbc( data_t * key_str, data_t * iv_str,
Ronald Cronac6ae352020-06-26 14:33:03 +020059 data_t * src_str, data_t * dst, int cbc_result )
Paul Bakkere896fea2009-07-06 06:40:23 +000060{
Paul Bakkere896fea2009-07-06 06:40:23 +000061 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020062 mbedtls_des_context ctx;
Paul Bakkere896fea2009-07-06 06:40:23 +000063
Paul Bakkere896fea2009-07-06 06:40:23 +000064 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020065 mbedtls_des_init( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +000066
Paul Bakkere896fea2009-07-06 06:40:23 +000067
Azim Khand30ca132017-06-09 04:32:58 +010068 mbedtls_des_setkey_enc( &ctx, key_str->x );
69 TEST_ASSERT( mbedtls_des_crypt_cbc( &ctx, MBEDTLS_DES_ENCRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result );
Paul Bakker33b43f12013-08-20 11:48:36 +020070 if( cbc_result == 0 )
Paul Bakkerf3ccc682010-03-18 21:21:02 +000071 {
Paul Bakkere896fea2009-07-06 06:40:23 +000072
Ronald Cronac6ae352020-06-26 14:33:03 +020073 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, src_str->len,
74 dst->len ) == 0 );
Paul Bakkerf3ccc682010-03-18 21:21:02 +000075 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +020076
Paul Bakkerbd51b262014-07-10 15:26:12 +020077exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020078 mbedtls_des_free( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +000079}
Paul Bakker33b43f12013-08-20 11:48:36 +020080/* END_CASE */
Paul Bakkere896fea2009-07-06 06:40:23 +000081
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020082/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Azim Khan5fcca462018-06-29 11:05:32 +010083void des_decrypt_cbc( data_t * key_str, data_t * iv_str,
Ronald Cronac6ae352020-06-26 14:33:03 +020084 data_t * src_str, data_t * dst,
Azim Khanf1aaec92017-05-30 14:23:15 +010085 int cbc_result )
Paul Bakkere896fea2009-07-06 06:40:23 +000086{
Paul Bakkere896fea2009-07-06 06:40:23 +000087 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020088 mbedtls_des_context ctx;
Paul Bakkere896fea2009-07-06 06:40:23 +000089
Paul Bakkere896fea2009-07-06 06:40:23 +000090 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020091 mbedtls_des_init( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +000092
Paul Bakkere896fea2009-07-06 06:40:23 +000093
Azim Khand30ca132017-06-09 04:32:58 +010094 mbedtls_des_setkey_dec( &ctx, key_str->x );
95 TEST_ASSERT( mbedtls_des_crypt_cbc( &ctx, MBEDTLS_DES_DECRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result );
Paul Bakker33b43f12013-08-20 11:48:36 +020096 if( cbc_result == 0 )
Paul Bakkerf3ccc682010-03-18 21:21:02 +000097 {
Paul Bakkere896fea2009-07-06 06:40:23 +000098
Ronald Cronac6ae352020-06-26 14:33:03 +020099 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, src_str->len,
100 dst->len ) == 0 );
Paul Bakkerf3ccc682010-03-18 21:21:02 +0000101 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200102
Paul Bakkerbd51b262014-07-10 15:26:12 +0200103exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200104 mbedtls_des_free( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000105}
Paul Bakker33b43f12013-08-20 11:48:36 +0200106/* END_CASE */
Paul Bakkere896fea2009-07-06 06:40:23 +0000107
Paul Bakker33b43f12013-08-20 11:48:36 +0200108/* BEGIN_CASE */
Azim Khan5fcca462018-06-29 11:05:32 +0100109void des3_encrypt_ecb( int key_count, data_t * key_str,
Ronald Cronac6ae352020-06-26 14:33:03 +0200110 data_t * src_str, data_t * dst )
Paul Bakkere896fea2009-07-06 06:40:23 +0000111{
Paul Bakkere896fea2009-07-06 06:40:23 +0000112 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200113 mbedtls_des3_context ctx;
Paul Bakkere896fea2009-07-06 06:40:23 +0000114
Paul Bakkere896fea2009-07-06 06:40:23 +0000115 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200116 mbedtls_des3_init( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000117
Paul Bakkere896fea2009-07-06 06:40:23 +0000118
Paul Bakker33b43f12013-08-20 11:48:36 +0200119 if( key_count == 2 )
Azim Khand30ca132017-06-09 04:32:58 +0100120 mbedtls_des3_set2key_enc( &ctx, key_str->x );
Paul Bakker33b43f12013-08-20 11:48:36 +0200121 else if( key_count == 3 )
Azim Khand30ca132017-06-09 04:32:58 +0100122 mbedtls_des3_set3key_enc( &ctx, key_str->x );
Paul Bakkere896fea2009-07-06 06:40:23 +0000123 else
124 TEST_ASSERT( 0 );
125
Azim Khand30ca132017-06-09 04:32:58 +0100126 TEST_ASSERT( mbedtls_des3_crypt_ecb( &ctx, src_str->x, output ) == 0 );
Paul Bakkere896fea2009-07-06 06:40:23 +0000127
Ronald Cronac6ae352020-06-26 14:33:03 +0200128 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, 8, dst->len ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200129
Paul Bakkerbd51b262014-07-10 15:26:12 +0200130exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200131 mbedtls_des3_free( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000132}
Paul Bakker33b43f12013-08-20 11:48:36 +0200133/* END_CASE */
Paul Bakkere896fea2009-07-06 06:40:23 +0000134
Paul Bakker33b43f12013-08-20 11:48:36 +0200135/* BEGIN_CASE */
Azim Khan5fcca462018-06-29 11:05:32 +0100136void des3_decrypt_ecb( int key_count, data_t * key_str,
Ronald Cronac6ae352020-06-26 14:33:03 +0200137 data_t * src_str, data_t * dst )
Paul Bakkere896fea2009-07-06 06:40:23 +0000138{
Paul Bakkere896fea2009-07-06 06:40:23 +0000139 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200140 mbedtls_des3_context ctx;
Paul Bakkere896fea2009-07-06 06:40:23 +0000141
Paul Bakkere896fea2009-07-06 06:40:23 +0000142 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200143 mbedtls_des3_init( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000144
Paul Bakkere896fea2009-07-06 06:40:23 +0000145
Paul Bakker33b43f12013-08-20 11:48:36 +0200146 if( key_count == 2 )
Azim Khand30ca132017-06-09 04:32:58 +0100147 mbedtls_des3_set2key_dec( &ctx, key_str->x );
Paul Bakker33b43f12013-08-20 11:48:36 +0200148 else if( key_count == 3 )
Azim Khand30ca132017-06-09 04:32:58 +0100149 mbedtls_des3_set3key_dec( &ctx, key_str->x );
Paul Bakkere896fea2009-07-06 06:40:23 +0000150 else
151 TEST_ASSERT( 0 );
152
Azim Khand30ca132017-06-09 04:32:58 +0100153 TEST_ASSERT( mbedtls_des3_crypt_ecb( &ctx, src_str->x, output ) == 0 );
Paul Bakkere896fea2009-07-06 06:40:23 +0000154
Ronald Cronac6ae352020-06-26 14:33:03 +0200155 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, 8, dst->len ) == 0 );
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200156
Paul Bakkerbd51b262014-07-10 15:26:12 +0200157exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200158 mbedtls_des3_free( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000159}
Paul Bakker33b43f12013-08-20 11:48:36 +0200160/* END_CASE */
Paul Bakkere896fea2009-07-06 06:40:23 +0000161
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200162/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Azim Khan5fcca462018-06-29 11:05:32 +0100163void des3_encrypt_cbc( int key_count, data_t * key_str,
164 data_t * iv_str, data_t * src_str,
Ronald Cronac6ae352020-06-26 14:33:03 +0200165 data_t * dst, int cbc_result )
Paul Bakkere896fea2009-07-06 06:40:23 +0000166{
Paul Bakkere896fea2009-07-06 06:40:23 +0000167 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200168 mbedtls_des3_context ctx;
Paul Bakkere896fea2009-07-06 06:40:23 +0000169
Paul Bakkere896fea2009-07-06 06:40:23 +0000170 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200171 mbedtls_des3_init( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000172
Paul Bakkere896fea2009-07-06 06:40:23 +0000173
Paul Bakker33b43f12013-08-20 11:48:36 +0200174 if( key_count == 2 )
Azim Khand30ca132017-06-09 04:32:58 +0100175 mbedtls_des3_set2key_enc( &ctx, key_str->x );
Paul Bakker33b43f12013-08-20 11:48:36 +0200176 else if( key_count == 3 )
Azim Khand30ca132017-06-09 04:32:58 +0100177 mbedtls_des3_set3key_enc( &ctx, key_str->x );
Paul Bakkere896fea2009-07-06 06:40:23 +0000178 else
179 TEST_ASSERT( 0 );
180
Azim Khand30ca132017-06-09 04:32:58 +0100181 TEST_ASSERT( mbedtls_des3_crypt_cbc( &ctx, MBEDTLS_DES_ENCRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result );
Paul Bakker02722ea2011-05-25 11:34:44 +0000182
Paul Bakker33b43f12013-08-20 11:48:36 +0200183 if( cbc_result == 0 )
Paul Bakkerf3ccc682010-03-18 21:21:02 +0000184 {
Paul Bakkere896fea2009-07-06 06:40:23 +0000185
Ronald Cronac6ae352020-06-26 14:33:03 +0200186 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x,
187 src_str->len, dst->len ) == 0 );
Paul Bakkerf3ccc682010-03-18 21:21:02 +0000188 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200189
Paul Bakkerbd51b262014-07-10 15:26:12 +0200190exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200191 mbedtls_des3_free( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000192}
Paul Bakker33b43f12013-08-20 11:48:36 +0200193/* END_CASE */
Paul Bakkere896fea2009-07-06 06:40:23 +0000194
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200195/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Azim Khan5fcca462018-06-29 11:05:32 +0100196void des3_decrypt_cbc( int key_count, data_t * key_str,
197 data_t * iv_str, data_t * src_str,
Ronald Cronac6ae352020-06-26 14:33:03 +0200198 data_t * dst, int cbc_result )
Paul Bakkere896fea2009-07-06 06:40:23 +0000199{
Paul Bakkere896fea2009-07-06 06:40:23 +0000200 unsigned char output[100];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200201 mbedtls_des3_context ctx;
Paul Bakkere896fea2009-07-06 06:40:23 +0000202
Paul Bakkere896fea2009-07-06 06:40:23 +0000203 memset(output, 0x00, 100);
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200204 mbedtls_des3_init( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000205
Paul Bakkere896fea2009-07-06 06:40:23 +0000206
Paul Bakker33b43f12013-08-20 11:48:36 +0200207 if( key_count == 2 )
Azim Khand30ca132017-06-09 04:32:58 +0100208 mbedtls_des3_set2key_dec( &ctx, key_str->x );
Paul Bakker33b43f12013-08-20 11:48:36 +0200209 else if( key_count == 3 )
Azim Khand30ca132017-06-09 04:32:58 +0100210 mbedtls_des3_set3key_dec( &ctx, key_str->x );
Paul Bakkere896fea2009-07-06 06:40:23 +0000211 else
212 TEST_ASSERT( 0 );
213
Azim Khand30ca132017-06-09 04:32:58 +0100214 TEST_ASSERT( mbedtls_des3_crypt_cbc( &ctx, MBEDTLS_DES_DECRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result );
Paul Bakker02722ea2011-05-25 11:34:44 +0000215
Paul Bakker33b43f12013-08-20 11:48:36 +0200216 if( cbc_result == 0 )
Paul Bakkerf3ccc682010-03-18 21:21:02 +0000217 {
Paul Bakkere896fea2009-07-06 06:40:23 +0000218
Ronald Cronac6ae352020-06-26 14:33:03 +0200219 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, src_str->len,
220 dst->len ) == 0 );
Paul Bakkerf3ccc682010-03-18 21:21:02 +0000221 }
Paul Bakker8cfd9d82014-06-18 11:16:11 +0200222
Paul Bakkerbd51b262014-07-10 15:26:12 +0200223exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200224 mbedtls_des3_free( &ctx );
Paul Bakkere896fea2009-07-06 06:40:23 +0000225}
Paul Bakker33b43f12013-08-20 11:48:36 +0200226/* END_CASE */
Paul Bakkere896fea2009-07-06 06:40:23 +0000227
Paul Bakker33b43f12013-08-20 11:48:36 +0200228/* BEGIN_CASE */
Azim Khanf1aaec92017-05-30 14:23:15 +0100229void des_key_parity_run( )
Paul Bakker1f87fb62011-01-15 17:32:24 +0000230{
231 int i, j, cnt;
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200232 unsigned char key[MBEDTLS_DES_KEY_SIZE];
Paul Bakker1f87fb62011-01-15 17:32:24 +0000233 unsigned int parity;
234
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200235 memset( key, 0, MBEDTLS_DES_KEY_SIZE );
Paul Bakker1f87fb62011-01-15 17:32:24 +0000236 cnt = 0;
237
238 // Iterate through all possible byte values
239 //
240 for( i = 0; i < 32; i++ )
241 {
242 for( j = 0; j < 8; j++ )
243 key[j] = cnt++;
244
245 // Set the key parity according to the table
246 //
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200247 mbedtls_des_key_set_parity( key );
Paul Bakker1f87fb62011-01-15 17:32:24 +0000248
249 // Check the parity with a function
250 //
251 for( j = 0; j < 8; j++ )
252 {
253 parity = key[j] ^ ( key[j] >> 4 );
254 parity = parity ^
255 ( parity >> 1 ) ^
256 ( parity >> 2 ) ^
257 ( parity >> 3 );
258 parity &= 1;
259
260 if( parity != 1 )
261 TEST_ASSERT( 0 );
262 }
263
264 // Check the parity with the table
265 //
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200266 TEST_ASSERT( mbedtls_des_key_check_key_parity( key ) == 0 );
Paul Bakker1f87fb62011-01-15 17:32:24 +0000267 }
268}
Paul Bakker33b43f12013-08-20 11:48:36 +0200269/* END_CASE */
Paul Bakker1f87fb62011-01-15 17:32:24 +0000270
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200271/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100272void des_selftest( )
Paul Bakkere896fea2009-07-06 06:40:23 +0000273{
Andres AG93012e82016-09-09 09:10:28 +0100274 TEST_ASSERT( mbedtls_des_self_test( 1 ) == 0 );
Paul Bakkere896fea2009-07-06 06:40:23 +0000275}
Paul Bakker33b43f12013-08-20 11:48:36 +0200276/* END_CASE */