left join on find_sk/dn to fill revoked_sig (todo: test)

This commit is contained in:
swrup 2025-12-21 20:52:59 +01:00
parent 9a68d18a1d
commit 477dd2230b
2 changed files with 39 additions and 25 deletions

View file

@ -37,16 +37,20 @@ 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 revoked_sig *) (* TODO revoked_sig
check left join *)
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 exchange_pub, valid_from, expire_sign, expire_legal, \
FROM exchange_sign_keys WHERE exchange_pub=$1" exchange_sign_keys.master_sig, signkey_revocations.master_sig FROM \
exchange_sign_keys WHERE exchange_pub=$1\n\
\ LEFT JOIN signkey_revocations USING (esk_serial)"
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
(* note: does not update revocation *)
let insert_signkey = let insert_signkey =
let insert_signkey = let insert_signkey =
Caqti_type.(signkey_data ->. unit) Caqti_type.(signkey_data ->. unit)
@ -60,11 +64,14 @@ let find_denom =
Caqti_type.(denomination_hash ->? denom_data) Caqti_type.(denomination_hash ->? denom_data)
"SELECT denom_pub, (coin).*, valid_from, expire_withdraw, \ "SELECT denom_pub, (coin).*, valid_from, expire_withdraw, \
expire_deposit, expire_legal, (fee_withdraw).*, (fee_deposit).*, \ expire_deposit, expire_legal, (fee_withdraw).*, (fee_deposit).*, \
(fee_refresh).*, (fee_refund).*, age_mask, denom_pub_hash, master_sig \ (fee_refresh).*, (fee_refund).*, age_mask, denom_pub_hash, \
FROM denominations WHERE denom_pub_hash=$1" denominations.master_sig, denomination_revocations.master_sig FROM \
denominations WHERE denom_pub_hash=$1 LEFT JOIN \
denomination_revocations USING (denominations_serial)"
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
(* note: does not update revocation *)
let insert_denom = let insert_denom =
let insert_denom = let insert_denom =
Caqti_type.(denom_data ->. unit) Caqti_type.(denom_data ->. unit)
@ -286,6 +293,20 @@ let insert_partner =
in in
fun (module Conn : CONN) v -> Conn.exec insert_partner v fun (module Conn : CONN) v -> Conn.exec insert_partner v
(*
let get_denominations =
let get_denominations =
Caqti_type.(unit ->* denom_data)
"SELECT denominations_serial, denominations.master_sig, \
denom_revocations_serial_id IS NOT NULL AS revoked, valid_from, \
expire_withdraw, expire_deposit, expire_legal, coin, fee_withdraw, \
fee_deposit, fee_refresh, fee_refund, denom_type, age_mask, denom_pub \
FROM denominations LEFT JOIN denomination_revocations USING \
(denominations_serial)"
in
fun (module Conn : CONN) -> Conn.collect_list get_denominations ()
*)
(* TODO (* TODO
iterate_denominations iterate_denominations
iterate_active_signkeys iterate_active_signkeys

View file

@ -43,28 +43,20 @@ include struct
let planchets_hash = HashPlanchetsP.caqti let planchets_hash = HashPlanchetsP.caqti
end end
(* TODO revoked_sig
revoked_sig default to None, but could actually be revoked
always do a LEFT JOIN on signkey_revocations table? *)
let signkey_data = let signkey_data =
let master_sig = Bin_sig.ExchangeSigningKeyValidity.caqti in let master_sig = Bin_sig.ExchangeSigningKeyValidity.caqti in
let revoked_sig = option Bin_sig.MasterSigningKeyRevocation.caqti in
custom custom
~encode:(fun ~encode:(fun
Signkey_data. Signkey_data.
{ { 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
| None -> Error "signkey_data master_sig is none" | None -> Error "signkey_data master_sig is none"
| Some master_sig -> | Some master_sig ->
Ok (pub, stamp_start, stamp_expire, stamp_end, master_sig)) Ok (pub, stamp_start, stamp_expire, stamp_end, master_sig, revoked_sig))
~decode:(fun (pub, stamp_start, stamp_expire, stamp_end, master_sig) -> ~decode:(fun
(pub, stamp_start, stamp_expire, stamp_end, master_sig, revoked_sig) ->
Ok Ok
{ {
pub; pub;
@ -72,12 +64,13 @@ let signkey_data =
stamp_expire; stamp_expire;
stamp_end; stamp_end;
master_sig= Some master_sig; master_sig= Some master_sig;
revoked_sig= None; revoked_sig;
}) })
(t5 eddsa_pub time time time master_sig) (t6 eddsa_pub time time time master_sig revoked_sig)
let denom_data = let denom_data =
let master_sig = Bin_sig.DenominationKeyValidity.caqti in let master_sig = Bin_sig.DenominationKeyValidity.caqti in
let revoked_sig = option Bin_sig.MasterDenominationKeyRevocation.caqti in
custom custom
~encode:(fun ~encode:(fun
Denom_data. Denom_data.
@ -95,7 +88,7 @@ let denom_data =
age_mask; age_mask;
h_pub; h_pub;
master_sig; master_sig;
revoked_sig= _; revoked_sig;
} }
-> ->
match master_sig with match master_sig with
@ -113,7 +106,7 @@ let denom_data =
fee_refresh, fee_refresh,
fee_refund, fee_refund,
age_mask, age_mask,
(h_pub, master_sig) )) (h_pub, master_sig, revoked_sig) ))
~decode:(fun ~decode:(fun
( pub, ( pub,
value, value,
@ -126,7 +119,7 @@ let denom_data =
fee_refresh, fee_refresh,
fee_refund, fee_refund,
age_mask, age_mask,
(h_pub, master_sig) ) (h_pub, master_sig, revoked_sig) )
-> ->
Ok Ok
{ {
@ -143,10 +136,10 @@ let denom_data =
age_mask; age_mask;
h_pub; h_pub;
master_sig= Some master_sig; master_sig= Some master_sig;
revoked_sig= None; revoked_sig;
}) })
(t12 rsa_pub amount time time time time amount amount amount amount int (t12 rsa_pub amount time time time time amount amount amount amount int
(t2 denomination_hash master_sig)) (t3 denomination_hash master_sig revoked_sig))
let account_restrictions = let account_restrictions =
custom custom