61 lines
1.9 KiB
OCaml
61 lines
1.9 KiB
OCaml
open X509
|
|
|
|
let of_ic ic =
|
|
let ln = in_channel_length ic in
|
|
let rs = Bytes.create ln in
|
|
really_input ic rs 0 ln;
|
|
Bytes.unsafe_to_string rs
|
|
|
|
let with_loaded_files file ~f =
|
|
let pre = "./crl/" in
|
|
let fullpath1 = pre ^ file ^ ".pem"
|
|
and fullpath2 = pre ^ file ^ ".crl"
|
|
in
|
|
let fd1 = open_in fullpath1
|
|
and fd2 = open_in fullpath2
|
|
in
|
|
let buf1 = of_ic fd1
|
|
and buf2 = of_ic fd2
|
|
in
|
|
try let r = f buf1 buf2 in close_in fd1 ; close_in fd2 ;
|
|
match r with
|
|
| Ok x -> x
|
|
| Error (`Msg e) -> Alcotest.failf "decoding error %s" e
|
|
with e -> close_in fd1 ; close_in fd2 ;
|
|
Alcotest.failf "exception %s" (Printexc.to_string e)
|
|
|
|
let allowed_hashes = [ `SHA1 ; `SHA256 ; `SHA384 ; `SHA512 ]
|
|
|
|
let one f () =
|
|
with_loaded_files f ~f:(fun cert crl ->
|
|
let ( let* ) = Result.bind in
|
|
let* cert = Certificate.decode_pem cert in
|
|
let pubkey = Certificate.public_key cert in
|
|
let* crl = CRL.decode_der crl in
|
|
Result.map_error
|
|
(fun e -> `Msg (Fmt.to_to_string Validation.pp_signature_error e))
|
|
(CRL.validate crl ~allowed_hashes pubkey))
|
|
|
|
let crl_tests = [
|
|
"CRL 1 is good", `Quick, one "1" ;
|
|
"CRL 2 is good", `Quick, one "2" ;
|
|
"CRL 3 is good", `Quick, one "3" ;
|
|
"CRL 4 is good", `Quick, one "4" ;
|
|
"CRL 5 is good", `Quick, one "5" ;
|
|
"CRL 6 is good", `Quick, one "6" ;
|
|
"CRL 7 is good", `Quick, one "7" ;
|
|
"CRL 8 is good", `Quick, one "8" ;
|
|
"CRL 9 is good", `Quick, one "9" ;
|
|
"CRL 10 is good", `Quick, one "10" ;
|
|
"CRL 11 is good", `Quick, one "11" ;
|
|
"CRL 12 is good", `Quick, one "12" ;
|
|
"CRL 13 is good", `Quick, one "13" ;
|
|
"CRL 14 is good", `Quick, one "14" ;
|
|
"CRL 15 is good", `Quick, one "15" ;
|
|
"CRL 16 is good", `Quick, one "16" ;
|
|
"CRL 17 is good", `Quick, one "17" ;
|
|
"CRL 18 is good", `Quick, one "18" ;
|
|
"CRL 19 is good", `Quick, one "19" ;
|
|
"CRL 20 is good", `Quick, one "20" ;
|
|
"CRL 21 is good", `Quick, one "21" ;
|
|
]
|