mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-03 20:22:59 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* BEGIN_HEADER */
 | 
						|
 | 
						|
/* 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.
 | 
						|
 */
 | 
						|
 | 
						|
#include <limits.h>
 | 
						|
 | 
						|
#include "mbedtls/timing.h"
 | 
						|
 | 
						|
/* END_HEADER */
 | 
						|
 | 
						|
/* BEGIN_DEPENDENCIES
 | 
						|
 * depends_on:MBEDTLS_TIMING_C
 | 
						|
 * END_DEPENDENCIES
 | 
						|
 */
 | 
						|
 | 
						|
/* BEGIN_CASE */
 | 
						|
void timing_get_timer()
 | 
						|
{
 | 
						|
    struct mbedtls_timing_hr_time time;
 | 
						|
 | 
						|
    memset(&time, 0, sizeof(time));
 | 
						|
 | 
						|
    (void) mbedtls_timing_get_timer(&time, 1);
 | 
						|
 | 
						|
    /* Check that a non-zero time was written back */
 | 
						|
    int all_zero = 1;
 | 
						|
    for (size_t i = 0; i < sizeof(time); i++) {
 | 
						|
        all_zero &= ((unsigned char *) &time)[i] == 0;
 | 
						|
    }
 | 
						|
    TEST_ASSERT(!all_zero);
 | 
						|
 | 
						|
    (void) mbedtls_timing_get_timer(&time, 0);
 | 
						|
 | 
						|
    /* This goto is added to avoid warnings from the generated code. */
 | 
						|
    goto exit;
 | 
						|
}
 | 
						|
/* END_CASE */
 | 
						|
 | 
						|
/* BEGIN_CASE */
 | 
						|
void timing_delay(int fin_ms)
 | 
						|
{
 | 
						|
    mbedtls_timing_delay_context ctx;
 | 
						|
    int result;
 | 
						|
    if (fin_ms == 0) {
 | 
						|
        mbedtls_timing_set_delay(&ctx, 0, 0);
 | 
						|
        result = mbedtls_timing_get_delay(&ctx);
 | 
						|
        TEST_ASSERT(result == -1);
 | 
						|
    } else {
 | 
						|
        mbedtls_timing_set_delay(&ctx, fin_ms / 2, fin_ms);
 | 
						|
        result = mbedtls_timing_get_delay(&ctx);
 | 
						|
        TEST_ASSERT(result >= 0 && result <= 2);
 | 
						|
    }
 | 
						|
}
 | 
						|
/* END_CASE */
 |