This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
32
unikernel/duniverse/digestif/fuzz/fuzz.ml
Normal file
32
unikernel/duniverse/digestif/fuzz/fuzz.ml
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
open Crowbar
|
||||
|
||||
type pack = Pack : 'a Digestif.hash -> pack
|
||||
|
||||
let hash =
|
||||
choose
|
||||
[
|
||||
const (Pack Digestif.sha1); const (Pack Digestif.sha256);
|
||||
const (Pack Digestif.sha512);
|
||||
]
|
||||
|
||||
let with_get_into_bytes off len (type ctx)
|
||||
(module Hash : Digestif.S with type ctx = ctx) (ctx : ctx) =
|
||||
let buf = Bytes.create len in
|
||||
let () =
|
||||
try Hash.get_into_bytes ctx ~off buf
|
||||
with Invalid_argument e -> (
|
||||
(* Skip if the invalid argument is valid; otherwise fail *)
|
||||
match Bytes.sub buf off Hash.digest_size with
|
||||
| _ -> failf "Hash.get_into_bytes: Invalid_argument %S" e
|
||||
| exception Invalid_argument _ -> bad_test ()) in
|
||||
Bytes.sub_string buf off Hash.digest_size
|
||||
|
||||
let () =
|
||||
add_test ~name:"get_into_bytes" [ hash; int8; range 1024; bytes ]
|
||||
@@ fun (Pack hash) off len bytes ->
|
||||
let (module Hash) = Digestif.module_of hash in
|
||||
let ctx = Hash.empty in
|
||||
let ctx = Hash.feed_string ctx bytes in
|
||||
let a = with_get_into_bytes off len (module Hash) ctx in
|
||||
let b = Hash.(to_raw_string (get ctx)) in
|
||||
check_eq ~eq:String.equal a b
|
||||
Loading…
Add table
Add a link
Reference in a new issue