wip fix mess
This commit is contained in:
parent
26f5e392ee
commit
50a6137967
6 changed files with 115 additions and 96 deletions
|
|
@ -13,79 +13,46 @@ let read fname =
|
|||
let write_eddsa fname priv = EddsaPrivateKey.to_octets priv |> File.write fname
|
||||
let write_rsa fname priv = RsaPrivateKey.to_octets priv |> File.write fname
|
||||
|
||||
let load_signkey conn fname =
|
||||
let read_eddsa fname =
|
||||
let* opt = read fname in
|
||||
match opt with
|
||||
| None -> Ok None
|
||||
| Some data -> (
|
||||
let priv = EddsaPrivateKey.of_octets data in
|
||||
let pub = EddsaPrivateKey.pub_of_priv priv in
|
||||
let* opt = Pg.lookup_signing_key conn pub in
|
||||
match opt with
|
||||
| None ->
|
||||
Fmt.error_msg
|
||||
"load_signkey error no associated metadata 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.
|
||||
{ pub; priv; stamp_start; stamp_expire; stamp_end; master_sig }
|
||||
in
|
||||
Ok (Some v))
|
||||
EddsaPrivateKey.of_octets data |> function
|
||||
| Error err -> Error (`Msg err)
|
||||
| Ok v -> Ok (Some v))
|
||||
|
||||
let load_denom conn ~section_name fname =
|
||||
let read_rsa fname =
|
||||
let* opt = read fname in
|
||||
match opt with
|
||||
| None -> Ok None
|
||||
| Some data -> (
|
||||
let* priv =
|
||||
RsaPrivateKey.of_octets data |> function
|
||||
| Error e -> Error (`Msg e)
|
||||
| Ok v -> Ok v
|
||||
RsaPrivateKey.of_octets data |> function
|
||||
| Error e -> Error (`Msg e)
|
||||
| Ok v -> Ok (Some v))
|
||||
|
||||
(* todo: move this *)
|
||||
let db_lookup_signkey_data conn fname priv =
|
||||
let pub = Crypto.EddsaPrivateKey.pub_of_priv priv in
|
||||
let* opt = Pg.lookup_signing_key conn pub in
|
||||
match opt with
|
||||
| None ->
|
||||
Fmt.error_msg
|
||||
"load_signkey error no associated metadata 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.{ pub; priv; stamp_start; stamp_expire; stamp_end; master_sig }
|
||||
in
|
||||
let pub = RsaPrivateKey.pub_of_priv priv in
|
||||
let h_pub = Bin_type.DenominationHash.hash (RsaPublicKey.to_octets pub) in
|
||||
let* opt = Pg.lookup_denomination_key conn h_pub in
|
||||
match opt with
|
||||
| None ->
|
||||
Fmt.error_msg
|
||||
"load_denom error no associated metadata found in database for \
|
||||
denom `%s`."
|
||||
(Fpath.to_string fname)
|
||||
| Some
|
||||
( stamp_start,
|
||||
stamp_expire_withdraw,
|
||||
stamp_expire_deposit,
|
||||
stamp_expire_legal,
|
||||
value,
|
||||
fee_withdraw,
|
||||
fee_deposit,
|
||||
fee_refresh,
|
||||
fee_refund,
|
||||
age_mask ) ->
|
||||
(* TODO master_sig *)
|
||||
let master_sig = None in
|
||||
let v =
|
||||
Denomination.
|
||||
{
|
||||
pub;
|
||||
priv;
|
||||
section_name;
|
||||
value;
|
||||
stamp_start;
|
||||
stamp_expire_withdraw;
|
||||
stamp_expire_deposit;
|
||||
stamp_expire_legal;
|
||||
fee_withdraw;
|
||||
fee_deposit;
|
||||
fee_refresh;
|
||||
fee_refund;
|
||||
age_mask;
|
||||
h_pub;
|
||||
master_sig;
|
||||
}
|
||||
in
|
||||
Ok (Some v))
|
||||
Ok v
|
||||
|
||||
let load_signkey conn fname =
|
||||
let* opt = read_eddsa fname in
|
||||
match opt with
|
||||
| None -> Ok None
|
||||
| Some priv ->
|
||||
let* signkey_data = db_lookup_signkey_data conn fname priv in
|
||||
Ok (Some signkey_data)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue