mv data/ default/

This commit is contained in:
swrup 2026-02-10 11:59:51 +01:00
parent 0a45e7fe95
commit fbe72cb356
13 changed files with 35 additions and 37 deletions

6
.gitignore vendored
View file

@ -1,5 +1,5 @@
_build _build
data/secmod/*
!data/secmod/.gitkeep
_taler_exchange_sql _taler_exchange_sql
assets
secrets
!secrets/.keep

View file

@ -1,9 +1,11 @@
open Parse_config open Parse_config
let config_filename = "mte.conf"
let secrets_dir = Fpath.v "secrets"
let config_data = let config_data =
let path = Fpath.to_string (Fpath.v "default.config") in match Assets_crunch.read config_filename with
match Assets_crunch.read path with | None -> fail "static file not found: `%s`" config_filename
| None -> fail "static file not found: `%s`" path
| Some data -> | Some data ->
let v = Config_section.parse data in let v = Config_section.parse data in
v v

View file

@ -37,8 +37,8 @@
(rule (rule
(target assets_crunch.ml) (target assets_crunch.ml)
(deps (deps
(source_tree ../data/assets/)) (source_tree ../assets))
(action (action
(with-stdout-to (with-stdout-to
%{null} %{null}
(run ocaml-crunch -m plain ../data/assets -o %{target})))) (run ocaml-crunch -m plain ../assets -o %{target}))))

View file

@ -74,8 +74,6 @@ module Make (Conn : Pg.CONN) = struct
dn_section_name_ht: (denomination_hash, string) Hashtbl.t; dn_section_name_ht: (denomination_hash, string) Hashtbl.t;
} }
let dir = Fpath.(v "data" / "secmod")
let db_lookup_signkey_data conn fname pub = let db_lookup_signkey_data conn fname pub =
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
@ -112,9 +110,13 @@ module Make (Conn : Pg.CONN) = struct
let error_invalid_state = let error_invalid_state =
Fmt.error "secmod load error: invalid store state." Fmt.error "secmod load error: invalid store state."
in in
let* sm_key_priv = Data_file.read_eddsa Fpath.(dir / "sk_sm") in let* sm_key_priv =
Data_file.read_eddsa Fpath.(Config.secrets_dir / "sk_sm")
in
let* signkeys = let* signkeys =
let l = List.init 1 (fun i -> Fpath.(dir / Fmt.str "sk_%d" i)) in let l =
List.init 1 (fun i -> Fpath.(Config.secrets_dir / Fmt.str "sk_%d" i))
in
let* l = list_map (fun fname -> load_signkey conn fname) l in let* l = list_map (fun fname -> load_signkey conn fname) l in
match opt_list l with Error () -> error_invalid_state | Ok opt -> Ok opt match opt_list l with Error () -> error_invalid_state | Ok opt -> Ok opt
in in
@ -125,7 +127,7 @@ module Make (Conn : Pg.CONN) = struct
list_map list_map
(fun coin -> (fun coin ->
let section_name = coin.section_name in let section_name = coin.section_name in
let fname = Fpath.(dir / section_name) in let fname = Fpath.(Config.secrets_dir / section_name) in
let* opt = Data_file.read_rsa fname in let* opt = Data_file.read_rsa fname in
match opt with match opt with
| None -> Ok None | None -> Ok None
@ -378,12 +380,14 @@ module Make (Conn : Pg.CONN) = struct
let store () = let store () =
Miou.Mutex.protect t.lock @@ fun () -> Miou.Mutex.protect t.lock @@ fun () ->
let* () = Data_file.write_eddsa Fpath.(dir / "sk_sm") t.sm_key_priv in let* () =
Data_file.write_eddsa Fpath.(Config.secrets_dir / "sk_sm") t.sm_key_priv
in
let* () = let* () =
Hashtbl.to_seq_values t.sk_ht Hashtbl.to_seq_values t.sk_ht
|> List.of_seq |> List.of_seq
|> List.mapi (fun i (key : signkey) -> |> List.mapi (fun i (key : signkey) ->
let fname = Fpath.(dir / Fmt.str "sk_%d" i) in let fname = Fpath.(Config.secrets_dir / Fmt.str "sk_%d" i) in
(fname, key.priv)) (fname, key.priv))
|> list_iter (fun (fname, key) -> Data_file.write_eddsa fname key) |> list_iter (fun (fname, key) -> Data_file.write_eddsa fname key)
in in
@ -397,7 +401,7 @@ module Make (Conn : Pg.CONN) = struct
| None -> Error "invalid state, section_name not found" | None -> Error "invalid state, section_name not found"
| Some s -> Ok s | Some s -> Ok s
in in
let fname = Fpath.(dir / section_name) in let fname = Fpath.(Config.secrets_dir / section_name) in
(fname, key.priv)) (fname, key.priv))
in in
list_iter (fun (fname, key) -> Data_file.write_rsa fname key) l list_iter (fun (fname, key) -> Data_file.write_rsa fname key) l

View file

@ -6,13 +6,15 @@ a="tmp_a.json"
b="tmp_b.json" b="tmp_b.json"
auditor_pub=$(<"./test/auditor_public_key") auditor_pub=$(<"./test/auditor_public_key")
master_key="./default/master_offline_private_key"
zero_euro="EUR:0.0" zero_euro="EUR:0.0"
dune exec offline -- download --output $a dune exec offline -- download --output $a
dune exec offline -- sign --input $a --output $b dune exec offline -- sign --master_key $master_key --input $a --output $b
dune exec offline -- upload --input $b --url "/management/keys" dune exec offline -- upload --input $b --url "/management/keys"
dune exec offline -- enable-auditor \ dune exec offline -- enable-auditor \
--master_key $master_key \
--output $b \ --output $b \
--auditor_url "auditor.example.com" \ --auditor_url "auditor.example.com" \
--auditor_name "auditor example" \ --auditor_name "auditor example" \
@ -21,6 +23,7 @@ dune exec offline -- enable-auditor \
dune exec offline -- upload --input $b --url "/management/auditors" dune exec offline -- upload --input $b --url "/management/auditors"
dune exec offline -- wire-fee \ dune exec offline -- wire-fee \
--master_key $master_key \
--output $b \ --output $b \
--wire_method "xxx" \ --wire_method "xxx" \
--fee_start 0 \ --fee_start 0 \
@ -30,6 +33,7 @@ dune exec offline -- wire-fee \
dune exec offline -- upload --input $b --url "/management/wire-fee" dune exec offline -- upload --input $b --url "/management/wire-fee"
dune exec offline -- global-fees \ dune exec offline -- global-fees \
--master_key $master_key \
--output $b \ --output $b \
--start_date 0 \ --start_date 0 \
--end_date 99999999 \ --end_date 99999999 \

View file

@ -1,4 +1,7 @@
(* TODO (* TODO
change download_cmd/upload_cmd
change arguments: '_' -> '-'
all management operations: all management operations:
/management/wire /management/wire
/management/wire/disable /management/wire/disable
@ -65,18 +68,9 @@ module Arg = struct
Arg.Conv.make ~docv:"eddsa public key argument" ~parser ~pp () Arg.Conv.make ~docv:"eddsa public key argument" ~parser ~pp ()
end end
let default_master_offline_key_file = "data/master_offline_private_key"
(*
let default_response_file = "response.json"
let default_request_file = "request.json"
*)
let master_key = let master_key =
let doc = "Master offline Eddsa private key file." in let doc = "Master offline Eddsa private key file." in
Arg.( Arg.(required & opt (some file) None & info [ "master_key" ] ~doc)
value
& opt file default_master_offline_key_file
& info [ "master_key_file" ] ~doc)
let input = let input =
let doc = "input file" in let doc = "input file" in
@ -94,10 +88,7 @@ let setup_cmd =
let doc = "Generate offline master keys" in let doc = "Generate offline master keys" in
let output = let output =
let doc = "output file" in let doc = "output file" in
Arg.( Arg.(required & opt (some filepath) None & info [ "o"; "output" ] ~doc)
value
& opt filepath default_master_offline_key_file
& info [ "o"; "output" ] ~doc)
in in
Cmd.make (Cmd.info "setup" ~doc) Cmd.make (Cmd.info "setup" ~doc)
@@ @@
@ -105,17 +96,14 @@ let setup_cmd =
setup ~output setup ~output
let download_cmd = let download_cmd =
let doc = "GET /management/keys/" in let doc = "GET" in
let man = Cmd.make (Cmd.info "download" ~doc)
[ `S Manpage.s_description; `P "$(cmd) download /management/keys." ]
in
Cmd.make (Cmd.info "download" ~doc ~man)
@@ @@
let+ output = output in let+ output = output in
download ~output download ~output
let upload_cmd = let upload_cmd =
let doc = "POST input.json data to url (default /management/keys)" in let doc = "POST" in
Cmd.make (Cmd.info "upload" ~doc) Cmd.make (Cmd.info "upload" ~doc)
@@ @@
let+ input = input and+ url = url in let+ input = input and+ url = url in