wip pg: left join to get revocations

This commit is contained in:
swrup 2026-02-03 13:21:00 +01:00
parent 6aba22aa41
commit 86a48ac0d4
2 changed files with 13 additions and 11 deletions

View file

@ -39,12 +39,13 @@ let preflight =
in in
fun (module Conn : CONN) -> Syntax.list_iter (fun p -> Conn.exec p ()) l fun (module Conn : CONN) -> Syntax.list_iter (fun p -> Conn.exec p ()) l
(* TODO revocation master_sig *)
let find_signkey = let find_signkey =
let find_signkey = let find_signkey =
Caqti_type.(eddsa_pub ->? signkey_data) Caqti_type.(eddsa_pub ->? signkey_data)
"SELECT exchange_pub, valid_from, expire_sign, expire_legal, master_sig, \ "SELECT esk.exchange_pub, esk.valid_from, esk.expire_sign, \
NULL FROM exchange_sign_keys WHERE exchange_pub=$1" esk.expire_legal, esk.master_sig, skr.master_sig FROM \
exchange_sign_keys AS esk LEFT JOIN signkey_revocations AS skr ON \
esk.esk_serial = skr.esk_serial WHERE esk.exchange_pub=$1"
in in
fun (module Conn : CONN) (exchange_pub : EddsaPublicKey.t) -> fun (module Conn : CONN) (exchange_pub : EddsaPublicKey.t) ->
Conn.find_opt find_signkey exchange_pub Conn.find_opt find_signkey exchange_pub
@ -52,10 +53,10 @@ let find_signkey =
let get_active_signkeys = let get_active_signkeys =
let get_active_signkeys = let get_active_signkeys =
Caqti_type.(time ->* signkey_data) Caqti_type.(time ->* signkey_data)
"SELECT exchange_pub, valid_from, expire_sign, expire_legal, master_sig, \ "SELECT esk.exchange_pub, esk.valid_from, esk.expire_sign, \
NULL FROM exchange_sign_keys esk WHERE expire_sign > $1 AND NOT EXISTS \ esk.expire_legal, esk.master_sig, NULL FROM exchange_sign_keys esk \
(SELECT esk_serial FROM signkey_revocations skr WHERE esk.esk_serial = \ WHERE expire_sign > $1 AND NOT EXISTS (SELECT esk_serial FROM \
skr.esk_serial)" signkey_revocations AS skr WHERE esk.esk_serial = skr.esk_serial)"
in in
fun (module Conn : CONN) -> fun (module Conn : CONN) ->
let now = Ptime_clock.now () |> Option.some in let now = Ptime_clock.now () |> Option.some in
@ -79,7 +80,8 @@ let find_denom =
(fee_refresh).*, (fee_refund).*, age_mask, denom_pub_hash, master_sig, \ (fee_refresh).*, (fee_refund).*, age_mask, denom_pub_hash, master_sig, \
NULL FROM denominations WHERE denom_pub_hash=$1" NULL FROM denominations WHERE denom_pub_hash=$1"
in in
fun (module Conn : CONN) h_denom_pub -> Conn.find_opt find_denom h_denom_pub fun (module Conn : CONN) h_denom_pub ->
Conn.find_opt find_denom h_denom_pub
let get_denominations = let get_denominations =
let get_denominations = let get_denominations =

View file

@ -74,8 +74,7 @@ module Make (Conn : Pg.CONN) = struct
let dir = Fpath.(v "data" / "secmod") let dir = Fpath.(v "data" / "secmod")
let db_lookup_signkey_data conn fname priv = let db_lookup_signkey_data conn fname pub =
let pub = EddsaPrivateKey.pub_of_priv priv in
let* opt = Pg.find_signkey conn pub |> unwrap_err_caqti in let* opt = Pg.find_signkey conn pub |> unwrap_err_caqti in
match opt with match opt with
| None -> | None ->
@ -102,7 +101,8 @@ module Make (Conn : Pg.CONN) = struct
match opt with match opt with
| None -> Ok None | None -> Ok None
| Some priv -> | Some priv ->
let* sk_data = db_lookup_signkey_data conn fname priv in let pub = EddsaPrivateKey.pub_of_priv priv in
let* sk_data = db_lookup_signkey_data conn fname pub in
let signkey = { priv; sk_data } in let signkey = { priv; sk_data } in
Ok (Some signkey) Ok (Some signkey)