24 lines
715 B
OCaml
24 lines
715 B
OCaml
|
|
type rsa = {
|
||
|
|
coin: Types.Config_types.Coin.t;
|
||
|
|
pub: Types.RsaPublicKey.t;
|
||
|
|
sign: 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
|