upstream: github.com/robur-coop/kdf
at main 46 lines 1.8 kB view raw
1let test_scrypt_kdf ~password ~salt ~n ~r ~p ~dk_len ~dk = 2 let dk = Ohex.decode dk in 3 fun () -> 4 let edk = Scrypt.derive ~password ~salt ~n ~r ~p ~dk_len in 5 Alcotest.check Alcotest.string "Scrypt test" edk dk 6 7let scrypt_kdf_test1 = 8 test_scrypt_kdf ~password:"" ~salt:"" ~n:16 ~r:1 ~p:1 ~dk_len:64l 9 ~dk: 10 "77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906" 11 12let scrypt_kdf_test2 = 13 test_scrypt_kdf ~password:"password" ~salt:"NaCl" ~n:1024 ~r:8 ~p:16 14 ~dk_len:64l 15 ~dk: 16 "fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640" 17 18let scrypt_kdf_test3 = 19 test_scrypt_kdf ~password:"pleaseletmein" ~salt:"SodiumChloride" ~n:16384 ~r:8 20 ~p:1 ~dk_len:64l 21 ~dk: 22 "7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887" 23 24let scrypt_kdf_test4 = 25 test_scrypt_kdf ~password:"pleaseletmein" ~salt:"SodiumChloride" ~n:1048576 26 ~r:8 ~p:1 ~dk_len:64l 27 ~dk: 28 "2101cb9b6a511aaeaddbbe09cf70f881ec568d574a2ffd4dabe5ee9820adaa478e56fd8f4ba5d09ffa1c6d927c40f4c337304049e8a952fbcbf45c6fa77a41a4" 29 30let scrypt_kdf_tests () = 31 let tests = 32 [ 33 ("Test Case 1", `Quick, scrypt_kdf_test1); 34 ("Test Case 2", `Quick, scrypt_kdf_test2); 35 ] 36 in 37 (* Skip test case 3 and 4 for architectures with 31 bit sizes or less, as it requires a buffer larger than Int.max_size in those cases *) 38 if Sys.int_size <= 31 then tests 39 else 40 tests 41 @ [ 42 ("Test Case 3", `Quick, scrypt_kdf_test3); 43 ("Test Case 4", `Slow, scrypt_kdf_test4); 44 ] 45 46let suite = ("scrypt", scrypt_kdf_tests ())