2025-10-16 08:23:40 +02:00
|
|
|
type t = {
|
|
|
|
|
pub: Mirage_crypto_ec.Ed25519.pub;
|
2025-10-16 16:29:03 +02:00
|
|
|
sign:
|
|
|
|
|
(* TODO sig type
|
|
|
|
|
should be
|
|
|
|
|
string -> EddsaSignature.t *)
|
|
|
|
|
string ->
|
|
|
|
|
string;
|
2025-10-16 08:23:40 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let make ~name =
|
|
|
|
|
let finally _key = () in
|
|
|
|
|
Vif.Device.v ~name ~finally [] @@ fun () ->
|
|
|
|
|
(* TODO
|
|
|
|
|
- look if it exists
|
|
|
|
|
- if not, create it (TOFU initialization scheme)
|
|
|
|
|
- write it *)
|
|
|
|
|
let priv, pub = Mirage_crypto_ec.Ed25519.generate () in
|
|
|
|
|
{ pub; sign= Mirage_crypto_ec.Ed25519.sign ~key:priv }
|
|
|
|
|
|
|
|
|
|
let signkey_device = make ~name:"signkey"
|
|
|
|
|
|
|
|
|
|
(* the actual exchange's signing key
|
|
|
|
|
signed by the secmod signkey *)
|
|
|
|
|
let exchange_device = make ~name:"exchange"
|
|
|
|
|
let denom_device = make ~name:"denom"
|