This commit is contained in:
swrup 2026-02-17 16:49:33 +01:00
parent 43fd85b827
commit 91281b5dce
2 changed files with 19 additions and 27 deletions

View file

@ -1,21 +0,0 @@
open Bos.OS
open Syntax
open Crypto
let read fname = File.read fname |> unwrap_err_msg
let write_eddsa fname priv =
EddsaPrivateKey.to_octets priv |> File.write fname |> unwrap_err_msg
let write_rsa fname priv =
RsaPrivateKey.to_octets priv |> File.write fname |> unwrap_err_msg
let read_eddsa fname =
let* data = read fname in
let+ v = EddsaPrivateKey.of_octets data in
v
let read_rsa fname =
let* data = read fname in
let+ v = RsaPrivateKey.of_octets data in
v

View file

@ -45,6 +45,19 @@ module Make (Conn : Pg.CONN) = struct
open Crypto open Crypto
module DenominationHash = Hash.DenominationHash module DenominationHash = Hash.DenominationHash
let read fname = Bos.OS.File.read fname |> unwrap_err_msg
let write fname s = Bos.OS.File.write fname s |> unwrap_err_msg
let write_eddsa fname priv = write fname (EddsaPrivateKey.to_octets priv)
let write_rsa fname priv = write fname (RsaPrivateKey.to_octets priv)
let read_eddsa fname =
let* data = read fname in
EddsaPrivateKey.of_octets data
let read_rsa fname =
let* data = read fname in
RsaPrivateKey.of_octets data
type sk = Signkey.t type sk = Signkey.t
type future_sk = Api.FutureSignKey.t type future_sk = Api.FutureSignKey.t
type dn = Denomination.t type dn = Denomination.t
@ -205,10 +218,10 @@ module Make (Conn : Pg.CONN) = struct
let list_to_ht l = Hashtbl.of_seq (List.to_seq l) let list_to_ht l = Hashtbl.of_seq (List.to_seq l)
let load () = let load () =
let* sm_key = Data_file.read_eddsa sm_key_fname in let* sm_key = read_eddsa sm_key_fname in
let sm_pubkey = EddsaPrivateKey.pub_of_priv sm_key in let sm_pubkey = EddsaPrivateKey.pub_of_priv sm_key in
let* sk_keys = list_map Data_file.read_eddsa (List.init 1 sk_fname) in let* sk_keys = list_map read_eddsa (List.init 1 sk_fname) in
let* sk_l = let* sk_l =
list_map list_map
(fun priv -> (fun priv ->
@ -226,7 +239,7 @@ module Make (Conn : Pg.CONN) = struct
list_map list_map
(fun coin -> (fun coin ->
let section_name = coin.Config.Coin.section_name in let section_name = coin.Config.Coin.section_name in
let+ priv = Data_file.read_rsa (dn_fname section_name) in let+ priv = read_rsa (dn_fname section_name) in
(section_name, priv)) (section_name, priv))
Config.Coin.all_coins Config.Coin.all_coins
in in
@ -447,11 +460,11 @@ module Make (Conn : Pg.CONN) = struct
Ok () Ok ()
let save () = let save () =
let* () = Data_file.write_eddsa sm_key_fname t.sm_key in let* () = write_eddsa sm_key_fname t.sm_key in
let* () = let* () =
Hashtbl.to_seq_values t.sk_key_ht Hashtbl.to_seq_values t.sk_key_ht
|> List.of_seq |> List.of_seq
|> List.mapi (fun i priv -> Data_file.write_eddsa (sk_fname i) priv) |> List.mapi (fun i priv -> write_eddsa (sk_fname i) priv)
|> list_iter Fun.id |> list_iter Fun.id
in in
let* () = let* () =
@ -463,7 +476,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
Data_file.write_rsa (dn_fname section_name) priv) write_rsa (dn_fname section_name) priv)
in in
Logs.info (fun m -> m "saved secmod private keys data"); Logs.info (fun m -> m "saved secmod private keys data");
Ok () Ok ()