refacto verify_denomination/signkey

This commit is contained in:
swrup 2026-02-27 20:28:56 +01:00
parent d2e546571c
commit edd2646a86
6 changed files with 120 additions and 170 deletions

View file

@ -11,15 +11,11 @@ module type S = sig
val find_denomination : denom_hash -> Denomination.t option result
val signkeys : unit -> Signkey.t list result
val denominations : unit -> Denomination.t list result
val find_future_signkey : eddsa_pub -> Api.FutureSignKey.t result
val find_future_denomination : denom_hash -> Api.FutureDenom.t result
val make_future_keys_response : unit -> Api.FutureKeysResponse.t result
val certify_future_signkey :
eddsa_pub -> Signatures.ExchangeSigningKeyValidity.t -> unit result
val certify_future_denomination :
denom_hash -> Signatures.DenominationKeyValidity.t -> unit result
val verify_future_signkey : Api.SignKeySignature.t -> unit result
val verify_future_denomination : Api.DenomSignature.t -> unit result
val certify_future_signkey : Api.SignKeySignature.t -> unit result
val certify_future_denomination : Api.DenomSignature.t -> unit result
val revoke_signkey :
eddsa_pub -> Signatures.MasterSigningKeyRevocation.t -> unit result
@ -277,7 +273,20 @@ module Make (Conn : Pg.CONN) : S = struct
master_sig;
}
let certify_future_signkey pub master_sig =
let verify_future_signkey Api.SignKeySignature.{ key; master_sig } =
let* fsk = find_future_signkey key in
let sk = sk_of_future_sk fsk master_sig in
Signkey.verify_exchange_signing_key_validity ~key:Config.master_public_key
sk
let verify_future_denomination Api.DenomSignature.{ h_denom_pub; master_sig }
=
let* fdn = find_future_denomination h_denom_pub in
let dn = dn_of_future_dn fdn h_denom_pub master_sig in
Denomination.verify_denomination_key_validity ~key:Config.master_public_key
dn
let certify_future_signkey Api.SignKeySignature.{ key= pub; master_sig } =
match Sm_eddsa.find_key pub with
| None -> Error "future signkey not found"
| Some (pub, (t1, t2)) -> (
@ -295,7 +304,8 @@ module Make (Conn : Pg.CONN) : S = struct
m "certified signkey `%s`" (EddsaPublicKey.to_b32 sk.pub));
())
let certify_future_denomination h_pub master_sig =
let certify_future_denomination
Api.DenomSignature.{ h_denom_pub= h_pub; master_sig } =
match Sm_rsa.find_key h_pub with
| None -> Error "future denomination not found"
| Some (h_pub, (section_name, pub, t1)) -> (