This commit is contained in:
swrup 2025-12-03 16:19:11 +01:00 committed by Swrup
parent 099cd80670
commit b507d540ad
43 changed files with 5647 additions and 1808 deletions

View file

@ -1,3 +1,5 @@
exception Bin_error of string
(* TODO bin
- no [Bin.of_string] ? *)
let bin_of_string bin s =
@ -31,8 +33,6 @@ module Bin_rsa = struct
let bits = Z.to_bits z in
rev_string (String.length bits) bits
let check = function false -> Error (`Msg "invalid data") | true -> Ok ()
let z_array_to_octets (arr : Z.t array) =
let nb = Array.length arr in
let bits_arr = Array.map z_to_bits_be arr in
@ -53,6 +53,10 @@ module Bin_rsa = struct
bits_arr;
Bytes.unsafe_to_string b
let check = function
| false -> Error "rsa of_octets error, invalid data"
| true -> Ok ()
let z_array_of_octets ~nb s =
let s_len = String.length s in
let* () = check (s_len > 2 * nb) in
@ -83,34 +87,26 @@ module Bin_rsa = struct
z_array_to_octets [| n; e |]
let pub_of_octets s =
let pub_of_octets s =
let* arr = z_array_of_octets ~nb:2 s in
match arr with
| [| n; e |] ->
let* pub = Mirage_crypto_pk.Rsa.pub ~n ~e in
Ok pub
| _ -> assert false
in
match pub_of_octets s with
| Error (`Msg e) -> Fmt.failwith "rsa pub_of_octets failure: %s@." e
| Ok v -> v
let* arr = z_array_of_octets ~nb:2 s in
match arr with
| [| n; e |] ->
let+ pub = Mirage_crypto_pk.Rsa.pub ~n ~e |> unwrap_err_msg in
pub
| _ -> assert false
let priv_to_octets ({ e; d; n; p; q; dp; dq; q' } : Mirage_crypto_pk.Rsa.priv)
=
z_array_to_octets [| e; d; n; p; q; dp; dq; q' |]
let priv_of_octets s =
let priv_of_octets s =
let* arr = z_array_of_octets ~nb:8 s in
match arr with
| [| e; d; n; p; q; dp; dq; q' |] ->
let* priv = Mirage_crypto_pk.Rsa.priv ~e ~d ~n ~p ~q ~dp ~dq ~q' in
Ok priv
| _ -> assert false
in
match priv_of_octets s with
| Error (`Msg e) -> Fmt.failwith "rsa priv_of_octets failure: %s@." e
| Ok v -> v
let* arr = z_array_of_octets ~nb:8 s in
match arr with
| [| e; d; n; p; q; dp; dq; q' |] ->
let+ priv =
Mirage_crypto_pk.Rsa.priv ~e ~d ~n ~p ~q ~dp ~dq ~q' |> unwrap_err_msg
in
priv
| _ -> assert false
end
module Log_reporter = struct