This commit is contained in:
swrup 2026-02-17 09:30:20 +01:00
parent 24b9adc300
commit 4af1b0227e
7 changed files with 30 additions and 30 deletions

View file

@ -24,7 +24,7 @@ let config req _server _env =
for now we only have one item in each "denom group" for now we only have one item in each "denom group"
change this once we have denom/signkey rotation *) change this once we have denom/signkey rotation *)
let denomgroup_of_denomdata let denomgroup_of_denomdata
Denom_data. Denomination.
{ {
pub; pub;
value; value;
@ -120,16 +120,16 @@ let mk_keys ~db_conn (module Sm : Secmod.S) ~last_issue_date =
let denom_data_l = let denom_data_l =
(* reverse chronological order *) (* reverse chronological order *)
List.sort List.sort
(fun a b -> Stdlib.compare b.Denom_data.stamp_start a.stamp_start) (fun a b -> Stdlib.compare b.Denomination.stamp_start a.stamp_start)
denom_data_l denom_data_l
in in
let list_issue_date = let list_issue_date =
match denom_data_l with match denom_data_l with
| [] -> Time.Timestamp.never | [] -> Time.Timestamp.never
| v :: _ -> v.Denom_data.stamp_start | v :: _ -> v.Denomination.stamp_start
in in
let denominations = let denominations =
let open Denom_data in let open Denomination in
(* if `?last_issue_date` query param does not exactly match the `stamp_start` (* if `?last_issue_date` query param does not exactly match the `stamp_start`
of one of the denomination keys, all keys are returned *) of one of the denomination keys, all keys are returned *)
let l = let l =
@ -162,12 +162,12 @@ let mk_keys ~db_conn (module Sm : Secmod.S) ~last_issue_date =
let signkey_data_l = let signkey_data_l =
List.sort List.sort
(fun a b -> (fun a b ->
let open Signkey_data in let open Signkey in
Stdlib.compare b.stamp_start a.stamp_start) Stdlib.compare b.stamp_start a.stamp_start)
signkey_data_l signkey_data_l
in in
List.filter_map List.filter_map
(fun Signkey_data. (fun Signkey.
{ {
pub; pub;
stamp_start; stamp_start;
@ -197,7 +197,7 @@ let mk_keys ~db_conn (module Sm : Secmod.S) ~last_issue_date =
chronological order by group) in the arrays under "denominations". *) chronological order by group) in the arrays under "denominations". *)
let hc = let hc =
denom_data_l denom_data_l
|> List.filter_map (fun v -> v.Denom_data.master_sig) |> List.filter_map (fun v -> v.Denomination.master_sig)
|> List.map Signatures.DenominationKeyValidity.to_octets |> List.map Signatures.DenominationKeyValidity.to_octets
|> String.concat "" |> String.concat ""
|> Hash.H64.hash |> Hash.H64.hash

View file

@ -20,7 +20,7 @@ module Keys_get = struct
master_sig= _; master_sig= _;
revoked_sig= _; revoked_sig= _;
} : } :
Denom_data.t) = Denomination.t) =
let denom_pub = let denom_pub =
DenominationKey.of_rsa RsaDenominationKey.{ age_mask; rsa_pub= pub } DenominationKey.of_rsa RsaDenominationKey.{ age_mask; rsa_pub= pub }
in in
@ -60,7 +60,7 @@ module Keys_get = struct
master_sig= _; master_sig= _;
revoked_sig= _; revoked_sig= _;
} : } :
Signkey_data.t) = Signkey.t) =
let signkey_secmod_sig = let signkey_secmod_sig =
let open Signatures.SigningKeyAnnouncement in let open Signatures.SigningKeyAnnouncement in
let exchange_pub = pub in let exchange_pub = pub in
@ -74,14 +74,14 @@ module Keys_get = struct
let mk_future_keys_response (module Sm : Secmod.S) = let mk_future_keys_response (module Sm : Secmod.S) =
let future_signkeys = let future_signkeys =
Sm.get_signkeys_data () Sm.get_signkeys_data ()
|> List.filter (fun k -> Option.is_none k.Signkey_data.master_sig) |> List.filter (fun k -> Option.is_none k.Signkey.master_sig)
|> List.map (fun signkey -> mk_future_signkey (module Sm) signkey) |> List.map (fun signkey -> mk_future_signkey (module Sm) signkey)
in in
let future_denoms = let future_denoms =
Sm.get_denoms_data () Sm.get_denoms_data ()
|> List.filter (fun k -> Option.is_none k.Denom_data.master_sig) |> List.filter (fun k -> Option.is_none k.Denomination.master_sig)
|> List.map (fun dn_data -> |> List.map (fun dn_data ->
let opt = Sm.find_denom_section_name dn_data.Denom_data.h_pub in let opt = Sm.find_denom_section_name dn_data.Denomination.h_pub in
match opt with match opt with
| None -> Fmt.failwith "section_name not found." | None -> Fmt.failwith "section_name not found."
| Some section_name -> | Some section_name ->
@ -116,7 +116,7 @@ module Keys_post = struct
let verify_denom_signature (module Sm : Secmod.S) let verify_denom_signature (module Sm : Secmod.S)
DenomSignature.{ h_denom_pub; master_sig } = DenomSignature.{ h_denom_pub; master_sig } =
let* denom = let* denom =
match Sm.find_denom_data h_denom_pub with match Sm.find_denomination h_denom_pub with
| None -> | None ->
Fmt.error Fmt.error
"404 not found, One of the keys for which a signature was provided \ "404 not found, One of the keys for which a signature was provided \

View file

@ -48,7 +48,7 @@ let signkey_data =
let revoked_sig = option Signatures.MasterSigningKeyRevocation.caqti in let revoked_sig = option Signatures.MasterSigningKeyRevocation.caqti in
custom custom
~encode:(fun ~encode:(fun
Signkey_data. Signkey.
{ pub; stamp_start; stamp_expire; stamp_end; master_sig; revoked_sig } { pub; stamp_start; stamp_expire; stamp_end; master_sig; revoked_sig }
-> ->
match master_sig with match master_sig with
@ -73,7 +73,7 @@ let denom_data =
let revoked_sig = option Signatures.MasterDenominationKeyRevocation.caqti in let revoked_sig = option Signatures.MasterDenominationKeyRevocation.caqti in
custom custom
~encode:(fun ~encode:(fun
Denom_data. Denomination.
{ {
pub; pub;
value; value;

View file

@ -11,10 +11,10 @@ module type S = sig
(* TODO query database instead? *) (* TODO query database instead? *)
val get_sm_key_pub : unit -> eddsa_pub val get_sm_key_pub : unit -> eddsa_pub
val get_signkeys_data : unit -> Signkey_data.t list val get_signkeys_data : unit -> Signkey.t list
val get_denoms_data : unit -> Denom_data.t list val get_denoms_data : unit -> Denomination.t list
val find_signkey_data : eddsa_pub -> Signkey_data.t option val find_signkey_data : eddsa_pub -> Signkey.t option
val find_denom_data : denomination_hash -> Denom_data.t option val find_denomination : denomination_hash -> Denomination.t option
val find_denom_section_name : denomination_hash -> string option val find_denom_section_name : denomination_hash -> string option
(* - management operations - *) (* - management operations - *)
@ -57,12 +57,12 @@ module Make (Conn : Pg.CONN) = struct
type signkey = { type signkey = {
priv: eddsa_priv; priv: eddsa_priv;
sk_data: Signkey_data.t; sk_data: Signkey.t;
} }
type denom = { type denom = {
priv: rsa_priv; priv: rsa_priv;
dn_data: Denom_data.t; dn_data: Denomination.t;
} }
type t = { type t = {
@ -84,7 +84,7 @@ module Make (Conn : Pg.CONN) = struct
(Fpath.to_string fname) (Fpath.to_string fname)
| Some sk_data -> Ok sk_data | Some sk_data -> Ok sk_data
let db_lookup_denom_data conn ~section_name priv = let db_lookup_denomination conn ~section_name priv =
let pub = RsaPrivateKey.pub_of_priv priv in let pub = RsaPrivateKey.pub_of_priv priv in
let h_pub = Hash.DenominationHash.hash (RsaPublicKey.to_octets pub) in let h_pub = Hash.DenominationHash.hash (RsaPublicKey.to_octets pub) in
let* opt = Pg.find_denom conn h_pub |> unwrap_err_caqti in let* opt = Pg.find_denom conn h_pub |> unwrap_err_caqti in
@ -133,7 +133,7 @@ module Make (Conn : Pg.CONN) = struct
| None -> Ok None | None -> Ok None
| Some priv -> | Some priv ->
(* todo: could check that coin config match db values *) (* todo: could check that coin config match db values *)
let* dn_data = db_lookup_denom_data conn ~section_name priv in let* dn_data = db_lookup_denomination conn ~section_name priv in
Hashtbl.replace dn_section_name_ht dn_data.h_pub section_name; Hashtbl.replace dn_section_name_ht dn_data.h_pub section_name;
let denom = { priv; dn_data } in let denom = { priv; dn_data } in
Ok (Some denom)) Ok (Some denom))
@ -177,7 +177,7 @@ module Make (Conn : Pg.CONN) = struct
let master_sig = None in let master_sig = None in
let revoked_sig = None in let revoked_sig = None in
let sk_data = let sk_data =
Signkey_data. Signkey.
{ pub; stamp_start; stamp_expire; stamp_end; master_sig; revoked_sig } { pub; stamp_start; stamp_expire; stamp_end; master_sig; revoked_sig }
in in
{ priv; sk_data } { priv; sk_data }
@ -217,7 +217,7 @@ module Make (Conn : Pg.CONN) = struct
let master_sig = None in let master_sig = None in
let revoked_sig = None in let revoked_sig = None in
let dn_data = let dn_data =
Denom_data. Denomination.
{ {
pub; pub;
value; value;
@ -317,7 +317,7 @@ module Make (Conn : Pg.CONN) = struct
let find_signkey_data pub = let find_signkey_data pub =
find_signkey pub |> Option.map (fun v -> v.sk_data) find_signkey pub |> Option.map (fun v -> v.sk_data)
let find_denom_data h_denom = let find_denomination h_denom =
find_denom h_denom |> Option.map (fun v -> v.dn_data) find_denom h_denom |> Option.map (fun v -> v.dn_data)
let find_denom_section_name h_denom = let find_denom_section_name h_denom =

View file

@ -11,10 +11,10 @@ module type S = sig
(* TODO query database instead? *) (* TODO query database instead? *)
val get_sm_key_pub : unit -> eddsa_pub val get_sm_key_pub : unit -> eddsa_pub
val get_signkeys_data : unit -> Signkey_data.t list val get_signkeys_data : unit -> Signkey.t list
val get_denoms_data : unit -> Denom_data.t list val get_denoms_data : unit -> Denomination.t list
val find_signkey_data : eddsa_pub -> Signkey_data.t option val find_signkey_data : eddsa_pub -> Signkey.t option
val find_denom_data : denomination_hash -> Denom_data.t option val find_denomination : denomination_hash -> Denomination.t option
val find_denom_section_name : denomination_hash -> string option val find_denom_section_name : denomination_hash -> string option
(* - management operations - *) (* - management operations - *)