This commit is contained in:
parent
ab82a357a9
commit
31a89f3a25
7 changed files with 32 additions and 14 deletions
1
future_keys.json
Normal file
1
future_keys.json
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"future_denoms":[{"section_name":"kudo_1","value":"EUR:0.01","stamp_start":{"t_s":1764354917.5913634},"stamp_expire_withdraw":{"t_s":1795890917.5913634},"stamp_expire_deposit":{"t_s":1795890917.5913634},"stamp_expire_legal":{"t_s":1795890917.5913634},"denom_pub":{"cipher":"RSA","age_mask":0,"rsa_pub":"0400026BC7HB7T66EDP1HNZWXJJAB06HQRZY754YF3HM4EBSHS9QXR0MAV9EAEWS5B1CBDK2H4CEPN25WN5NVZJNYXE1T6BEMSTZPB94T4KBQ8NCW3RPNVQQFGCB2ZAMM7A86DGF2G2PEGBG33AJEK6PZKE32ZFMP85N5Q5XAD4Q5YA76JSXC6CGMS7788V46N0K62R9ZWMFFP3G0Z5WF2FEFEYNTT9YYCVJEXH8PASR2Q298RXD6XKKY5ECM5AFHMG0EX6W7VHQYXN0B3GEEYN12FDSFND6TQKFKHA8SYR1FDRTJAD1YETJ3A3NF5CKNNDF6W47CWFCXANBX46JWPABVD9CQCHHGQ4V76A04C15GE8Z8F149DRHED2ANSNBK9ESDH3HANBJYY4R6KBE07GQXXNRWT6V0000000004002==="},"fee_withdraw":"EUR:0.00","fee_deposit":"EUR:0.00","fee_refresh":"EUR:0.00","fee_refund":"EUR:0.00","denom_secmod_sig":"SHC57K2Y60JK01KEJ54HZ1JXABKQEJVGD65M3YGM1B1M8H9860YZ0ZZT9BSX1S2DH0W91BY459YMYAW5BXVN0GY981QKK7MSWX1AA2G="},{"section_name":"kudo_2","value":"EUR:0.02","stamp_start":{"t_s":1764354917.6133766},"stamp_expire_withdraw":{"t_s":1795890917.6133766},"stamp_expire_deposit":{"t_s":1795890917.6133766},"stamp_expire_legal":{"t_s":1795890917.6133766},"denom_pub":{"cipher":"RSA","age_mask":0,"rsa_pub":"0400025RMH02FW6EF0T1SHQY4HPYBP8VGKS6Q24M8PP89J8KT6KGS44K9CR5P0TNZPGAZJ2W1Y2FGAK5V2E9DT5JTGEJHMDX4ZWXMVNQDXJ129A1C0ZCH2CA1MDYTAQARN5QH31ZN797G2QPPT2Y0F4SNDZ00ZKYHDP4JWEWC064M795N1T06B0WJYDQV7GAJ76TY7H2EHK5KP4F3K7EYKMDF9B90B4S3ZKHK16PQGZSCE4T3N80SH8HMRMDQAS5CBM9HHX5ECXXQR1DCXVDH6B838FWH5TP67X0SARPCGNXHHK06PF3Z03WWVWDPK9D82CGYQ591RRXAVYY6XXHAR4X5JNHKYVHQSKYNBHW13F8DMTZFKTKHA6ZWJT7VCWNASCJ6S9VPE98C07ZP89DSABWYBY5E9S50000000004002==="},"fee_withdraw":"EUR:0.00","fee_deposit":"EUR:0.00","fee_refresh":"EUR:0.00","fee_refund":"EUR:0.00","denom_secmod_sig":"67BFH8B6RVSWV3RNKW1S6Q70RZR1SG1AEBSQ6CPKA7A85XY9A3FKKB02P2C10M45G0WMPPRYBYVG9F6KASG5YSR1QHW5NDEAB7GSC0G="}],"future_signkeys":[{"key":"KCG1XC4HWVR98NRX918JK8V0GXS759954M5G1GZ1XJT68WREZWHG====","stamp_start":{"t_s":1764354917.591289},"stamp_expire":{"t_s":1795890917.591289},"stamp_end":{"t_s":1795890917.591289},"signkey_secmod_sig":"E4K25ER4G4Y90KGH9T05F9XQPTA1ECHK1YZVA6FS6VG9H68XYAKRFWCMGKG3AB4CQS9HX0D43R8WWXTEX5D9F0QEBQ3E72ANT26KW00="}],"master_pub":"SJ0NYND22VQP3MP7FM754RDX8HCKVWAXTHY9SQNBTPRJZ2SPM2S0====","denom_secmod_public_key":"1V9HCTYFN18MM143K6TNPQBH5QKV2YXMA7W81R1W1NDKP21N5XPG====","signkey_secmod_public_key":"238VV3ZGC9DHP3VG98V19HNTD437F2BWRJWFZFAW6Q92N8ZNFCXG===="}
|
||||||
1
master_signatures.json
Normal file
1
master_signatures.json
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"denom_sigs":[{"h_denom_pub":"H73GDS5MNZW1DQ62T524225X6K25Q0EXPYC6CP4S2AEQX1J2C4RND2KYZQX7EXTBG0BDW6T1HANKXBVH5SB1D8QCTE8YRVC040CR1CG=","master_sig":"J50WKZ51X21H24H2JSK8MGFJ1MF36R9M471PJ3NDQZYF7B8E2ZP9J960Q66Q5HNZ23SRF6DN5V0M0DWRPDY6X2WC96XGB0DBYFFKR38="},{"h_denom_pub":"QHFW8B4RF5JXG0JVF9E5F3D3JW9869QB55ZZ1G2NPEGMBGNH59QBPPT15SB1S3KXBN3VRJ2BKM6J8RXG2YAZJGPQS5T2MKVSADPWRX0=","master_sig":"7JHYST7T2499DM113TWE41W36TY7WG07BPB6QW7V13YKS1877RPV9HYTQ5Q8RMAG95BTR578GCJQQ96RY9JBDKW161GX8F59P7T8C3G="}],"signkey_sigs":[{"key":"KCG1XC4HWVR98NRX918JK8V0GXS759954M5G1GZ1XJT68WREZWHG====","master_sig":"9GVHW3QH80Q1XFSDQ1SJDPQPPXN16T1TR8JGGH98KCN30P76J3EXJ15SS93E910QEPTB4W96FGVK40PX7CZWDZT4M8QZFSH3N0V8210="}]}
|
||||||
|
|
@ -92,6 +92,13 @@ let of_string =
|
||||||
let jsont = Jsont.of_of_string ~kind:"Amount" of_string ~enc:to_string
|
let jsont = Jsont.of_of_string ~kind:"Amount" of_string ~enc:to_string
|
||||||
let currency_len = 12
|
let currency_len = 12
|
||||||
|
|
||||||
|
let pad_currency s =
|
||||||
|
let len = String.length s in
|
||||||
|
assert (len <= 11);
|
||||||
|
let b = Bytes.make 12 '\x00' in
|
||||||
|
Bytes.blit_string s 0 b 0 len;
|
||||||
|
Bytes.to_string b
|
||||||
|
|
||||||
let bin =
|
let bin =
|
||||||
let open Bin in
|
let open Bin in
|
||||||
record (fun _value _fraction _currency ->
|
record (fun _value _fraction _currency ->
|
||||||
|
|
@ -99,7 +106,7 @@ let bin =
|
||||||
assert false)
|
assert false)
|
||||||
|+ field neint64 (fun t -> t.value)
|
|+ field neint64 (fun t -> t.value)
|
||||||
|+ field neint32 (fun t -> t.fraction)
|
|+ field neint32 (fun t -> t.fraction)
|
||||||
|+ field (bytes currency_len) (fun t -> t.currency)
|
|+ field (bytes currency_len) (fun t -> pad_currency t.currency)
|
||||||
|> sealr
|
|> sealr
|
||||||
|
|
||||||
let bin_nbo =
|
let bin_nbo =
|
||||||
|
|
@ -107,5 +114,5 @@ let bin_nbo =
|
||||||
record (fun _value _fraction _currency -> assert false)
|
record (fun _value _fraction _currency -> assert false)
|
||||||
|+ field beint64 (fun t -> t.value)
|
|+ field beint64 (fun t -> t.value)
|
||||||
|+ field beint32 (fun t -> t.fraction)
|
|+ field beint32 (fun t -> t.fraction)
|
||||||
|+ field (bytes currency_len) (fun t -> t.currency)
|
|+ field (bytes currency_len) (fun t -> pad_currency t.currency)
|
||||||
|> sealr
|
|> sealr
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ end = struct
|
||||||
type t = B32.t
|
type t = B32.t
|
||||||
|
|
||||||
let hash s =
|
let hash s =
|
||||||
let open Digestif.SHA256 in
|
let open Digestif.SHA512 in
|
||||||
s |> digest_string |> to_raw_string
|
s |> digest_string |> to_raw_string
|
||||||
|
|
||||||
let jsont = Jsont.of_of_string ~kind:"HashCode" B32.decode ~enc:B32.encode
|
let jsont = Jsont.of_of_string ~kind:"HashCode" B32.decode ~enc:B32.encode
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,11 @@ module Hash_64 = struct
|
||||||
| false -> Fmt.failwith "Hash.of_octets failure: data is not 64 bytes"
|
| false -> Fmt.failwith "Hash.of_octets failure: data is not 64 bytes"
|
||||||
| true -> Digestif.SHA512.of_raw_string s
|
| true -> Digestif.SHA512.of_raw_string s
|
||||||
|
|
||||||
let to_octets = Digestif.SHA512.to_raw_string
|
let to_octets v =
|
||||||
|
let s = Digestif.SHA512.to_raw_string v in
|
||||||
|
match String.length s = 64 with
|
||||||
|
| false -> Fmt.failwith "Hash.to_octets failure: data is not 64 bytes"
|
||||||
|
| true -> s
|
||||||
|
|
||||||
let bin =
|
let bin =
|
||||||
let open Bin in
|
let open Bin in
|
||||||
|
|
|
||||||
|
|
@ -113,17 +113,19 @@ module RsaPublicKey = struct
|
||||||
String.sub src pos len |> rev_string len |> Z.of_bits
|
String.sub src pos len |> rev_string len |> Z.of_bits
|
||||||
|
|
||||||
let to_octets ({ n; e } : Mirage_crypto_pk.Rsa.pub) =
|
let to_octets ({ n; e } : Mirage_crypto_pk.Rsa.pub) =
|
||||||
let n_len = Z.size n in
|
let n = Z.to_bits n in
|
||||||
let e_len = Z.size e in
|
let e = Z.to_bits e in
|
||||||
|
let n_len = String.length n in
|
||||||
|
let e_len = String.length e in
|
||||||
let len = 4 + n_len + e_len in
|
let len = 4 + n_len + e_len in
|
||||||
let b = Bytes.make len '\x00' in
|
let b = Bytes.make len '\x00' in
|
||||||
Bytes.set_uint16_be b 0 n_len;
|
Bytes.set_uint16_be b 0 n_len;
|
||||||
Bytes.set_uint16_be b 2 e_len;
|
Bytes.set_uint16_be b 2 e_len;
|
||||||
let n = Z.to_bits n |> rev_string n_len in
|
let n = rev_string n_len n in
|
||||||
let e = Z.to_bits e |> rev_string e_len in
|
let e = rev_string e_len e in
|
||||||
Bytes.blit_string n 0 b 4 n_len;
|
Bytes.blit_string n 0 b 4 n_len;
|
||||||
Bytes.blit_string e 0 b (4 + n_len) e_len;
|
Bytes.blit_string e 0 b (4 + n_len) e_len;
|
||||||
Bytes.unsafe_to_string b
|
Bytes.to_string b
|
||||||
|
|
||||||
let of_octets =
|
let of_octets =
|
||||||
let check = function
|
let check = function
|
||||||
|
|
@ -131,8 +133,6 @@ module RsaPublicKey = struct
|
||||||
| true -> Ok ()
|
| true -> Ok ()
|
||||||
in
|
in
|
||||||
fun s ->
|
fun s ->
|
||||||
Result.get_ok
|
|
||||||
@@
|
|
||||||
let open Syntax in
|
let open Syntax in
|
||||||
let len = String.length s in
|
let len = String.length s in
|
||||||
let* () = check (len >= 4) in
|
let* () = check (len >= 4) in
|
||||||
|
|
@ -142,6 +142,11 @@ module RsaPublicKey = struct
|
||||||
let n = z_of_bits_be s 4 n_len in
|
let n = z_of_bits_be s 4 n_len in
|
||||||
let e = z_of_bits_be s (4 + n_len) e_len in
|
let e = z_of_bits_be s (4 + n_len) e_len in
|
||||||
Mirage_crypto_pk.Rsa.pub ~n ~e |> unwrap_err_msg
|
Mirage_crypto_pk.Rsa.pub ~n ~e |> unwrap_err_msg
|
||||||
|
|
||||||
|
let of_octets s =
|
||||||
|
match of_octets s with
|
||||||
|
| Error e -> Fmt.failwith "RsaPublicKey.of_octets failure: %s@." e
|
||||||
|
| Ok v -> v
|
||||||
end
|
end
|
||||||
|
|
||||||
include Binary
|
include Binary
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,11 @@ let denom_signature ~master_key
|
||||||
Crypto.RsaPublicKey.to_octets pub
|
Crypto.RsaPublicKey.to_octets pub
|
||||||
in
|
in
|
||||||
let h_denom_pub = Api.HashCode.hash pub_octets in
|
let h_denom_pub = Api.HashCode.hash pub_octets in
|
||||||
|
let master = Crypto.EddsaPrivateKey.(pub_of_priv master_key) in
|
||||||
|
let denom_hash = Bin_type.DenominationHash.hash pub_octets in
|
||||||
let master_sig =
|
let master_sig =
|
||||||
let open Bin_type in
|
(*let open Bin_type in*)
|
||||||
let open Bin_signature.DenominationKeyValidityPS in
|
let open Bin_signature.DenominationKeyValidityPS in
|
||||||
let master = Crypto.EddsaPrivateKey.(pub_of_priv master_key) in
|
|
||||||
let denom_hash = DenominationHash.hash pub_octets in
|
|
||||||
{
|
{
|
||||||
master;
|
master;
|
||||||
start= stamp_start;
|
start= stamp_start;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue