This commit is contained in:
swrup 2025-11-30 11:38:50 +01:00
parent a95f992881
commit 60209151c4
2 changed files with 35 additions and 23 deletions

View file

@ -2,24 +2,32 @@
- 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 exchange_public_key = secmod_signkey.sm_key in
match Pg.activate_signing_key db_conn exchange_public_key with
| Ok () ->
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
| Error err ->
(* TODO don't 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
let sm_key = secmod_signkey.sm_key in
let sm_key = { sm_key with master_sig= dummy_master_sig } in
let res = Pg.activate_signing_key db_conn sm_key in
Result.fold ~ok:(on_ok req) ~error:(on_error req) res

View file

@ -24,12 +24,16 @@ let routes =
let open Vif.Uri in
let open Vif.Route in
let open Vif.Type in
(* just for alignement *)
let get_ = get in
let post = Fun.flip post in
[
get (rel /?? nil) --> hello;
get (rel / "terms" /?? nil) --> Static.terms;
get (rel / "privacy" /?? nil) --> Static.privacy;
get (rel / "management" / "keys" /?? nil) --> Management.keys_get;
post any (rel / "management" / "keys" /?? nil) --> Management.keys_post;
get_ (rel /?? nil) --> hello;
get_ (rel / "terms" /?? nil) --> Static.terms;
get_ (rel / "privacy" /?? nil) --> Static.privacy;
get_ (rel / "test" /?? nil) --> Database.test_activate;
get_ (rel / "management" / "keys" /?? nil) --> Management.keys_get;
post (rel / "management" / "keys" /?? nil) any --> Management.keys_post;
]
let () =