- Added additional cases for MPI, MDx
- Added test case set for Camellia, DES and 3-DES
diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function
index cea5edd..c4ef3d1 100644
--- a/tests/suites/test_suite_mpi.function
+++ b/tests/suites/test_suite_mpi.function
@@ -22,7 +22,115 @@
TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
TEST_ASSERT( mpi_write_string( &X, {radix_A}, str, &len ) == 0 );
- TEST_ASSERT( strcmp( str, {input_A} ) == 0 );
+ TEST_ASSERT( strcasecmp( str, {input_A} ) == 0 );
+}
+END_CASE
+
+BEGIN_CASE
+mpi_read_binary:input_X:radix_A:input_A
+{
+ mpi X;
+ unsigned char str[1000];
+ unsigned char buf[1000];
+ int len = 1000;
+
+ mpi_init(&X, NULL);
+
+ int input_len = unhexify( buf, {input_X} );
+
+ TEST_ASSERT( mpi_read_binary( &X, buf, input_len ) == 0 );
+ TEST_ASSERT( mpi_write_string( &X, {radix_A}, (char *) str, &len ) == 0 );
+ TEST_ASSERT( strcmp( (char *) str, {input_A} ) == 0 );
+}
+END_CASE
+
+BEGIN_CASE
+mpi_write_binary:radix_X:input_X:input_A
+{
+ mpi X;
+ unsigned char str[1000];
+ unsigned char buf[1000];
+
+ memset( buf, 0x00, 1000 );
+ memset( str, 0x00, 1000 );
+
+ mpi_init(&X, NULL);
+
+ TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
+
+ int buflen = mpi_size( &X );
+ TEST_ASSERT( mpi_write_binary( &X, buf, buflen ) == 0 );
+
+ hexify( str, buf, buflen );
+
+ TEST_ASSERT( strcasecmp( (char *) str, {input_A} ) == 0 );
+}
+END_CASE
+
+BEGIN_CASE
+mpi_read_file:radix_X:input_file:input_A
+{
+ mpi X;
+ unsigned char str[1000];
+ unsigned char buf[1000];
+
+ memset( buf, 0x00, 1000 );
+ memset( str, 0x00, 1000 );
+
+ mpi_init(&X, NULL);
+
+ FILE *file = fopen( {input_file}, "r" );
+ TEST_ASSERT( mpi_read_file( &X, {radix_X}, file ) == 0 );
+ fclose(file);
+
+ int buflen = mpi_size( &X );
+ TEST_ASSERT( mpi_write_binary( &X, buf, buflen ) == 0 );
+
+ hexify( str, buf, buflen );
+
+ TEST_ASSERT( strcasecmp( (char *) str, {input_A} ) == 0 );
+}
+END_CASE
+
+BEGIN_CASE
+mpi_write_file:radix_X:input_X:output_radix:output_file
+{
+ mpi X, Y;
+ mpi_init( &X, &Y, NULL );
+
+ TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
+
+ FILE *file_out = fopen( {output_file}, "w" );
+ TEST_ASSERT( mpi_write_file( NULL, &X, {output_radix}, file_out ) == 0 );
+ fclose(file_out);
+
+ FILE *file_in = fopen( {output_file}, "r" );
+ TEST_ASSERT( mpi_read_file( &Y, {output_radix}, file_in ) == 0 );
+ fclose(file_in);
+
+ TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) == 0 );
+}
+END_CASE
+
+BEGIN_CASE
+mpi_lsb:radix_X:input_X:nr_bits
+{
+ mpi X;
+ mpi_init(&X, NULL);
+
+ TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
+ TEST_ASSERT( mpi_lsb( &X ) == {nr_bits} );
+}
+END_CASE
+
+BEGIN_CASE
+mpi_msb:radix_X:input_X:nr_bits
+{
+ mpi X;
+ mpi_init(&X, NULL);
+
+ TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
+ TEST_ASSERT( mpi_msb( &X ) == {nr_bits} );
}
END_CASE
@@ -93,6 +201,18 @@
END_CASE
BEGIN_CASE
+mpi_copy_self:input_X
+{
+ mpi X;
+ mpi_init(&X, NULL);
+
+ TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0 );
+ TEST_ASSERT( mpi_copy( &X, &X ) == 0 );
+ TEST_ASSERT( mpi_cmp_int( &X, {input_X} ) == 0 );
+}
+END_CASE
+
+BEGIN_CASE
mpi_swap:input_X:input_Y
{
mpi X, Y, A;
@@ -382,6 +502,12 @@
}
END_CASE
+BEGIN_CASE
+mpi_selftest:
+{
+ TEST_ASSERT( mpi_self_test( 0 ) == 0 );
+}
+END_CASE
/* Helper Code
char str[1000];
int len = 1000;