mirror of https://github.com/openssl/openssl.git
				
				
				
			
		
			
	
	
		
			90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
		
		
			
		
	
	
			90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
|  | #include <string.h>
 | ||
|  | #include <openssl/e_os2.h>
 | ||
|  | #include <openssl/byteorder.h>
 | ||
|  | #include "testutil.h"
 | ||
|  | #include "testutil/output.h"
 | ||
|  | 
 | ||
|  | static int test_byteorder(void) | ||
|  | { | ||
|  |     const unsigned char in[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; | ||
|  |     unsigned char out[8]; | ||
|  |     const unsigned char *restin; | ||
|  |     unsigned char *restout; | ||
|  |     uint16_t u16; | ||
|  |     uint32_t u32; | ||
|  |     uint64_t u64; | ||
|  | 
 | ||
|  |     memset(out, 0xff, sizeof(out)); | ||
|  |     restin = OPENSSL_load_u16_le(&u16, in); | ||
|  |     restout = OPENSSL_store_u16_le(out, u16); | ||
|  |     if (!TEST_true(u16 == 0x0100U | ||
|  |                    && memcmp(in, out, (size_t) 2) == 0 | ||
|  |                    && restin == in + 2 | ||
|  |                    && restout == out + 2)) { | ||
|  |         TEST_info("Failed byteorder.h u16 LE load/store"); | ||
|  |         return 0; | ||
|  |     } | ||
|  | 
 | ||
|  |     memset(out, 0xff, sizeof(out)); | ||
|  |     restin = OPENSSL_load_u16_be(&u16, in); | ||
|  |     restout = OPENSSL_store_u16_be(out, u16); | ||
|  |     if (!TEST_true(u16 == 0x0001U | ||
|  |                    && memcmp(in, out, (size_t) 2) == 0 | ||
|  |                    && restin == in + 2 | ||
|  |                    && restout == out + 2)) { | ||
|  |         TEST_info("Failed byteorder.h u16 BE load/store"); | ||
|  |         return 0; | ||
|  |     } | ||
|  | 
 | ||
|  |     memset(out, 0xff, sizeof(out)); | ||
|  |     restin = OPENSSL_load_u32_le(&u32, in); | ||
|  |     restout = OPENSSL_store_u32_le(out, u32); | ||
|  |     if (!TEST_true(u32 == 0x03020100UL | ||
|  |                    && memcmp(in, out, (size_t) 4) == 0 | ||
|  |                    && restin == in + 4 | ||
|  |                    && restout == out + 4)) { | ||
|  |         TEST_info("Failed byteorder.h u32 LE load/store"); | ||
|  |         return 0; | ||
|  |     } | ||
|  | 
 | ||
|  |     memset(out, 0xff, sizeof(out)); | ||
|  |     restin = OPENSSL_load_u32_be(&u32, in); | ||
|  |     restout = OPENSSL_store_u32_be(out, u32); | ||
|  |     if (!TEST_true(u32 == 0x00010203UL | ||
|  |                   && memcmp(in, out, (size_t) 4) == 0 | ||
|  |                   && restin == in + 4 | ||
|  |                   && restout == out + 4)) { | ||
|  |         TEST_info("Failed byteorder.h u32 BE load/store"); | ||
|  |         return 0; | ||
|  |     } | ||
|  | 
 | ||
|  |     memset(out, 0xff, sizeof(out)); | ||
|  |     restin = OPENSSL_load_u64_le(&u64, in); | ||
|  |     restout = OPENSSL_store_u64_le(out, u64); | ||
|  |     if (!TEST_true(u64 == 0x0706050403020100ULL | ||
|  |                    && memcmp(in, out, (size_t) 8) == 0 | ||
|  |                    && restin == in + 8 | ||
|  |                    && restout == out + 8)) { | ||
|  |         TEST_info("Failed byteorder.h u64 LE load/store"); | ||
|  |         return 0; | ||
|  |     } | ||
|  | 
 | ||
|  |     memset(out, 0xff, sizeof(out)); | ||
|  |     restin = OPENSSL_load_u64_be(&u64, in); | ||
|  |     restout = OPENSSL_store_u64_be(out, u64); | ||
|  |     if (!TEST_true(u64 == 0x0001020304050607ULL | ||
|  |                    && memcmp(in, out, (size_t) 8) == 0 | ||
|  |                    && restin == in + 8 | ||
|  |                    && restout == out + 8)) { | ||
|  |         TEST_info("Failed byteorder.h u64 BE load/store"); | ||
|  |         return 0; | ||
|  |     } | ||
|  |     return 1; | ||
|  | } | ||
|  | 
 | ||
|  | int setup_tests(void) | ||
|  | { | ||
|  |     ADD_TEST(test_byteorder); | ||
|  |     return 1; | ||
|  | } |