type t = { pub: Mirage_crypto_ec.Ed25519.pub; sign: (* TODO sig type should be string -> EddsaSignature.t + b32 *) string -> string; } 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"