Skip to content

Commit 026eacf

Browse files
Ron EldorRon Eldor
Ron Eldor
authored and
Ron Eldor
committed
Add a helper macro for repetetive checks
Add helper macros for skipping self tests in case the returned error is `MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED`, since htese checks are very similar in all tests.
1 parent 162395f commit 026eacf

File tree

18 files changed

+368
-1248
lines changed

18 files changed

+368
-1248
lines changed

include/mbedtls/platform.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,30 @@
5050
extern "C" {
5151
#endif
5252

53+
#define MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_CONTINUE( RET ) \
54+
if( RET == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED ) \
55+
{ \
56+
if( verbose != 0 ) \
57+
mbedtls_printf( "skipped\n" ); \
58+
continue; \
59+
} \
60+
else if( RET != 0 ) \
61+
{ \
62+
goto exit; \
63+
}
64+
65+
#define MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( RET, VERBOSE ) \
66+
if( RET == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED ) \
67+
{ \
68+
if( VERBOSE != 0 ) \
69+
mbedtls_printf( "skipped\n" ); \
70+
break; \
71+
} \
72+
else if( RET != 0 ) \
73+
{ \
74+
goto exit; \
75+
}
76+
5377
#if defined(MBEDTLS_PLATFORM_C)
5478
/**
5579
* \name SECTION: Module settings

library/aes.c

Lines changed: 22 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1837,33 +1837,14 @@ int mbedtls_aes_self_test( int verbose )
18371837
aes_tests = aes_test_ecb_enc[u];
18381838
}
18391839

1840-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
1841-
{
1842-
if( verbose != 0 )
1843-
mbedtls_printf( "skipped\n" );
1844-
continue;
1845-
}
1846-
else if( ret != 0 )
1847-
{
1848-
goto exit;
1849-
}
1840+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_CONTINUE( ret );
18501841

18511842
for( j = 0; j < 10000; j++ )
18521843
{
18531844
ret = mbedtls_aes_crypt_ecb( &ctx, mode, buf, buf );
1854-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
1855-
{
1856-
break;
1857-
}
1858-
else if( ret != 0 )
1859-
goto exit;
1860-
}
1861-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
1862-
{
1863-
if( verbose != 0 )
1864-
mbedtls_printf( "skipped\n" );
1865-
break;
1845+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( ret, 0 );
18661846
}
1847+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( ret, verbose );
18671848

18681849
if( memcmp( buf, aes_tests, 16 ) != 0 )
18691850
{
@@ -1907,16 +1888,7 @@ int mbedtls_aes_self_test( int verbose )
19071888
aes_tests = aes_test_cbc_enc[u];
19081889
}
19091890

1910-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
1911-
{
1912-
if( verbose != 0 )
1913-
mbedtls_printf( "skipped\n" );
1914-
continue;
1915-
}
1916-
else if( ret != 0 )
1917-
{
1918-
goto exit;
1919-
}
1891+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_CONTINUE( ret );
19201892

19211893
for( j = 0; j < 10000; j++ )
19221894
{
@@ -1930,20 +1902,10 @@ int mbedtls_aes_self_test( int verbose )
19301902
}
19311903

19321904
ret = mbedtls_aes_crypt_cbc( &ctx, mode, 16, iv, buf, buf );
1933-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
1934-
{
1935-
break;
1936-
}
1937-
else if( ret != 0 )
1938-
goto exit;
1905+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( ret, 0 );
19391906

19401907
}
1941-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
1942-
{
1943-
if( verbose != 0 )
1944-
mbedtls_printf( "skipped\n" );
1945-
break;
1946-
}
1908+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( ret, verbose );
19471909

19481910
if( memcmp( buf, aes_tests, 16 ) != 0 )
19491911
{
@@ -1979,16 +1941,7 @@ int mbedtls_aes_self_test( int verbose )
19791941
offset = 0;
19801942
ret = mbedtls_aes_setkey_enc( &ctx, key, keybits );
19811943

1982-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
1983-
{
1984-
if( verbose != 0 )
1985-
mbedtls_printf( "skipped\n" );
1986-
continue;
1987-
}
1988-
else if( ret != 0 )
1989-
{
1990-
goto exit;
1991-
}
1944+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_CONTINUE( ret );
19921945

19931946
if( mode == MBEDTLS_AES_DECRYPT )
19941947
{
@@ -2002,14 +1955,7 @@ int mbedtls_aes_self_test( int verbose )
20021955
}
20031956

20041957
ret = mbedtls_aes_crypt_cfb128( &ctx, mode, 64, &offset, iv, buf, buf );
2005-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
2006-
{
2007-
if( verbose != 0 )
2008-
mbedtls_printf( "skipped\n" );
2009-
break;
2010-
}
2011-
else if( ret != 0 )
2012-
goto exit;
1958+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( ret, verbose );
20131959

20141960
if( memcmp( buf, aes_tests, 64 ) != 0 )
20151961
{
@@ -2045,16 +1991,7 @@ int mbedtls_aes_self_test( int verbose )
20451991
offset = 0;
20461992
ret = mbedtls_aes_setkey_enc( &ctx, key, keybits );
20471993

2048-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
2049-
{
2050-
if( verbose != 0 )
2051-
mbedtls_printf( "skipped\n" );
2052-
continue;
2053-
}
2054-
else if( ret != 0 )
2055-
{
2056-
goto exit;
2057-
}
1994+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_CONTINUE( ret );
20581995

20591996
if( mode == MBEDTLS_AES_DECRYPT )
20601997
{
@@ -2068,14 +2005,7 @@ int mbedtls_aes_self_test( int verbose )
20682005
}
20692006

20702007
ret = mbedtls_aes_crypt_ofb( &ctx, 64, &offset, iv, buf, buf );
2071-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
2072-
{
2073-
if( verbose != 0 )
2074-
mbedtls_printf( "skipped\n" );
2075-
break;
2076-
}
2077-
else if( ret != 0 )
2078-
goto exit;
2008+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( ret, verbose );
20792009

20802010
if( memcmp( buf, aes_tests, 64 ) != 0 )
20812011
{
@@ -2127,14 +2057,7 @@ int mbedtls_aes_self_test( int verbose )
21272057
ret = mbedtls_aes_crypt_ctr( &ctx, len, &offset, nonce_counter,
21282058
stream_block, buf, buf );
21292059

2130-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
2131-
{
2132-
if( verbose != 0 )
2133-
mbedtls_printf( "skipped\n" );
2134-
break;
2135-
}
2136-
else if( ret != 0 )
2137-
goto exit;
2060+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( ret, verbose );
21382061

21392062
if( memcmp( buf, aes_tests, len ) != 0 )
21402063
{
@@ -2181,29 +2104,17 @@ int mbedtls_aes_self_test( int verbose )
21812104
{
21822105
ret = mbedtls_aes_xts_setkey_dec( &ctx_xts, key, 256 );
21832106

2184-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
2185-
{
2186-
if( verbose != 0 )
2187-
mbedtls_printf( "skipped\n" );
2188-
continue;
2189-
}
2190-
else if( ret != 0)
2191-
goto exit;
2107+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_CONTINUE( ret );
2108+
21922109
memcpy( buf, aes_test_xts_ct32[u], len );
21932110
aes_tests = aes_test_xts_pt32[u];
21942111
}
21952112
else
21962113
{
21972114
ret = mbedtls_aes_xts_setkey_enc( &ctx_xts, key, 256 );
21982115

2199-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
2200-
{
2201-
if( verbose != 0 )
2202-
mbedtls_printf( "skipped\n" );
2203-
continue;
2204-
}
2205-
else if( ret != 0)
2206-
goto exit;
2116+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_CONTINUE( ret );
2117+
22072118
memcpy( buf, aes_test_xts_pt32[u], len );
22082119
aes_tests = aes_test_xts_ct32[u];
22092120
}
@@ -2212,14 +2123,7 @@ int mbedtls_aes_self_test( int verbose )
22122123
ret = mbedtls_aes_crypt_xts( &ctx_xts, mode, len, data_unit,
22132124
buf, buf );
22142125

2215-
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED )
2216-
{
2217-
if( verbose != 0 )
2218-
mbedtls_printf( "skipped\n" );
2219-
break;
2220-
}
2221-
else if( ret != 0 )
2222-
goto exit;
2126+
MBEDTLS_PLATFORM_SELF_TEST_CHECK_AND_BREAK( ret, verbose );
22232127

22242128
if( memcmp( buf, aes_tests, len ) != 0 )
22252129
{
@@ -2241,8 +2145,12 @@ int mbedtls_aes_self_test( int verbose )
22412145
ret = 0;
22422146

22432147
exit:
2244-
if( ret != 0 && verbose != 0 )
2245-
mbedtls_printf( "failed\n" );
2148+
if( ret != 0 )
2149+
{
2150+
ret = 1;
2151+
if( verbose != 0 )
2152+
mbedtls_printf( "failed\n" );
2153+
}
22462154

22472155
mbedtls_aes_free( &ctx );
22482156

0 commit comments

Comments
 (0)