+ make_future_sk/dn
This commit is contained in:
parent
10d29df3c8
commit
a937595d6f
1 changed files with 48 additions and 40 deletions
|
|
@ -87,23 +87,7 @@ module Make (Conn : Pg.CONN) = struct
|
||||||
section_name
|
section_name
|
||||||
| Some dn_data -> Ok dn_data
|
| Some dn_data -> Ok dn_data
|
||||||
|
|
||||||
(*
|
(* TODO clean up *)
|
||||||
let pub = EddsaPrivateKey.pub_of_priv priv in
|
|
||||||
let* sk = db_lookup_signkey_data conn fname pub in
|
|
||||||
let signkey = { priv; sk_data } in
|
|
||||||
Ok (Some signkey)
|
|
||||||
*)
|
|
||||||
(*
|
|
||||||
match opt with
|
|
||||||
| None -> Ok None
|
|
||||||
| Some priv ->
|
|
||||||
(* todo: could check that coin config match db values *)
|
|
||||||
let* dn_data = db_lookup_denomination conn ~section_name priv in
|
|
||||||
Hashtbl.replace dn_section_name_ht dn_data.h_pub section_name;
|
|
||||||
let denom = { priv; dn_data } in
|
|
||||||
Ok (Some denom))
|
|
||||||
*)
|
|
||||||
|
|
||||||
let load conn =
|
let load conn =
|
||||||
let error_invalid_state =
|
let error_invalid_state =
|
||||||
Fmt.error "secmod load error: invalid store state."
|
Fmt.error "secmod load error: invalid store state."
|
||||||
|
|
@ -187,27 +171,37 @@ module Make (Conn : Pg.CONN) = struct
|
||||||
Ok (Some t)
|
Ok (Some t)
|
||||||
| _, _, _ -> error_invalid_state
|
| _, _, _ -> error_invalid_state
|
||||||
|
|
||||||
let make_new_signkey () =
|
(* TODO *)
|
||||||
|
let sign_with_sm_key _ = assert false
|
||||||
|
|
||||||
|
let make_future_sk t =
|
||||||
let start = Time.Absolute.of_ptime (Ptime_clock.now ()) in
|
let start = Time.Absolute.of_ptime (Ptime_clock.now ()) in
|
||||||
let expire =
|
let expire =
|
||||||
Time.Absolute.add start Config.Exchange.signkey_legal_duration
|
Time.Absolute.add start Config.Exchange.signkey_legal_duration
|
||||||
in
|
in
|
||||||
let stamp_start = Time.Timestamp.of_absolute start in
|
let stamp_start = Timestamp.of_absolute start in
|
||||||
let stamp_expire = Time.Timestamp.of_absolute expire in
|
let stamp_expire = Timestamp.of_absolute expire in
|
||||||
let stamp_end = stamp_expire in
|
let stamp_end = stamp_expire in
|
||||||
let priv, pub = Mirage_crypto_ec.Ed25519.generate () in
|
let priv, pub = Mirage_crypto_ec.Ed25519.generate () in
|
||||||
let master_sig = None in
|
let signkey_secmod_sig =
|
||||||
let revoked_sig = None in
|
let open Signatures.SigningKeyAnnouncement in
|
||||||
let sk_data =
|
let exchange_pub = pub in
|
||||||
Signkey.
|
let anchor_time = stamp_start in
|
||||||
{ pub; stamp_start; stamp_expire; stamp_end; master_sig; revoked_sig }
|
let duration = Timestamp.diff stamp_start stamp_expire in
|
||||||
|
sign_f ~f:sign_with_sm_key { exchange_pub; anchor_time; duration }
|
||||||
in
|
in
|
||||||
{ priv; sk_data }
|
let future_sk =
|
||||||
|
Api.FutureSignKey.
|
||||||
|
{ key= pub; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig }
|
||||||
|
in
|
||||||
|
Hashtbl.replace t.future_sk_ht pub future_sk;
|
||||||
|
Hashtbl.replace t.future_sk_key_ht pub priv;
|
||||||
|
()
|
||||||
|
|
||||||
let make_new_denom
|
let make_future_dn t
|
||||||
Config.Coin.
|
Config.Coin.
|
||||||
{
|
{
|
||||||
section_name= _;
|
section_name;
|
||||||
value;
|
value;
|
||||||
duration_withdraw;
|
duration_withdraw;
|
||||||
duration_spend;
|
duration_spend;
|
||||||
|
|
@ -233,31 +227,45 @@ module Make (Conn : Pg.CONN) = struct
|
||||||
let stamp_expire_legal =
|
let stamp_expire_legal =
|
||||||
Timestamp.of_absolute @@ Absolute.add start duration_legal
|
Timestamp.of_absolute @@ Absolute.add start duration_legal
|
||||||
in
|
in
|
||||||
|
|
||||||
let priv, pub = RsaPrivateKey.generate ~bits:rsa_keysize () in
|
let priv, pub = RsaPrivateKey.generate ~bits:rsa_keysize () in
|
||||||
let h_pub = Hash.DenominationHash.hash (RsaPublicKey.to_octets pub) in
|
let open Api in
|
||||||
let master_sig = None in
|
let rsa_denomination_key =
|
||||||
let revoked_sig = None in
|
RsaDenominationKey.{ age_mask= 0; rsa_pub= pub }
|
||||||
let dn_data =
|
in
|
||||||
Denomination.
|
let denom_pub = DenominationKey.Rsa rsa_denomination_key in
|
||||||
|
let denom_secmod_sig =
|
||||||
|
let open Signatures.DenominationKeyAnnouncement in
|
||||||
|
let h_denom_pub =
|
||||||
|
Hash.DenominationHash.hash (RsaPublicKey.to_octets pub)
|
||||||
|
in
|
||||||
|
let h_section_name = Hash.Cstring.H64.hash section_name in
|
||||||
|
let anchor_time = stamp_start in
|
||||||
|
let duration_withdraw =
|
||||||
|
Timestamp.diff stamp_start stamp_expire_withdraw
|
||||||
|
in
|
||||||
|
sign_f ~f:sign_with_sm_key
|
||||||
|
{ h_denom_pub; h_section_name; anchor_time; duration_withdraw }
|
||||||
|
in
|
||||||
|
let future_dn =
|
||||||
|
FutureDenom.
|
||||||
{
|
{
|
||||||
pub;
|
section_name;
|
||||||
value;
|
value;
|
||||||
stamp_start;
|
stamp_start;
|
||||||
stamp_expire_withdraw;
|
stamp_expire_withdraw;
|
||||||
stamp_expire_deposit;
|
stamp_expire_deposit;
|
||||||
stamp_expire_legal;
|
stamp_expire_legal;
|
||||||
|
denom_pub;
|
||||||
fee_withdraw;
|
fee_withdraw;
|
||||||
fee_deposit;
|
fee_deposit;
|
||||||
fee_refresh;
|
fee_refresh;
|
||||||
fee_refund;
|
fee_refund;
|
||||||
age_mask= 0;
|
denom_secmod_sig;
|
||||||
h_pub;
|
|
||||||
master_sig;
|
|
||||||
revoked_sig;
|
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
{ priv; dn_data }
|
Hashtbl.replace t.future_dn_ht pub future_dn;
|
||||||
|
Hashtbl.replace t.future_dn_key_ht pub priv;
|
||||||
|
()
|
||||||
|
|
||||||
let make_new () =
|
let make_new () =
|
||||||
let lock = Miou.Mutex.create () in
|
let lock = Miou.Mutex.create () in
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue