This commit is contained in:
parent
ab82a357a9
commit
f9a7eed8f2
10 changed files with 85 additions and 18 deletions
|
|
@ -113,17 +113,19 @@ module RsaPublicKey = struct
|
|||
String.sub src pos len |> rev_string len |> Z.of_bits
|
||||
|
||||
let to_octets ({ n; e } : Mirage_crypto_pk.Rsa.pub) =
|
||||
let n_len = Z.size n in
|
||||
let e_len = Z.size e in
|
||||
let n = Z.to_bits n in
|
||||
let e = Z.to_bits e in
|
||||
let n_len = String.length n in
|
||||
let e_len = String.length e in
|
||||
let len = 4 + n_len + e_len in
|
||||
let b = Bytes.make len '\x00' in
|
||||
Bytes.set_uint16_be b 0 n_len;
|
||||
Bytes.set_uint16_be b 2 e_len;
|
||||
let n = Z.to_bits n |> rev_string n_len in
|
||||
let e = Z.to_bits e |> rev_string e_len in
|
||||
let n = rev_string n_len n in
|
||||
let e = rev_string e_len e in
|
||||
Bytes.blit_string n 0 b 4 n_len;
|
||||
Bytes.blit_string e 0 b (4 + n_len) e_len;
|
||||
Bytes.unsafe_to_string b
|
||||
Bytes.to_string b
|
||||
|
||||
let of_octets =
|
||||
let check = function
|
||||
|
|
@ -131,8 +133,6 @@ module RsaPublicKey = struct
|
|||
| true -> Ok ()
|
||||
in
|
||||
fun s ->
|
||||
Result.get_ok
|
||||
@@
|
||||
let open Syntax in
|
||||
let len = String.length s in
|
||||
let* () = check (len >= 4) in
|
||||
|
|
@ -142,6 +142,11 @@ module RsaPublicKey = struct
|
|||
let n = z_of_bits_be s 4 n_len in
|
||||
let e = z_of_bits_be s (4 + n_len) e_len in
|
||||
Mirage_crypto_pk.Rsa.pub ~n ~e |> unwrap_err_msg
|
||||
|
||||
let of_octets s =
|
||||
match of_octets s with
|
||||
| Error e -> Fmt.failwith "RsaPublicKey.of_octets failure: %s@." e
|
||||
| Ok v -> v
|
||||
end
|
||||
|
||||
include Binary
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue