~~~
This commit is contained in:
parent
099cd80670
commit
b507d540ad
43 changed files with 5647 additions and 1808 deletions
44
src/util.ml
44
src/util.ml
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue