+ signkey caqti
This commit is contained in:
parent
e57b12f9d5
commit
c41ca5b4e2
2 changed files with 35 additions and 31 deletions
48
src/pg.ml
48
src/pg.ml
|
|
@ -42,6 +42,27 @@ module Caqti_type = struct
|
|||
let wire_method = Caqti_type.string
|
||||
let payto_uri = Caqti_type.string
|
||||
|
||||
let signkey_data =
|
||||
let master_sig = Bin_sig.ExchangeSigningKeyValidity.caqti in
|
||||
custom
|
||||
~encode:(fun
|
||||
Signkey_data.{ pub; stamp_start; stamp_expire; stamp_end; master_sig }
|
||||
->
|
||||
match master_sig with
|
||||
| None -> Error "signkey_data master_sig is none"
|
||||
| Some master_sig ->
|
||||
Ok (pub, stamp_start, stamp_expire, stamp_end, master_sig))
|
||||
~decode:(fun (pub, stamp_start, stamp_expire, stamp_end, master_sig) ->
|
||||
Ok
|
||||
{
|
||||
pub;
|
||||
stamp_start;
|
||||
stamp_expire;
|
||||
stamp_end;
|
||||
master_sig= Some master_sig;
|
||||
})
|
||||
(t5 eddsa_pub time time time master_sig)
|
||||
|
||||
let account_restrictions =
|
||||
custom
|
||||
~encode:(fun l -> Api.encode (Jsont.list AccountRestriction.jsont) l)
|
||||
|
|
@ -135,31 +156,22 @@ let preflight =
|
|||
in
|
||||
fun (module Conn : CONN) -> Syntax.list_iter (fun p -> Conn.exec p ()) l
|
||||
|
||||
(* TODO return type *)
|
||||
let lookup_signing_key =
|
||||
let lookup_signing_key =
|
||||
Caqti_type.(eddsa_pub ->? t3 time time time)
|
||||
"SELECT valid_from, expire_sign, expire_legal FROM exchange_sign_keys \
|
||||
WHERE exchange_pub=$1"
|
||||
let find_signkey =
|
||||
let find_signkey =
|
||||
Caqti_type.(eddsa_pub ->? signkey_data)
|
||||
"SELECT exchange_pub, valid_from, expire_sign, expire_legal, master_sig \
|
||||
FROM exchange_sign_keys WHERE exchange_pub=$1"
|
||||
in
|
||||
fun (module Conn : CONN) (exchange_pub : EddsaPublicKey.t) ->
|
||||
Conn.find_opt lookup_signing_key exchange_pub
|
||||
Conn.find_opt find_signkey exchange_pub
|
||||
|
||||
let activate_signing_key =
|
||||
let insert_signkey =
|
||||
let insert_signkey =
|
||||
let master_sig = Bin_sig.ExchangeSigningKeyValidity.caqti in
|
||||
Caqti_type.(t5 eddsa_pub time time time master_sig ->. unit)
|
||||
Caqti_type.(signkey_data ->. unit)
|
||||
"INSERT INTO exchange_sign_keys (exchange_pub, valid_from, expire_sign, \
|
||||
expire_legal, master_sig) VALUES ($1, $2, $3, $4, $5)"
|
||||
in
|
||||
fun (module Conn : CONN)
|
||||
~master_sig
|
||||
Signkey_data.
|
||||
{ pub; stamp_start; stamp_expire; stamp_end; master_sig= master_sig_opt }
|
||||
->
|
||||
assert (master_sig_opt = Some master_sig);
|
||||
Conn.exec insert_signkey
|
||||
(pub, stamp_start, stamp_expire, stamp_end, master_sig)
|
||||
fun (module Conn : CONN) v -> Conn.exec insert_signkey v
|
||||
|
||||
(* TODO return type *)
|
||||
let lookup_denomination_key =
|
||||
|
|
|
|||
|
|
@ -92,9 +92,7 @@ let add_signkey_master_signatures conn t l =
|
|||
| Some signkey ->
|
||||
let sk_data = { signkey.sk_data with master_sig= Some master_sig } in
|
||||
let signkey = { signkey with sk_data } in
|
||||
let* () =
|
||||
Pg.activate_signing_key conn ~master_sig sk_data |> unwrap_err_caqti
|
||||
in
|
||||
let* () = Pg.insert_signkey conn sk_data |> unwrap_err_caqti in
|
||||
Hashtbl.replace t.sk_ht pub signkey;
|
||||
Ok ())
|
||||
l
|
||||
|
|
@ -137,20 +135,14 @@ let dir = Fpath.(v "data" / "secmod ")
|
|||
|
||||
let db_lookup_signkey_data conn fname priv =
|
||||
let pub = EddsaPrivateKey.pub_of_priv priv in
|
||||
let* opt = Pg.lookup_signing_key conn pub in
|
||||
let* opt = Pg.find_signkey conn pub in
|
||||
match opt with
|
||||
| None ->
|
||||
Fmt.error_msg
|
||||
"load_signkey error no associated metadata found in database for \
|
||||
signkey `%s`."
|
||||
"load_signkey error: no associated data found in database for signkey \
|
||||
`%s`."
|
||||
(Fpath.to_string fname)
|
||||
| Some (stamp_start, stamp_expire, stamp_end) ->
|
||||
(* TODO master_sig *)
|
||||
let master_sig = None in
|
||||
let v =
|
||||
Signkey_data.{ pub; stamp_start; stamp_expire; stamp_end; master_sig }
|
||||
in
|
||||
Ok v
|
||||
| Some sk_data -> Ok sk_data
|
||||
|
||||
let db_lookup_denom_data conn ~section_name priv =
|
||||
let pub = RsaPrivateKey.pub_of_priv priv in
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue