This commit is contained in:
swrup 2026-02-21 17:39:12 +01:00
parent 8bf7cf54ef
commit 50f9986568
5 changed files with 41 additions and 38 deletions

View file

@ -1,7 +1,7 @@
(* TODO better error type *)
type 'a result = ('a, string) Result.t
module type S = Mod_intf.S
module type S = Mod_intf.KEYS
module Make (Conn : Pg.CONN) = struct
let conn = (module Conn : Pg.CONN)

View file

@ -1,3 +1,3 @@
module type S = Mod_intf.S
module type S = Mod_intf.KEYS
module Make (_ : Pg.CONN) : S

View file

@ -1,6 +1,6 @@
type 'a result = ('a, string) Result.t
module type S = sig
module type KEYS = sig
open Crypto
val master_pub : eddsa_pub

View file

@ -167,22 +167,14 @@ let t =
| Error e -> Fmt.failwith "secmod_eddsa initialization failure: %s." e
| Ok t -> t
let sm_pub = t.sm_pub
let keys () =
Hashtbl.to_seq_values t.ht
|> List.of_seq
|> List.map (fun { priv= _; pub; t1; t2 } -> (pub, t1, t2))
let sign_secmod s = EddsaSignature.sign ~key:t.sm_key_priv s
let find pub =
Hashtbl.find_opt t.ht pub |> Option.to_result ~none:"key not found"
let sign ~pub s =
let+ k = find pub in
let data = EddsaSignature.sign ~key:k.priv s in
data
let add t1 t2 =
let priv, pub = EddsaPrivateKey.generate () in
let k = { priv; pub; t1; t2 } in
Hashtbl.replace t.ht k.pub k;
()
let delete pub =
let* k = find pub in
@ -195,11 +187,21 @@ let delete_outdated ~now =
|> List.map (fun k -> k.pub)
|> list_iter delete
let add t1 t2 =
let priv, pub = EddsaPrivateKey.generate () in
let k = { priv; pub; t1; t2 } in
Hashtbl.replace t.ht k.pub k;
()
(* ---- *)
let sm_pub = t.sm_pub
let keys () =
Hashtbl.to_seq_values t.ht
|> List.of_seq
|> List.map (fun { priv= _; pub; t1; t2 } -> (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 = EddsaSignature.sign ~key:k.priv s in
data
(* delete and replace *)
let revoke pub =
@ -209,7 +211,7 @@ let revoke pub =
(* TODO
- more checks
- sign: check time
- sign: check timestamps before signing
- schedule tasks
- !lock

View file

@ -193,24 +193,9 @@ let t =
| Error e -> Fmt.failwith "secmod_rsa initialization failure: %s." e
| Ok t -> t
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 find pub =
Hashtbl.find_opt t.ht pub |> Option.to_result ~none:"key not found"
let sign ~pub s =
let+ k = find pub in
let data = RsaSignature.sign ~key:k.priv s in
data
let delete pub =
let* k = find pub in
Hashtbl.remove t.ht k.pub; delete_key_file k
@ -228,7 +213,23 @@ let add section_name t1 t2 =
Hashtbl.replace t.ht k.pub k;
()
(* delete and replace *)
(* ---- *)
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