This commit is contained in:
swrup 2026-02-03 17:24:19 +01:00
parent ac4058df7e
commit 7a0ac3b13b
5 changed files with 210 additions and 201 deletions

View file

@ -5,6 +5,10 @@ let read_file fname = Bos.OS.File.read (Fpath.v fname) |> unwrap_err_msg
let write_file fname content =
Bos.OS.File.write (Fpath.v fname) content |> unwrap_err_msg
let read_master_key_file filename =
let* master_key = read_file filename in
Crypto.EddsaPrivateKey.of_octets master_key
let base_url = Uri.of_string "http://localhost:3434/"
let full_url path = Uri.with_path base_url path |> Uri.to_string
@ -40,39 +44,46 @@ let setup ~output =
let sign ~master_key ~input ~output =
let open Crypto in
let* master_key = read_master_key_file master_key in
let* input = read_file input in
let* master_key = read_file master_key in
let* master_key = EddsaPrivateKey.of_octets master_key in
let master_pub = EddsaPrivateKey.pub_of_priv master_key in
let* future_keys_response = Api.decode Api.FutureKeysResponse.jsont input in
let* () =
Offline_sig.verify_future_keys_response master_pub future_keys_response
in
let master_signatures =
Offline_sig.make_master_signatures ~master_key future_keys_response
Offline_sig.mk_future_keys ~master_key future_keys_response
in
let* s = Api.encode Api.MasterSignatures.jsont master_signatures in
let* () = write_file output s in
Ok ()
let revoke_denom ~output ~master_key ~h_denom =
let open Crypto in
let* key = read_file master_key in
let* key = EddsaPrivateKey.of_octets key in
let* key = read_master_key_file master_key in
let* h_denom = B32.decode h_denom in
let h_denom = Bin_type.DenominationHash.of_octets h_denom in
let denom_revoke = Offline_sig.mk_denom_revoke ~key h_denom in
let h_denom_pub = Bin_type.DenominationHash.of_octets h_denom in
let denom_revoke =
let master_sig =
let open Bin_sig.MasterDenominationKeyRevocation in
sign_f ~f:(Crypto.EddsaSignature.sign ~key) { h_denom_pub }
in
Api.DenomRevocationSignature.{ master_sig }
in
let* s = Api.encode Api.DenomRevocationSignature.jsont denom_revoke in
let* () = write_file output s in
Ok ()
let revoke_signkey ~output ~master_key ~signkey =
let open Crypto in
let* key = read_file master_key in
let* key = EddsaPrivateKey.of_octets key in
let* signkey = EddsaPublicKey.of_b32 signkey in
let v = Offline_sig.mk_signkey_revoke ~key signkey in
let* s = Api.encode Api.SignkeyRevocationSignature.jsont v in
let* key = read_master_key_file master_key in
let* exchange_pub = Crypto.EddsaPublicKey.of_b32 signkey in
let signkey_revoke =
let master_sig =
let open Bin_sig.MasterSigningKeyRevocation in
sign_f ~f:(Crypto.EddsaSignature.sign ~key) { exchange_pub }
in
Api.SignkeyRevocationSignature.{ master_sig }
in
let* s = Api.encode Api.SignkeyRevocationSignature.jsont signkey_revoke in
let* () = write_file output s in
Ok ()
@ -80,8 +91,7 @@ let global_fees ~output ~master_key ~start_date ~end_date ~history_fee
~account_fee ~purse_fee ~history_expiration ~purse_account_limit
~purse_timeout =
let open Crypto in
let* key = read_file master_key in
let* key = EddsaPrivateKey.of_octets key in
let* key = read_master_key_file master_key in
let* purse_account_limit =
match
purse_account_limit >= 0
@ -124,5 +134,4 @@ let global_fees ~output ~master_key ~start_date ~end_date ~history_fee
}
in
let* s = Api.encode Api.GlobalFees.jsont global_fees in
let* () = write_file output s in
Ok ()
write_file output s