use correct denomination hash (with age-mask and cipher)

This commit is contained in:
swrup 2026-02-27 23:36:05 +01:00
parent 9c87aa63ea
commit 3cef594e1f
14 changed files with 142 additions and 61 deletions

View file

@ -29,7 +29,7 @@ offline_tool revoke-denom \
--output $b \
--rsa \
$rsa_pub
h_denom=$(dune exec offline -- hash64 $rsa_pub)
h_denom=$(dune exec offline -- denomination-hash $rsa_pub)
offline_tool upload --input $b --url $url"/management/denominations/"$h_denom"/revoke"
echo "[OK] /management/denominations/\$H_DENOM/revoke"

View file

@ -99,9 +99,8 @@ let () =
"3KHKZJZ30ABB4E56MA2V0EQWGCWH0QQG9P2ZHYHR186C5HZXJMM4N9WXAQTKS94QSV9Y17GGNXN5MB1PZZFG7Q0FY88QPKKRG4MYCPSMTZK5W59R0MJVNJ4P4AQM96TDG5W7RV8GSNR1QQZ1GNHW3CX6D6ZRTMXB2NKB5SSYTDJS79F5ZFBRZ4HVED9JBBPWSR79KVV5QQ4APBGHBCKGMF9NJJS53A1BVYHDEVYAGFYF2SNEP827ZP50FKJ5GKGV8NQ15ESEZ69AT7GJG0T3TZVENY2YN9CVR98W3BKEZ53J7VTANARG8SJS8AMJQ7S23P5HRJ7XE9KTNRNXKH49MXV9JHHYE5535N7AGWEKR47SBCGNF44Z7XJ9RV5BQV12ZRJKN4HBZQHDNCMH3QKX9Z6G64"
in
let open Crypto in
let pub =
rsa_public_key |> decode |> RsaPublicKey.of_octets |> Result.get_ok
in
let pub = rsa_public_key |> RsaPublicKey.of_b32 |> Result.get_ok in
assert (RsaPublicKey.to_b32 pub = rsa_public_key);
let bks = blinding_key_secret |> decode in
let msg = decode message_hash in
let bmsg = Fdh_rsa.blind_msg pub ~bks msg in
@ -123,3 +122,24 @@ let () =
assert (Result.is_ok res);
()
let () =
(* denomination-hash *)
(* test value generated by using taler-typescript-core (taler-util/src/taler-crypto.ts)
at SUPPORTED_EXCHANGE_PROTOCOL_VERSION = "31:0:6" *)
let rsa_pub =
"040000Y0EAK8KAVYJ3GBT5EJHEE6PQ843PDRPRNBFTPEPQEYCXZ30M0S7B80303C75D1CMK74ZJT7WA7DGWTEK7C26J6GVPR93FX99BWX48HGSN8R9C2V104X6WECY6TYPDCAM3FXEVFVVE610P1C8DPV2GKGWYJ5K91A470CBZ00EASZ6A013B7CZ6SAF7MJS20TBYTVWHN7CPJFV5Q7Q0AXGED999E1G3JC3PY5W4MVC16J5SG2SPRJMW5YGM0N1C64NCZBDBTA9HW009TEV5NBCNRQ9GK54AEDY84SVEF4V43ZCPMQ6M3ZWZGQNBX8EF19NCKVQN7MMRCDCY7A9MVJSDEBRZDQ4ZKRVT2C35225KM660ZQ731B9ZYH9JQ35WQ93MKH4PH4AWCJ8EH38JJA93R73M704002"
in
let h_pub =
"X1WDZ01CAP3V8ZRQMXX1CCWNKYDMYYKA6RG3X61N7RBARX85QCDJCDEAEDZNFYC2J22P2C930A13BAGQNVZMFG4M1YM28TCS2WK0T6R"
in
let open Crypto in
let h_pub' =
RsaPublicKey.of_b32 rsa_pub
|> Result.get_ok
|> DenominationHash.hash_of_rsa
|> DenominationHash.to_b32
in
assert (h_pub' = h_pub);
()

View file

@ -74,8 +74,18 @@ let keys content =
let denom_l = v.denominations |> Denomination.denoms_of_denomgroups in
let* () =
denom_l
|> list_iter
(Denomination.verify_denomination_key_validity ~key:v.master_public_key)
|> list_iter (fun dn ->
let open Denomination in
(*let to_int64 ts = ts |> Timestamp.to_s |> Option.get in*)
Fmt.pr "rsa_pub: %s@." (Crypto.RsaPublicKey.to_b32 dn.pub);
Fmt.pr "master_sig: %s@." (B32.encode @@ Obj.magic dn.master_sig);
(* amount bin fraction bad? *)
let* () =
Denomination.verify_denomination_key_validity ~key:v.master_public_key
dn
in
Fmt.pr "validated a denom@.";
Ok ())
in
let* () =
let last_issue_date =