mte/src/secmod_denom.ml
2025-10-16 16:32:51 +02:00

29 lines
809 B
OCaml

type rsa = {
coin: Types.Config_types.Coin.t;
pub: Types.RsaPublicKey.t;
sign:
(* TODO sig type
should be
string -> RsaSignature.t
+ b32 *)
string ->
string;
}
let hash_pub _pub = "todo public key converted to Crockford Base32"
let make_rsa (coin : Types.Config_types.Coin.t) =
assert (coin.cipher = `RSA);
assert (Option.is_some coin.rsa_keysize);
let rsa_keysize = coin.rsa_keysize |> Option.get in
let open Mirage_crypto_pk.Rsa in
let priv = generate ~bits:rsa_keysize () in
let pub = pub_of_priv priv in
let sign = decrypt ~crt_hardening:true ~mask:`Yes ~key:priv in
{ coin; pub; sign }
let denom_device =
let finally _key = () in
Vif.Device.v ~name:"rsa_denom" ~finally [] @@ fun () ->
let rsa_l = List.map make_rsa Config.coins in
rsa_l