add protocol_version

This commit is contained in:
swrup 2026-02-05 21:19:57 +01:00 committed by Swrup
parent 46f7bed948
commit f63236fe74
4 changed files with 12 additions and 34 deletions

View file

@ -1,35 +1,24 @@
(* TODO (* TODO
ppx? ppx?
normalized JSON-object normalized JSON-object
for signature of ExchangeKeysResponse.exetensions field for signature of ExchangeKeysResponse.exetensions field
why is this one not defined by a struct?
how to handle protocol versions:
- "@deprecated" fields
- "@since protocol xx"
use of _monotonic_ time
option: correct use opt_mem or Jsont.option option: correct use opt_mem or Jsont.option
better types: better types:
- payto_uri - payto_uri
- uri - uri *)
let protocol_version = "31"
number:
- number is "float", but we probably want int everywhere instead
- numeric values capped at 2^53 -1 inclusive because json *)
open Crypto open Crypto
open Signatures open Signatures
open Jsont.Object
module DenominationHash = Hash.DenominationHash module DenominationHash = Hash.DenominationHash
let encode_exn jsont v = Jsont_bytesrw.encode_string jsont v |> Result.get_ok let encode_exn jsont v = Jsont_bytesrw.encode_string jsont v |> Result.get_ok
let encode jsont v = Jsont_bytesrw.encode_string jsont v let encode jsont v = Jsont_bytesrw.encode_string jsont v
let decode jsont v = Jsont_bytesrw.decode_string jsont v let decode jsont v = Jsont_bytesrw.decode_string jsont v
open Jsont.Object
module Account_operation = struct module Account_operation = struct
type t = type t =
| Withdraw | Withdraw

View file

@ -1,9 +1,3 @@
(* TODO
json:
"A JSON object is canonicalized by converting it to an ASCII byte array
with the algorithm specified in RFC 8785. The resulting bytes are
terminated with a single 0-byte and then hashed with SHA512." *)
open Digestif open Digestif
module type S = sig module type S = sig
@ -99,6 +93,8 @@ module Cstring = struct
end end
end end
(* TODO
check which hash algorithm to use for each hash type *)
module FullPaytoHash : S = H32 module FullPaytoHash : S = H32
module NormalizedPaytoHash : S = H32 module NormalizedPaytoHash : S = H32
module DenominationHash : S = H64 module DenominationHash : S = H64

View file

@ -43,7 +43,7 @@ let denomgroup_of_denomdata
{ denoms; value; fee_withdraw; fee_deposit; fee_refresh; fee_refund } { denoms; value; fee_withdraw; fee_deposit; fee_refresh; fee_refund }
let mk_keys ~db_conn (module Sm : Secmod.S) ~last_issue_date = let mk_keys ~db_conn (module Sm : Secmod.S) ~last_issue_date =
let version = "0" in let version = Api.protocol_version in
let base_url = Config.base_url in let base_url = Config.base_url in
let currency = Config.currency in let currency = Config.currency in
let shopping_url = Config.shopping_url in let shopping_url = Config.shopping_url in

View file

@ -34,8 +34,7 @@ module Aliases = struct
(* - Keys - *) (* - Keys - *)
(* TODO keep this? (* some of those are actuall ecdhe, or union of eddsa|ecdhe *)
some of those are actuall ecdhe, or union of eddsa|ecdhe *)
open Crypto open Crypto
module PursePublicKey = EddsaPublicKey module PursePublicKey = EddsaPublicKey
module AuditorPublicKeyP = EddsaPublicKey module AuditorPublicKeyP = EddsaPublicKey
@ -182,9 +181,8 @@ end
module DenominationKeyAnnouncement = struct module DenominationKeyAnnouncement = struct
module R = struct module R = struct
(* TODO taler_signatures purpose (* TODO CS: use purpose TALER_SIGNATURE_SM_CS_DENOMINATION_KEY *)
we use TALER_SIGNATURE_SM_RSA_DENOMINATION_KEY instead here *) (* purpose.purpose = TALER_SIGNATURE_SM_RSA_DENOMINATION_KEY *)
(* purpose.purpose = TALER_SIGNATURE_SM_DENOMINATION_KEY *)
type r = { type r = {
h_denom_pub: DenominationHash.t; h_denom_pub: DenominationHash.t;
h_section_name: Hash.Cstring.H64.t; h_section_name: Hash.Cstring.H64.t;
@ -639,8 +637,6 @@ end
module PartnerConfiguration = struct module PartnerConfiguration = struct
module R = struct module R = struct
(* TODO purpose
this purpose is used 2 times!? *)
(* purpose.purpose = TALER_SIGNATURE_MASTER_PARNTER_DETAILS *) (* purpose.purpose = TALER_SIGNATURE_MASTER_PARNTER_DETAILS *)
type r = { type r = {
partner_pub: MasterPublicKeyP.t; partner_pub: MasterPublicKeyP.t;
@ -877,11 +873,8 @@ module WithdrawRequest = struct
end end
module WithdrawConfirmation = struct module WithdrawConfirmation = struct
(* Purpose is #TALER_SIGNATURE_EXCHANGE_CONFIRM_WITHDRAW. (* Purpose is #TALER_SIGNATURE_EXCHANGE_CONFIRM_WITHDRAW *)
Signed by a `struct TALER_ExchangePrivateKeyP` using EdDSA. *)
type t = { type t = {
(* TODO TALER doc
missing TALER_HashBlindedPlanchetsP*)
h_planchets: HashPlanchetsP.t; h_planchets: HashPlanchetsP.t;
noreveal_index: int32; noreveal_index: int32;
} }