5
5
use hex_literal:: hex;
6
6
use mcf:: { Base64 , McfHash } ;
7
7
8
+ const SHA512_HASH : & str = "$6$rounds=100000$exn6tVc2j/MZD8uG$BI1Xh8qQSK9J4m14uwy7abn.ctj/TIAzlaVCto0MQrOFIeTXsc1iwzH16XEWo/a7c7Y9eVJvufVzYAs4EsPOy0" ;
9
+
10
+ const EXAMPLE_SALT : & [ u8 ] = & hex ! ( "6a3f237988126f80958fa24b" ) ;
11
+ const EXAMPLE_HASH : & [ u8 ] = & hex ! (
12
+ "0d358cad62739eb554863c183aef27e6390368fe061fc5fcb1193a392d60dcad4594fa8d383ab8fc3f0dc8088974602668422e6a58edfa1afe24831b10be69be"
13
+ ) ;
14
+
8
15
#[ test]
9
16
fn parse_malformed ( ) {
10
17
assert ! ( "Hello, world!" . parse:: <McfHash >( ) . is_err( ) ) ;
@@ -20,8 +27,7 @@ fn parse_malformed() {
20
27
21
28
#[ test]
22
29
fn parse_sha512_hash ( ) {
23
- let s = "$6$rounds=100000$exn6tVc2j/MZD8uG$BI1Xh8qQSK9J4m14uwy7abn.ctj/TIAzlaVCto0MQrOFIeTXsc1iwzH16XEWo/a7c7Y9eVJvufVzYAs4EsPOy0" ;
24
- let hash: McfHash = s. parse ( ) . unwrap ( ) ;
30
+ let hash: McfHash = SHA512_HASH . parse ( ) . unwrap ( ) ;
25
31
assert_eq ! ( "6" , hash. id( ) ) ;
26
32
27
33
let mut fields = hash. fields ( ) ;
@@ -31,7 +37,7 @@ fn parse_sha512_hash() {
31
37
assert_eq ! ( "exn6tVc2j/MZD8uG" , salt. as_str( ) ) ;
32
38
33
39
let salt_bytes = salt. decode_base64 ( Base64 :: ShaCrypt ) . unwrap ( ) ;
34
- assert_eq ! ( & hex! ( "6a3f237988126f80958fa24b" ) , salt_bytes. as_slice( ) ) ;
40
+ assert_eq ! ( EXAMPLE_SALT , salt_bytes. as_slice( ) ) ;
35
41
36
42
let hash = fields. next ( ) . unwrap ( ) ;
37
43
assert_eq ! (
@@ -40,12 +46,15 @@ fn parse_sha512_hash() {
40
46
) ;
41
47
42
48
let hash_bytes = hash. decode_base64 ( Base64 :: ShaCrypt ) . unwrap ( ) ;
43
- assert_eq ! (
44
- & hex!(
45
- "0d358cad62739eb554863c183aef27e6390368fe061fc5fcb1193a392d60dcad4594fa8d383ab8fc3f0dc8088974602668422e6a58edfa1afe24831b10be69be"
46
- ) ,
47
- hash_bytes. as_slice( )
48
- ) ;
49
+ assert_eq ! ( EXAMPLE_HASH , hash_bytes. as_slice( ) ) ;
49
50
50
51
assert_eq ! ( None , fields. next( ) ) ;
51
52
}
53
+
54
+ #[ test]
55
+ fn push_fields ( ) {
56
+ let mut hash = McfHash :: new ( "$6$rounds=100000" ) . unwrap ( ) ;
57
+ hash. push_field_base64 ( EXAMPLE_SALT , Base64 :: ShaCrypt ) ;
58
+ hash. push_field_base64 ( EXAMPLE_HASH , Base64 :: ShaCrypt ) ;
59
+ assert_eq ! ( SHA512_HASH , hash. as_str( ) ) ;
60
+ }
0 commit comments