| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | /* BEGIN_HEADER */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /* This test module exercises the timing module. Since, depending on the | 
					
						
							|  |  |  |  * underlying operating system, the timing routines are not always reliable, | 
					
						
							|  |  |  |  * this suite only performs very basic sanity checks of the timing API. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <limits.h> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "mbedtls/timing.h" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* END_HEADER */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* BEGIN_DEPENDENCIES | 
					
						
							|  |  |  |  * depends_on:MBEDTLS_TIMING_C | 
					
						
							|  |  |  |  * END_DEPENDENCIES | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* BEGIN_CASE */ | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | void timing_hardclock( ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     (void) mbedtls_timing_hardclock(); | 
					
						
							|  |  |  |     /* This goto is added to avoid warnings from the generated code. */ | 
					
						
							|  |  |  |     goto exit; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | } | 
					
						
							|  |  |  | /* END_CASE */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* BEGIN_CASE */ | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | void timing_get_timer( ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     struct mbedtls_timing_hr_time time; | 
					
						
							|  |  |  |     (void) mbedtls_timing_get_timer( &time, 1 ); | 
					
						
							|  |  |  |     (void) mbedtls_timing_get_timer( &time, 0 ); | 
					
						
							|  |  |  |     /* This goto is added to avoid warnings from the generated code. */ | 
					
						
							|  |  |  |     goto exit; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | } | 
					
						
							|  |  |  | /* END_CASE */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* BEGIN_CASE */ | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | void timing_set_alarm( int seconds ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     if( seconds == 0 ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         mbedtls_set_alarm( seconds ); | 
					
						
							|  |  |  |         TEST_ASSERT( mbedtls_timing_alarmed == 1 ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         mbedtls_set_alarm( seconds ); | 
					
						
							|  |  |  |         TEST_ASSERT( mbedtls_timing_alarmed == 0 || | 
					
						
							|  |  |  |                      mbedtls_timing_alarmed == 1 ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | /* END_CASE */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* BEGIN_CASE */ | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | void timing_delay( int fin_ms ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     mbedtls_timing_delay_context ctx; | 
					
						
							|  |  |  |     int result; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     if( fin_ms == 0 ) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         mbedtls_timing_set_delay( &ctx, 0, 0 ); | 
					
						
							|  |  |  |         result = mbedtls_timing_get_delay( &ctx ); | 
					
						
							|  |  |  |         TEST_ASSERT( result == -1 ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         mbedtls_timing_set_delay( &ctx, fin_ms / 2, fin_ms ); | 
					
						
							|  |  |  |         result = mbedtls_timing_get_delay( &ctx ); | 
					
						
							|  |  |  |         TEST_ASSERT( result >= 0 && result <= 2 ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | /* END_CASE */ |