+ DenominationKeyAnnouncementPS.bin
This commit is contained in:
parent
a27af0ecf1
commit
c946cb0358
5 changed files with 32 additions and 16 deletions
|
|
@ -442,6 +442,8 @@ module WithdrawConfirmationPS = struct
|
|||
end
|
||||
|
||||
module DenominationKeyAnnouncementPS = struct
|
||||
(* TODO taler_signatures purpose
|
||||
we use TALER_SIGNATURE_SM_RSA_DENOMINATION_KEY instead here *)
|
||||
(* purpose.purpose = TALER_SIGNATURE_SM_DENOMINATION_KEY *)
|
||||
type t = {
|
||||
h_denom_pub: DenominationHash.t;
|
||||
|
|
@ -450,9 +452,18 @@ module DenominationKeyAnnouncementPS = struct
|
|||
duration_withdraw: TimeRelativeNBO.t;
|
||||
}
|
||||
|
||||
(* TODO management *)
|
||||
(* let bin = ... *)
|
||||
let to_string _ = assert false
|
||||
let bin =
|
||||
let open Bin in
|
||||
Purpose.make_bin Taler_signatures.sm_rsa_denomination_key @@ fun purpose ->
|
||||
record
|
||||
(fun _purpose h_denom_pub h_section_name anchor_time duration_withdraw ->
|
||||
{ h_denom_pub; h_section_name; anchor_time; duration_withdraw })
|
||||
|+ Purpose.field purpose
|
||||
|+ field DenominationHash.bin (fun t -> t.h_denom_pub)
|
||||
|+ field HashCode.bin (fun t -> t.h_section_name)
|
||||
|+ field TimeAbsoluteNBO.bin (fun t -> t.anchor_time)
|
||||
|+ field TimeRelativeNBO.bin (fun t -> t.duration_withdraw)
|
||||
|> sealr
|
||||
end
|
||||
|
||||
module SingleWithdrawRequestPS = struct
|
||||
|
|
|
|||
|
|
@ -48,13 +48,12 @@ let mk_future_denom denom_secmod_sign_f
|
|||
ps
|
||||
|>
|
||||
(* TODO implement
|
||||
DenominationKeyAnnouncementPS.bin
|
||||
SigningKeyAnnouncementPS.bin *)
|
||||
Binary_formats.DenominationKeyAnnouncementPS.to_string
|
||||
Bin.to_string Binary_formats.DenominationKeyAnnouncementPS.bin
|
||||
|>
|
||||
(* TODO sig type *)
|
||||
(* Signature by the denomination security module
|
||||
not this denomination rsa signature *)
|
||||
(not this denomination rsa signature) *)
|
||||
denom_secmod_sign_f
|
||||
in
|
||||
FutureDenom.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
let ( let* ) o f = match o with Ok v -> f v | Error _ as e -> e
|
||||
let ( let+ ) o f = match o with Ok v -> Ok (f v) | Error _ as e -> e
|
||||
|
||||
(* TODO use polymorphic variant for errors *)
|
||||
let unwrap_err_msg o = match o with Error (`Msg e) -> Error e | Ok v -> Ok v
|
||||
|
||||
let list_iter f l =
|
||||
let err = ref None in
|
||||
try
|
||||
|
|
|
|||
15
src/types.ml
15
src/types.ml
|
|
@ -108,16 +108,11 @@ module RsaPublicKey = struct
|
|||
type t = Mirage_crypto_pk.Rsa.pub
|
||||
|
||||
let of_string s =
|
||||
(* TODO bin
|
||||
- no [Bin.of_string] ?
|
||||
- what to do with the int ref? *)
|
||||
match B32.decode s with
|
||||
| Error _ as err -> err
|
||||
| Ok s -> (
|
||||
let off = ref 0 in
|
||||
let v = Bin.decode Binary_formats.RsaPublicKey.bin s off in
|
||||
let res = Mirage_crypto_pk.Rsa.pub ~n:v.n ~e:v.e in
|
||||
match res with Error (`Msg e) -> Error e | Ok pub -> Ok pub)
|
||||
let open Syntax in
|
||||
let* s = B32.decode s in
|
||||
let* v = Util.bin_of_string Binary_formats.RsaPublicKey.bin s in
|
||||
let+ v = Mirage_crypto_pk.Rsa.pub ~n:v.n ~e:v.e |> unwrap_err_msg in
|
||||
v
|
||||
|
||||
let to_string ({ n; e } : Mirage_crypto_pk.Rsa.pub) =
|
||||
let open Binary_formats.RsaPublicKey in
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ let ptime_add_span_exn p span =
|
|||
match Ptime.add_span p span with
|
||||
| None -> Fmt.failwith "Ptime.add_span: not in the range [min;max]"
|
||||
| Some v -> v
|
||||
|
||||
(* -- *** -- *)
|
||||
|
||||
(* TODO bin
|
||||
- no [Bin.of_string] ? *)
|
||||
let bin_of_string bin s =
|
||||
let v = Bin.decode bin s (ref 0) in
|
||||
Ok v
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue