This commit is contained in:
parent
27a940deed
commit
4fec038b09
4 changed files with 25 additions and 41 deletions
|
|
@ -1,32 +0,0 @@
|
|||
(* TODO
|
||||
- GNU Taler db-events?
|
||||
it seems caqti/pgx does not support it *)
|
||||
|
||||
let on_ok req () =
|
||||
let open Vif.Response.Syntax in
|
||||
let* () =
|
||||
Vif.Response.add ~field:"content-type" "text/plain; charset= utf-8"
|
||||
in
|
||||
let* () =
|
||||
Vif.Response.with_string req (Fmt.str "activate_signing_key done~~@.")
|
||||
in
|
||||
Vif.Response.respond `OK
|
||||
|
||||
let on_error req err =
|
||||
(* TODO be sure to not leak private data in error messages *)
|
||||
let open Vif.Response.Syntax in
|
||||
let str = Fmt.str "Database error: %a." Caqti_error.pp err in
|
||||
Logs.err (fun m -> m "%s" str);
|
||||
let* () = Vif.Response.with_string req str in
|
||||
Vif.Response.respond `Internal_server_error
|
||||
|
||||
(* TODO master_sig *)
|
||||
let dummy_master_sig =
|
||||
Option.some @@ Crypto.EddsaSignature.of_octets (String.make 64 '\x00')
|
||||
|
||||
let test_activate req server _ =
|
||||
let db_conn = Vif.Server.device Devices.db_connection server in
|
||||
let secmod_signkey = Vif.Server.device Devices.secmod_signkey server in
|
||||
let sm_key = Secmod_signkey.get_sm_key secmod_signkey in
|
||||
let res = Pg.activate_signing_key db_conn sm_key in
|
||||
Result.fold ~ok:(on_ok req) ~error:(on_error req) res
|
||||
26
src/pg.ml
26
src/pg.ml
|
|
@ -1,7 +1,11 @@
|
|||
(* TODO
|
||||
|
||||
how to fix postgres/caqti tuple type?
|
||||
try something with OID?
|
||||
need to add boilerplate in each query for amounts *)
|
||||
need to add boilerplate in each query for amounts
|
||||
|
||||
GNU Taler db-events?
|
||||
it seems caqti/pgx does not support it *)
|
||||
|
||||
open Crypto
|
||||
|
||||
|
|
@ -101,10 +105,18 @@ let activate_signing_key =
|
|||
expire_legal, master_sig) VALUES ($1, $2, $3, $4, $5)"
|
||||
in
|
||||
fun (module Conn : CONN)
|
||||
Signkey.{ pub; priv= _; stamp_start; stamp_expire; stamp_end; master_sig }
|
||||
~master_sig
|
||||
Signkey.
|
||||
{
|
||||
pub;
|
||||
priv= _;
|
||||
stamp_start;
|
||||
stamp_expire;
|
||||
stamp_end;
|
||||
master_sig= master_sig_opt;
|
||||
}
|
||||
->
|
||||
(* TODO master_sig *)
|
||||
let master_sig = master_sig |> Option.get in
|
||||
assert (master_sig_opt = Some master_sig);
|
||||
Conn.exec insert_signkey
|
||||
(pub, stamp_start, stamp_expire, stamp_end, master_sig)
|
||||
|
||||
|
|
@ -136,6 +148,7 @@ let add_denomination_key =
|
|||
($16,$17), $18)"
|
||||
in
|
||||
fun (module Conn : CONN)
|
||||
~master_sig
|
||||
Denomination.
|
||||
{
|
||||
pub;
|
||||
|
|
@ -152,11 +165,10 @@ let add_denomination_key =
|
|||
fee_refund;
|
||||
age_mask;
|
||||
h_pub;
|
||||
master_sig;
|
||||
master_sig= master_sig_opt;
|
||||
}
|
||||
->
|
||||
(* TODO master_sig *)
|
||||
let master_sig = master_sig |> Option.get in
|
||||
assert (master_sig_opt = Some master_sig);
|
||||
Conn.exec denomination_insert
|
||||
( h_pub,
|
||||
pub,
|
||||
|
|
|
|||
|
|
@ -20,7 +20,9 @@ let add_master_signatures conn t l =
|
|||
| None -> Error "secmod_denom failure: denomination hash not found."
|
||||
| Some denom ->
|
||||
let denom = { denom with master_sig= Some master_sig } in
|
||||
let* () = Pg.add_denomination_key conn denom |> unwrap_err_caqti in
|
||||
let* () =
|
||||
Pg.add_denomination_key conn ~master_sig denom |> unwrap_err_caqti
|
||||
in
|
||||
Hashtbl.replace t.denom_ht h_denom_pub denom;
|
||||
Ok ())
|
||||
l
|
||||
|
|
|
|||
|
|
@ -24,7 +24,9 @@ let add_master_signatures conn t l =
|
|||
| None -> Error "secmod_signkey failure: public key not found."
|
||||
| Some signkey ->
|
||||
let signkey = { signkey with master_sig= Some master_sig } in
|
||||
let* () = Pg.activate_signing_key conn signkey |> unwrap_err_caqti in
|
||||
let* () =
|
||||
Pg.activate_signing_key conn ~master_sig signkey |> unwrap_err_caqti
|
||||
in
|
||||
Hashtbl.replace t.signkey_ht pub signkey;
|
||||
Ok ())
|
||||
l
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue