+ rename
This commit is contained in:
parent
84c3b8bec5
commit
7f440077ed
6 changed files with 101 additions and 96 deletions
|
|
@ -14,7 +14,7 @@ type key = {
|
|||
|
||||
type t = {
|
||||
sm_key_priv: EddsaPrivateKey.t;
|
||||
sm_key_pub: EddsaPublicKey.t;
|
||||
sm_pub: EddsaPublicKey.t;
|
||||
ht: (RsaPublicKey.t, key) Hashtbl.t;
|
||||
}
|
||||
|
||||
|
|
@ -153,10 +153,10 @@ let load () =
|
|||
| [] -> Ok None
|
||||
| _l ->
|
||||
let* sm_key_priv = read_eddsa sm_key_fpath in
|
||||
let sm_key_pub = EddsaPrivateKey.pub_of_priv sm_key_priv in
|
||||
let sm_pub = EddsaPrivateKey.pub_of_priv sm_key_priv in
|
||||
let ht = Hashtbl.create 0xff in
|
||||
let () = List.iter (fun k -> Hashtbl.replace ht k.pub k) keys in
|
||||
Ok (Some { sm_key_priv; sm_key_pub; ht })
|
||||
Ok (Some { sm_key_priv; sm_pub; ht })
|
||||
|
||||
let init () =
|
||||
let* opt = load () in
|
||||
|
|
@ -164,10 +164,10 @@ let init () =
|
|||
match opt with
|
||||
| Some t -> Ok t
|
||||
| None ->
|
||||
let sm_key_priv, sm_key_pub = EddsaPrivateKey.generate () in
|
||||
let sm_key_priv, sm_pub = EddsaPrivateKey.generate () in
|
||||
let* () = write_eddsa sm_key_fpath sm_key_priv in
|
||||
let ht = Hashtbl.create 0xff in
|
||||
Ok { sm_key_priv; sm_key_pub; ht }
|
||||
Ok { sm_key_priv; sm_pub; ht }
|
||||
in
|
||||
let now = Absolute.of_ptime (Ptime_clock.now ()) in
|
||||
let all_keys = List.of_seq @@ Hashtbl.to_seq_values t.ht in
|
||||
|
|
@ -193,26 +193,11 @@ let t =
|
|||
| Error e -> Fmt.failwith "secmod_rsa initialization failure: %s." e
|
||||
| Ok t -> t
|
||||
|
||||
let sm_key_pub = t.sm_key_pub
|
||||
|
||||
let keys () =
|
||||
Hashtbl.to_seq_values t.ht
|
||||
|> List.of_seq
|
||||
|> List.map (fun { section_name; priv= _; pub; t1; t2 } ->
|
||||
(section_name, pub, t1, t2))
|
||||
|
||||
let sign_with_sm_key s = EddsaSignature.sign ~key:t.sm_key_priv s
|
||||
|
||||
let find_key pub =
|
||||
let find pub =
|
||||
Hashtbl.find_opt t.ht pub |> Option.to_result ~none:"key not found"
|
||||
|
||||
let sign ~pub s =
|
||||
let+ k = find_key pub in
|
||||
let data = RsaSignature.sign ~key:k.priv s in
|
||||
data
|
||||
|
||||
let delete_key pub =
|
||||
let* k = find_key pub in
|
||||
let delete pub =
|
||||
let* k = find pub in
|
||||
Hashtbl.remove t.ht k.pub; delete_key_file k
|
||||
|
||||
let delete_outdated ~now =
|
||||
|
|
@ -220,17 +205,33 @@ let delete_outdated ~now =
|
|||
|> List.of_seq
|
||||
|> List.filter (fun k -> Absolute.compare now k.t2 >= 0)
|
||||
|> List.map (fun k -> k.pub)
|
||||
|> list_iter delete_key
|
||||
|> list_iter delete
|
||||
|
||||
let add_key section_name t1 t2 =
|
||||
let add section_name t1 t2 =
|
||||
let priv, pub = RsaPrivateKey.generate ~bits:Cfg.rsa_keysize () in
|
||||
let k = { section_name; priv; pub; t1; t2 } in
|
||||
Hashtbl.replace t.ht k.pub k;
|
||||
()
|
||||
|
||||
(* delete and replace *)
|
||||
let revoke_key pub =
|
||||
let* k = find_key pub in
|
||||
let* () = delete_key pub in
|
||||
add_key k.section_name k.t1 k.t2;
|
||||
(* ---- *)
|
||||
|
||||
let sm_pub = t.sm_pub
|
||||
|
||||
let keys () =
|
||||
Hashtbl.to_seq_values t.ht
|
||||
|> List.of_seq
|
||||
|> List.map (fun { section_name; priv= _; pub; t1; t2 } ->
|
||||
(section_name, pub, t1, t2))
|
||||
|
||||
let sign_secmod s = EddsaSignature.sign ~key:t.sm_key_priv s
|
||||
|
||||
let sign ~pub s =
|
||||
let+ k = find pub in
|
||||
let data = RsaSignature.sign ~key:k.priv s in
|
||||
data
|
||||
|
||||
let revoke pub =
|
||||
let* k = find pub in
|
||||
let* () = delete pub in
|
||||
add k.section_name k.t1 k.t2;
|
||||
Ok ()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue