more test
This commit is contained in:
		
							
								
								
									
										29
									
								
								src/aes.rs
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								src/aes.rs
									
									
									
									
									
								
							| @@ -160,7 +160,7 @@ fn xor(bits1: &[u8; 4], bits2: &[u8; 4]) -> [u8; 4] { | ||||
|     result | ||||
| } | ||||
|  | ||||
| fn substitute_bytes(bytes: &[u8; 4]) -> [u8; 4] { | ||||
| fn substitute_word(bytes: &[u8; 4]) -> [u8; 4] { | ||||
|     let mut result = [0u8; 4]; | ||||
|     for i in 0..4 { | ||||
|         result[i] = substitute(bytes[i], true); | ||||
| @@ -194,7 +194,7 @@ fn substitute(byte: u8, encryption: bool) -> u8 { | ||||
|     } | ||||
| } | ||||
|  | ||||
| fn shift_bytes(bytes: &[u8; 4]) -> [u8; 4] { | ||||
| fn shift_word(bytes: &[u8; 4]) -> [u8; 4] { | ||||
|     let mut result = [0u8; 4]; | ||||
|     for i in 0..4 { | ||||
|         result[i] = bytes[(i + 1) % 4]; | ||||
| @@ -268,7 +268,7 @@ impl Aes { | ||||
|                 expanded_key[i] = xor( | ||||
|                     &xor( | ||||
|                         &expanded_key[i - n], | ||||
|                         &substitute_bytes(&shift_bytes(&expanded_key[i - 1])), | ||||
|                         &substitute_word(&shift_word(&expanded_key[i - 1])), | ||||
|                     ), | ||||
|                     &rcon, | ||||
|                 ); | ||||
| @@ -285,6 +285,29 @@ impl Aes { | ||||
| mod tests { | ||||
|     use super::*; | ||||
|     #[test] | ||||
|     fn shift_word_test() { | ||||
|         let test: u32 = 0x09cf4f3c; | ||||
|         let test_bytes: [u8; 4] = test.to_be_bytes(); | ||||
|         let expected: u32 = 0xcf4f3c09; | ||||
|         let expected_bytes: [u8; 4] = expected.to_be_bytes(); | ||||
|         assert_eq!(shift_word(&test_bytes), expected_bytes); | ||||
|     } | ||||
|     #[test] | ||||
|     fn substitute_word_test() { | ||||
|         let test: u32 = 0xcf4f3c09; | ||||
|         let test_bytes: [u8; 4] = test.to_be_bytes(); | ||||
|         let expected: u32 = 0x8a84eb01; | ||||
|         let expected_bytes: [u8; 4] = expected.to_be_bytes(); | ||||
|         assert_eq!(substitute_word(&test_bytes), expected_bytes); | ||||
|     } | ||||
|     #[test] | ||||
|     fn xor_test() { | ||||
|         let w1: [u8; 4] = [0x00, 0x11, 0x10, 0x10]; | ||||
|         let w2: [u8; 4] = [0x00, 0x11, 0x01, 0x10]; | ||||
|         let expected: [u8; 4] = [0x00, 0x00, 0x11, 0x00]; | ||||
|         assert_eq!(xor(&w1, &w2), expected); | ||||
|     } | ||||
|     #[test] | ||||
|     fn key_schedule_test() { | ||||
|         let key: [u8; 16] = [ | ||||
|         0x2b, 0x7e, 0x15, 0x16, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user