diff --git a/future_keys.json b/future_keys.json new file mode 100644 index 00000000..ae3dfb3a --- /dev/null +++ b/future_keys.json @@ -0,0 +1 @@ +{"future_denoms":[{"section_name":"kudo_1","value":"EUR:0.01","stamp_start":{"t_s":1764351819.8918703},"stamp_expire_withdraw":{"t_s":1795887819.8918703},"stamp_expire_deposit":{"t_s":1795887819.8918703},"stamp_expire_legal":{"t_s":1795887819.8918703},"denom_pub":{"cipher":"RSA","age_mask":0,"rsa_pub":"04000278E0AA19SGCMZ8SGX1K7Y7PZD5YPNQNASYCX31AQ68716M9J7PH176V0RKFR5BZABMQBHS87Y689SH3MSS85H3W5FPCG20RCC9CJX5A25DG4R0VFPV8BTVWSJNHKTCV8H6EGV4XCYK5SMSPF0CD6MQDA4B8TWKAZRX64CG5D9VX31QTG7T1PWE83SGMB0SWSGFASGRPDQD7B7P84J3AZEE07DTRHR8H0JYAK2QFZ8SFRPJ6ENHD8EJVC7P9PQD48WDSG74D88N8QG7EHSVVEZ0HCQH5RM4PH93XJ4NEMA497CC16JEM27DPR84KYZFTCF45RCQ707N3XXS59YXG8GASA7X6EYS0DBAQ8ZA325H8HY9WYNG4EW9Z85M6EGHTEQ2MSAZ2T480QHKXH049ZES4MEZ0000000004002==="},"fee_withdraw":"EUR:0.00","fee_deposit":"EUR:0.00","fee_refresh":"EUR:0.00","fee_refund":"EUR:0.00","denom_secmod_sig":"6DHYV6KVKJYF9WYWH2K2EY9YMQJV72NXPQQG8AW8AEGAS9BCXAVFA4Q2S3PH64MBF5ENBXRCNB6VE10XKSGRHTNJA31Q71EEZQYSY3R="},{"section_name":"kudo_2","value":"EUR:0.02","stamp_start":{"t_s":1764351819.9271259},"stamp_expire_withdraw":{"t_s":1795887819.9271259},"stamp_expire_deposit":{"t_s":1795887819.9271259},"stamp_expire_legal":{"t_s":1795887819.9271259},"denom_pub":{"cipher":"RSA","age_mask":0,"rsa_pub":"0400026K88KGNST1T1TK6C4NQNM01AHX738WTHKNX3863DTTM4BJAH8C3DKH1QRN4Z8BC5XE03E21WG3ZD627WAW71KEPMCQTW04XKX5X8EK87S0SANDF1RS1VMYF0Q2D47S3ACRNVEG4DBB3RD2Q420AQDD13EME1Q51SJ3YV4CAAHFHP7GXY7ZGHTFD8ANXMMCX8P5KVV8F2SGB6DKFYRGF4K2DD5Z1SSHZKHACSKR35YY29NVBY06BPQJGQ4ZA4DYJV3ZZXBJEBYFESWHHW207AGKKEVXZRW7HGK25DK0Z2EVHNNXQHK6BES0WPMYAM5WWH5PWE0VD7THK6M3GDS78DV0ADQ8DJDJQRQJY8N93ABRTXBFC11EHQ34E1AKXK13RZ4CH5J11YC83SJ3CEGH5Z3W8T9K0000000004002==="},"fee_withdraw":"EUR:0.00","fee_deposit":"EUR:0.00","fee_refresh":"EUR:0.00","fee_refund":"EUR:0.00","denom_secmod_sig":"6J81436PDKAR8G9Z3QF6YF6QB12K66MK79N4RVT6VGWSVYJENDGSDESG33940DA6W45PHZ15NVHESMADSYXPYFCB6660TNCKBKVD83R="}],"future_signkeys":[{"key":"YBYC5P5WY59VKN217Y4X515HHRZ2PJSS5H83ECFV1VNM6DSKDD50====","stamp_start":{"t_s":1764351819.891798},"stamp_expire":{"t_s":1795887819.891798},"stamp_end":{"t_s":1795887819.891798},"signkey_secmod_sig":"WJBDVXW24CEQPEXY5Y0KKTA28ETQ9DFQHSZE69TYB3RSGMT1CZ2QS60B6FE45SES8DKDHYAZMPDFK8MX74A9FBMJ8TFH5X7RRKWVG00="}],"master_pub":"SJ0NYND22VQP3MP7FM754RDX8HCKVWAXTHY9SQNBTPRJZ2SPM2S0====","denom_secmod_public_key":"N9K968KEAYWSYGVPZG1D5X4Q3EC394TKJXN34WP6QXFMBYENY3N0====","signkey_secmod_public_key":"MPB9VR2AD7K8ZR8K2B2YWAQSXNKZSGC2888TY18KWERPMV4V6DCG===="} \ No newline at end of file diff --git a/src/crypto.ml b/src/crypto.ml index 1e2f7e2c..03f653a8 100644 --- a/src/crypto.ml +++ b/src/crypto.ml @@ -113,17 +113,27 @@ module RsaPublicKey = struct String.sub src pos len |> rev_string len |> Z.of_bits let to_octets ({ n; e } : Mirage_crypto_pk.Rsa.pub) = - let n_len = Z.size n in - let e_len = Z.size e in + let n = Z.to_bits n 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 + Fmt.epr "to_octets n_len: %d@." n_len; + Fmt.epr "to_octets e_len: %d@." e_len; + Fmt.epr "to_octets len: %d@." len; let b = Bytes.make len '\x00' in Bytes.set_uint16_be b 0 n_len; Bytes.set_uint16_be b 2 e_len; - let n = Z.to_bits n |> rev_string n_len in - let e = Z.to_bits e |> rev_string e_len in + let n = rev_string n_len n in + let e = rev_string e_len e in Bytes.blit_string n 0 b 4 n_len; + let s = Bytes.to_string b in + Fmt.epr "s = `%S`@." s; Bytes.blit_string e 0 b (4 + n_len) e_len; - Bytes.unsafe_to_string b + let s = Bytes.to_string b in + Fmt.epr "s = `%S`@." s; + let s = Bytes.to_string b in + Fmt.epr "s = `%S`@." s; s let of_octets = let check = function @@ -131,17 +141,27 @@ module RsaPublicKey = struct | true -> Ok () in fun s -> - Result.get_ok - @@ let open Syntax in + (*Fmt.epr "RsaPublicKey.of_octets s = `%s`@." s;*) let len = String.length s in let* () = check (len >= 4) in let n_len = String.get_uint16_be s 0 in let e_len = String.get_uint16_be s 2 in + Fmt.epr "n_len: %d@." n_len; + Fmt.epr "e_len: %d@." e_len; let* () = check (len = n_len + e_len + 4) 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 + Fmt.epr "n: %s@." (Z.to_string n); + Fmt.epr "e: %s@." (Z.to_string e); Mirage_crypto_pk.Rsa.pub ~n ~e |> unwrap_err_msg + + let of_octets s = + match of_octets s with + | Error e -> + Fmt.epr "RsaPublicKey.of_octets failure: %s@." e; + exit 1 + | Ok v -> v end include Binary