From 689456781974c58bd208108d7446ac3801656e27 Mon Sep 17 00:00:00 2001 From: Davide Galassi Date: Fri, 28 Feb 2025 15:27:51 +0100 Subject: [PATCH] Introduce JubJub (#49) --- Cargo.toml | 3 + data/vectors/jubjub_sha-512_tai_ietf.json | 93 ++++++++++++ data/vectors/jubjub_sha-512_tai_pedersen.json | 121 +++++++++++++++ data/vectors/jubjub_sha-512_tai_ring.json | 142 ++++++++++++++++++ src/suites/baby_jubjub.rs | 3 +- src/suites/jubjub.rs | 128 ++++++++++++++++ src/suites/mod.rs | 3 + src/suites/secp256r1.rs | 4 - 8 files changed, 491 insertions(+), 6 deletions(-) create mode 100644 data/vectors/jubjub_sha-512_tai_ietf.json create mode 100644 data/vectors/jubjub_sha-512_tai_pedersen.json create mode 100644 data/vectors/jubjub_sha-512_tai_ring.json create mode 100644 src/suites/jubjub.rs diff --git a/Cargo.toml b/Cargo.toml index dc59002..512489d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ ring-proof = { package = "w3f-ring-proof", version = "0.0.2", default-features = # Curves ark-secp256r1 = { version = "0.5", default-features = false, optional = true } ark-ed25519 = { version = "0.5", default-features = false, optional = true } +ark-ed-on-bls12-381 = { version = "0.5", default-features = false, optional = true } ark-ed-on-bls12-381-bandersnatch = { version = "0.5", default-features = false, optional = true } ark-bls12-381 = { version = "0.5", default-features = false, optional = true } ark-ed-on-bn254 = { version = "0.5", default-features = false, optional = true } @@ -46,11 +47,13 @@ full = [ "secp256r1", "ed25519", "bandersnatch", + "jubjub", "baby-jubjub", "ring", ] # Curves ed25519 = [ "ark-ed25519" ] +jubjub = [ "ark-ed-on-bls12-381", "ark-bls12-381/curve" ] bandersnatch = [ "ark-ed-on-bls12-381-bandersnatch", "ark-bls12-381/curve" ] baby-jubjub = [ "ark-ed-on-bn254", "ark-bn254/curve" ] secp256r1 = [ "ark-secp256r1", "rfc-6979" ] diff --git a/data/vectors/jubjub_sha-512_tai_ietf.json b/data/vectors/jubjub_sha-512_tai_ietf.json new file mode 100644 index 0000000..acbedc1 --- /dev/null +++ b/data/vectors/jubjub_sha-512_tai_ietf.json @@ -0,0 +1,93 @@ +[ + { + "comment": "jubjub_sha-512_tai_ietf - vector-1", + "sk": "2e5fcb767f3f6528c6ff5304168c79bff667f830156433d7660fb98d72bc5a01", + "pk": "30f478ac3c74e78188193194fed53fb95ab9a5e3bb0b5177540d0e3668bfb4d6", + "alpha": "", + "salt": "", + "ad": "", + "h": "deb13729d88f7003e094dcef981aa8e62ce35d7dff20143c1ece67335dd23257", + "gamma": "33d5f173ef131ffa7cd137ced05e2374a78d085f8e0d0a8c2f64b5488e535ceb", + "beta": "0b5d3619b606a30f43d0b80f9b72d619caca4ae6c86afd6a7a54dd1a892ff34559279ca1341f177a2909cb97a2593ffc92399507867d29cb86615b83a4061d31", + "proof_c": "2b870aabdbe252ed892a6e1c35a8e879f3fa900aa74b0158a3baef1888e54e02", + "proof_s": "d7dc8916c042374ed5601171f7c3db1ac65e7528efd56894fc0b6e9754449801" + }, + { + "comment": "jubjub_sha-512_tai_ietf - vector-2", + "sk": "ca48b2a3649f62e7c240e22851cb514b57ca1dfad8de5e6d79f06329357bd008", + "pk": "308996eb46e494d162f29bd6abacf14685bd204eeaeefd78d226da240dab9e3c", + "alpha": "0a", + "salt": "", + "ad": "", + "h": "0602a39a45b8b51b28f4489367e3215d8886e650a7dcd8a21e7365a2bfa1994e", + "gamma": "703fa7dce4f7acd51a92b5e845af77babee0c9cf9a680901c621ff98b0637821", + "beta": "282c8073be0faba5ec8d75b7c69790d4032be1af17b00d32d44b1d23a5b0d4935333e66481a212c42a0c6165c7ba568c6203a6b7e687bf513559b998af718fa0", + "proof_c": "b88f4c1462bc7bdd70e51a28e4bc8d9f34bbf0a9a7c12aedbbc7a34193890e0c", + "proof_s": "51b8f86737125e2f58ad1ea56d3c6cf09fcda65e6435fbed57e75bf762673f09" + }, + { + "comment": "jubjub_sha-512_tai_ietf - vector-3", + "sk": "d0286e69edde875b7d5587068d03ffda50d2af165574c7b29136962b81796603", + "pk": "b818097374bdcec279c69356de3398a240f2542bfbe07b339d56d0b452c16cc6", + "alpha": "", + "salt": "", + "ad": "0b8c", + "h": "deb13729d88f7003e094dcef981aa8e62ce35d7dff20143c1ece67335dd23257", + "gamma": "28e78b819a6449ebeaa94866dbb93290177bb4c58fe9ac9dc5a82a8c871afd1a", + "beta": "d882d5ca4549f669da6c325957914bb19f0b7ee9eda29a8012cc2fde2b0e2f21ad321f6e6c2096582cae71af42f2ca345fb2dc3bf55cdabda35b9d937f54f89e", + "proof_c": "a6cd47823711a71bd8851d2ce0254f40bfa51d496067892b73805b50a9bda206", + "proof_s": "73e1521fdf993ce4f4b09d8d376509a65668102f1bb0b34e2fc5de58d9a24104" + }, + { + "comment": "jubjub_sha-512_tai_ietf - vector-4", + "sk": "0e141badfe43931575e134862426bc47b86440d2b2e643862c1250a1464a2203", + "pk": "205db8f7d735e7df59410f974e39d0c6797119034b090f749f0306ce7c27fb40", + "alpha": "73616d706c65", + "salt": "", + "ad": "", + "h": "d9151cdd64a5d16bf3149694f13dfcbc7df5b3657f70e3aa8daa2f67b0e75ccf", + "gamma": "5014e883d3c7994ecac93af9e6a95aeca4d5fc3be5e77fac8d8af1f313b0b12a", + "beta": "6035d22c8348614fb393c2910e81412711ff1defcfd1939e5744cbec10600489979bbe25a47f1738cb4937d9a3a16914cef65563a57b9142638a151d4ea459ff", + "proof_c": "3fc38d46d8dcbc9827aedbc3e0febc2f6cc3bc67db31fb66a23e4167ee41690b", + "proof_s": "e270d00318f80a6b75253ec475685ecf73c748b9209fb189159309d160160f07" + }, + { + "comment": "jubjub_sha-512_tai_ietf - vector-5", + "sk": "c5b89638ae4eb16237a1d6f39d48687e9bf12733eb74c6b21edf871ca576fa02", + "pk": "8146083de63a51ca4c8c28126e5bed6439e3a2ad6c23307b96c030d3dabaffd6", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "b6014d3da5289c81014b6b5fb077183f4fc67370d589b04703f331d497c21b5a", + "beta": "bb1f90f574cac7deaac1a52fab802e4305cceababa4d874fcf1e0c122f13ee966c05b375f7d48df5ae7d286cb470f26a0f10ff19abe4f3d90d568c27621b4f0b", + "proof_c": "c27de8ec3e87d002e2721d77ebf51b6d96122be70b9558f24a72a40c9dfe9a0c", + "proof_s": "cdeda57bd86400ac1444ce44a0f6ab107bb8a4c26c24e9d35d91b1cf005c800c" + }, + { + "comment": "jubjub_sha-512_tai_ietf - vector-6", + "sk": "c5b89638ae4eb16237a1d6f39d48687e9bf12733eb74c6b21edf871ca576fa02", + "pk": "8146083de63a51ca4c8c28126e5bed6439e3a2ad6c23307b96c030d3dabaffd6", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "1f42", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "b6014d3da5289c81014b6b5fb077183f4fc67370d589b04703f331d497c21b5a", + "beta": "bb1f90f574cac7deaac1a52fab802e4305cceababa4d874fcf1e0c122f13ee966c05b375f7d48df5ae7d286cb470f26a0f10ff19abe4f3d90d568c27621b4f0b", + "proof_c": "c55a0a2f5da77f4df3c98d8971256481d49ce7e00eb6d0373c850b0ac6b91706", + "proof_s": "31f283a6d0b632a43a72e856f5c1c2d0db108611564966b354ec9f0c5dd4610d" + }, + { + "comment": "jubjub_sha-512_tai_ietf - vector-7", + "sk": "d742adcfce2a341263158af472d390d680eef01422290420cc61107497597005", + "pk": "a1014ce47c0acb248907b95d8cac8427d56ec88f6b88e6efa85e9953a2ef2e6b", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "1f42", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "ef00ace4b541a74d06b05d03aa8447cb66a3a11aea47f26a0197ab7ff0498bb8", + "beta": "9b5d9daf0ae53d37fa2d1458005194e14c20520ede7fb12cb76b4b27743104bcbc71e6815708bf6136360c667515f5707ad68037b6efd32e59e17df962c8d10a", + "proof_c": "ae387564a8455de2aba2a274ed2f06291764fadf6687ce67b463c1e28f7a660d", + "proof_s": "8d0e61ed17d9e14a8e53800cb69cea7df6072aa3d5974c010f05ecd22c961707" + } +] \ No newline at end of file diff --git a/data/vectors/jubjub_sha-512_tai_pedersen.json b/data/vectors/jubjub_sha-512_tai_pedersen.json new file mode 100644 index 0000000..4a65932 --- /dev/null +++ b/data/vectors/jubjub_sha-512_tai_pedersen.json @@ -0,0 +1,121 @@ +[ + { + "comment": "jubjub_sha-512_tai_pedersen - vector-1", + "sk": "2e5fcb767f3f6528c6ff5304168c79bff667f830156433d7660fb98d72bc5a01", + "pk": "30f478ac3c74e78188193194fed53fb95ab9a5e3bb0b5177540d0e3668bfb4d6", + "alpha": "", + "salt": "", + "ad": "", + "h": "deb13729d88f7003e094dcef981aa8e62ce35d7dff20143c1ece67335dd23257", + "gamma": "33d5f173ef131ffa7cd137ced05e2374a78d085f8e0d0a8c2f64b5488e535ceb", + "beta": "0b5d3619b606a30f43d0b80f9b72d619caca4ae6c86afd6a7a54dd1a892ff34559279ca1341f177a2909cb97a2593ffc92399507867d29cb86615b83a4061d31", + "blinding": "3b7e8f330b99205fd5300cf18a094d3298df60cf5b4945107146d6407a2d2400", + "proof_pk_com": "97da69b45d5cd751fab9bda5271cd38221400531d0e16d3b2565f942bc81f05a", + "proof_r": "c040a9081484b38594a1c469c506267cc1fa45efcd9d8baeff621ad9bf3df72a", + "proof_ok": "b20a6c4458a41a16e6894f42fb3958c11864c8b75245f6bd031517ee9662111b", + "proof_s": "6187858dc1653c6f55bca63f16ef56291ed853a182bcfbdade22fa6c6603f707", + "proof_sb": "9d3ee6ee1936e1b8ea6f9707c7792bc29f1fa541850f42978043d66b465f7f0b" + }, + { + "comment": "jubjub_sha-512_tai_pedersen - vector-2", + "sk": "ca48b2a3649f62e7c240e22851cb514b57ca1dfad8de5e6d79f06329357bd008", + "pk": "308996eb46e494d162f29bd6abacf14685bd204eeaeefd78d226da240dab9e3c", + "alpha": "0a", + "salt": "", + "ad": "", + "h": "0602a39a45b8b51b28f4489367e3215d8886e650a7dcd8a21e7365a2bfa1994e", + "gamma": "703fa7dce4f7acd51a92b5e845af77babee0c9cf9a680901c621ff98b0637821", + "beta": "282c8073be0faba5ec8d75b7c69790d4032be1af17b00d32d44b1d23a5b0d4935333e66481a212c42a0c6165c7ba568c6203a6b7e687bf513559b998af718fa0", + "blinding": "31d20c401eda5170115ec3a267d5992051f90cfec778b5d1adb9d2dc840ee80b", + "proof_pk_com": "d7cf9ddc584e24d147148fc39e30fda1c6dd11a85d75a9754fa9cb278164f709", + "proof_r": "669af5bc935a578ed76f6ab83a3ab13a7ed1a23c82cd0f9851c140da5c9bbc0d", + "proof_ok": "e0ac0b52a36d31ae196cc9b446f14128cd3070e933d64035547a517fdf406d62", + "proof_s": "a931e47c8d599ac10ff0fe5f0d5f5648ca413e322d9c997ad452fc1c8b2c3803", + "proof_sb": "a95dc0c0f41cf435b92930833b52e7d8c5ba4fe7ceacd59b071eb9a8963c040b" + }, + { + "comment": "jubjub_sha-512_tai_pedersen - vector-3", + "sk": "d0286e69edde875b7d5587068d03ffda50d2af165574c7b29136962b81796603", + "pk": "b818097374bdcec279c69356de3398a240f2542bfbe07b339d56d0b452c16cc6", + "alpha": "", + "salt": "", + "ad": "0b8c", + "h": "deb13729d88f7003e094dcef981aa8e62ce35d7dff20143c1ece67335dd23257", + "gamma": "28e78b819a6449ebeaa94866dbb93290177bb4c58fe9ac9dc5a82a8c871afd1a", + "beta": "d882d5ca4549f669da6c325957914bb19f0b7ee9eda29a8012cc2fde2b0e2f21ad321f6e6c2096582cae71af42f2ca345fb2dc3bf55cdabda35b9d937f54f89e", + "blinding": "76f0df1c062d482c842d43b092af5544d7108559683bbe14a3265f16e84e6006", + "proof_pk_com": "7cbb7a527393d031377a0457dd4a605c491781261dd1f17273f918c16299535c", + "proof_r": "c6038e97ebe9b0d5339d4ce0a734a1c05e7725da800d218d9389bb8028e2ec02", + "proof_ok": "c218481a881a21bd0ad10271ecf77c5ac7ce3731ead92bef8b4d28f2dff14f48", + "proof_s": "bad33d0fe96476d13cfcfb329263275c8592517fde6bea0475c261eb9ccc9805", + "proof_sb": "8f426c0be2db2f58a9488d7690a49f00d2de5cd374595d5f45dcfc7568a6bf04" + }, + { + "comment": "jubjub_sha-512_tai_pedersen - vector-4", + "sk": "0e141badfe43931575e134862426bc47b86440d2b2e643862c1250a1464a2203", + "pk": "205db8f7d735e7df59410f974e39d0c6797119034b090f749f0306ce7c27fb40", + "alpha": "73616d706c65", + "salt": "", + "ad": "", + "h": "d9151cdd64a5d16bf3149694f13dfcbc7df5b3657f70e3aa8daa2f67b0e75ccf", + "gamma": "5014e883d3c7994ecac93af9e6a95aeca4d5fc3be5e77fac8d8af1f313b0b12a", + "beta": "6035d22c8348614fb393c2910e81412711ff1defcfd1939e5744cbec10600489979bbe25a47f1738cb4937d9a3a16914cef65563a57b9142638a151d4ea459ff", + "blinding": "cb35e984e03253ea63bdcf1ce52c54d60c85a9e0e6d6b771fae5148d5b0e4302", + "proof_pk_com": "bcae3d49b89cf385d2fc6edb899194c2f9938d6b970f2a40a6efe426f5724784", + "proof_r": "8a5e6ce55f659c43848414270e558423b5a42ca8b8d67c9b5f269997c407461f", + "proof_ok": "6e2ce4a6f4cf3b924f65eb71c3719f709c3d87f0a1ca6e295fe1078a792b00b9", + "proof_s": "e4ef3397d02e9b9b10292e81e0d0e17e53437443d2a03fca0ef3ff8225883f03", + "proof_sb": "e66e8da6a4f4ba895d56e8e0b5fc006e361c843423e987eb7ebaf4bbee20b30b" + }, + { + "comment": "jubjub_sha-512_tai_pedersen - vector-5", + "sk": "c5b89638ae4eb16237a1d6f39d48687e9bf12733eb74c6b21edf871ca576fa02", + "pk": "8146083de63a51ca4c8c28126e5bed6439e3a2ad6c23307b96c030d3dabaffd6", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "b6014d3da5289c81014b6b5fb077183f4fc67370d589b04703f331d497c21b5a", + "beta": "bb1f90f574cac7deaac1a52fab802e4305cceababa4d874fcf1e0c122f13ee966c05b375f7d48df5ae7d286cb470f26a0f10ff19abe4f3d90d568c27621b4f0b", + "blinding": "4589927d0d90f1e3e801a1ffc6d5c576b18e890e9c72141d3f0203f2768a8909", + "proof_pk_com": "e4b8106ea14e5fdb290239787013f1476d1215125dfd81fc0e509f067aa9049a", + "proof_r": "b3f03fe8cd7ff11840cde63b36d99fd3ecb83089234ec3eb3ff877a73c9f1480", + "proof_ok": "d2a9679ab878d18dce9360b8f021ed10110d5962e3dacdd17a9178c36c233ed6", + "proof_s": "f7f68fb226b905e76c4b05d962afa176e3f734c445d47ead6fdfc29019235106", + "proof_sb": "beb64e4b98b7c08cf2935eeacbf255f42e5597050fc99d4df96c1f104fbb700e" + }, + { + "comment": "jubjub_sha-512_tai_pedersen - vector-6", + "sk": "c5b89638ae4eb16237a1d6f39d48687e9bf12733eb74c6b21edf871ca576fa02", + "pk": "8146083de63a51ca4c8c28126e5bed6439e3a2ad6c23307b96c030d3dabaffd6", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "1f42", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "b6014d3da5289c81014b6b5fb077183f4fc67370d589b04703f331d497c21b5a", + "beta": "bb1f90f574cac7deaac1a52fab802e4305cceababa4d874fcf1e0c122f13ee966c05b375f7d48df5ae7d286cb470f26a0f10ff19abe4f3d90d568c27621b4f0b", + "blinding": "0b16ae8001479a5887fd3710f388b6b35be9b04eb4d62ba5717d0452a06f0f06", + "proof_pk_com": "296d6eeceaaabaaba6849fd46fd7abdf33a90b8bf79b3199f851b795db3089df", + "proof_r": "93a39efa2a45eb8a6d104f50155cb7e049249395a8d252726b5c76d4fdf0564b", + "proof_ok": "d2a9679ab878d18dce9360b8f021ed10110d5962e3dacdd17a9178c36c233ed6", + "proof_s": "97ab45760f9a3fb33d4136ee024e324e853809497083f72251d0125eaee96d08", + "proof_sb": "1477e1966975343b0b75bec7b4bf208230df702a5de23515ee2df63f2d9bc806" + }, + { + "comment": "jubjub_sha-512_tai_pedersen - vector-7", + "sk": "d742adcfce2a341263158af472d390d680eef01422290420cc61107497597005", + "pk": "a1014ce47c0acb248907b95d8cac8427d56ec88f6b88e6efa85e9953a2ef2e6b", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "1f42", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "ef00ace4b541a74d06b05d03aa8447cb66a3a11aea47f26a0197ab7ff0498bb8", + "beta": "9b5d9daf0ae53d37fa2d1458005194e14c20520ede7fb12cb76b4b27743104bcbc71e6815708bf6136360c667515f5707ad68037b6efd32e59e17df962c8d10a", + "blinding": "b25bb1af5615454485805239c496939748815cfa6a340095e771016018a7db02", + "proof_pk_com": "26b7098b64f6ad2ed1b22f3491380f79927a2bb720df5e938291f00e52cecd9c", + "proof_r": "dc9aeebbecce230138055bfeda361ec1ccac090c8761ed2b59cdde183ce80066", + "proof_ok": "34d4ec9b618684a9b2a6f3ad50e6e5f1df5b64c79dff52ad3d1a26ee90f91c55", + "proof_s": "6bcf6a736e7e567c6b789476b99f48e3d45d84e69f7bc0d686c8e00086760007", + "proof_sb": "8b42b21a12f024b00e0bc81f7280816eee8377f412bf401ed2b49863a6c78505" + } +] \ No newline at end of file diff --git a/data/vectors/jubjub_sha-512_tai_ring.json b/data/vectors/jubjub_sha-512_tai_ring.json new file mode 100644 index 0000000..a02f81a --- /dev/null +++ b/data/vectors/jubjub_sha-512_tai_ring.json @@ -0,0 +1,142 @@ +[ + { + "comment": "jubjub_sha-512_tai_ring - vector-1", + "sk": "2e5fcb767f3f6528c6ff5304168c79bff667f830156433d7660fb98d72bc5a01", + "pk": "30f478ac3c74e78188193194fed53fb95ab9a5e3bb0b5177540d0e3668bfb4d6", + "alpha": "", + "salt": "", + "ad": "", + "h": "deb13729d88f7003e094dcef981aa8e62ce35d7dff20143c1ece67335dd23257", + "gamma": "33d5f173ef131ffa7cd137ced05e2374a78d085f8e0d0a8c2f64b5488e535ceb", + "beta": "0b5d3619b606a30f43d0b80f9b72d619caca4ae6c86afd6a7a54dd1a892ff34559279ca1341f177a2909cb97a2593ffc92399507867d29cb86615b83a4061d31", + "blinding": "3b7e8f330b99205fd5300cf18a094d3298df60cf5b4945107146d6407a2d2400", + "proof_pk_com": "97da69b45d5cd751fab9bda5271cd38221400531d0e16d3b2565f942bc81f05a", + "proof_r": "c040a9081484b38594a1c469c506267cc1fa45efcd9d8baeff621ad9bf3df72a", + "proof_ok": "b20a6c4458a41a16e6894f42fb3958c11864c8b75245f6bd031517ee9662111b", + "proof_s": "6187858dc1653c6f55bca63f16ef56291ed853a182bcfbdade22fa6c6603f707", + "proof_sb": "9d3ee6ee1936e1b8ea6f9707c7792bc29f1fa541850f42978043d66b465f7f0b", + "ring_pks": "5dd27aea106952af837b5e3efcba83c6ebc9f9332304c45ef06594dbe6d6cd96c6f8e8c67d3cd3ddb54d7a5e657d19e96973f210e52b37ebb0800d000e63df85cf74fb13dc0ef9c7247a082035a3eba8d0730fb5c330bf91df02ad5b3dd2a73730f478ac3c74e78188193194fed53fb95ab9a5e3bb0b5177540d0e3668bfb4d6d747f1786bffe582d1fb7a8b5bd10aa29326280ef50e10883abf2cc712abd2d2fe68b3691157bb595d051f492a48da6650037b59a4f730a1ce968277a8d58f2552cddf01cc76b1c94e08cd65c1d7f2a6ff97da2cd920a4624d5b0e7795956e46602e39020dfb0a63469baec9e3448d91d36bd78f08c709d888884b7d500bf0c6", + "ring_pks_com": "98492036bd3d11dea7344510d68df56300f7f0d251584bc8341a78917ae289ad142091378b15b9bd4f292984cc5567ac93e02c4d0af2f2a37b275522e8ed8735196842eac396626b6bec6e00806f9e263c6aa329739338b2d8b0ce968def5a36a40eb7cbebb436f8fdffc2a4cfd038c257bdff3f2dc17b5c6bf0fc5bdbe4a521d56d64023e42d531c33e214111d637dd", + "ring_proof": "a2f14eb30e1ec5aaec6817de752babb9919391c6c563bd99d0eebf64628f872cae06e37ed4e3876dc786747cb2d7bb279107bd20fe94a01157764aab5f300d7e2fcba2178cb80851890a656d89550d0bebf60cca8c23575011d2f37cdc06dcdda9d0472407cc53e2131622e571e352143e0fd238b2108d767e7eebbaaec8d878703782e52fcc008a59fb92ed065fbb8684aa8efbb8605206dac17ee3072bfe3b800fbd9811baa3a9da5b779ef60a0d13535e0e1db78b27b54be1702bf633c35e7412767baa1bb622006f5aec67050f27c8fdbaaf4db4bb89dd23412ef669b7403f423897a3598f2c4d156ecc533bc8f4db480cabd06f2c356bb947cc6aff475002fb2a3a41d1581fe7676e31107f0b02c83daf297e487d171fe3431e1e797f5f8ff946672d69deadcf3d2eaf30a0d9b81fb2e4d369535f3e46bba59fed84390b481dd0a59876bbc7d51b39326d870837453748589e4cd64adbbe5dca00c8f2557d2c61fffad44db5df9a98255ff370f12c535d865fc282cb32a4d5b3e371dd216647fcdd1f69bf3a454a61d0db97495176e597ed02ba12b4a605e5ee1779f25e881d8554dc369bb5033773d1fed0fd362b0595b9488a2fbbd483c094ddaa6745fa1f75aff3f519fe967163cacaace1722d8cd1ece16bf33d88c6fae4be8a23e304786d7c5aff8c2def213b2aa097b516849b3b01b32d7e61247e7e0d03dcecc87d74d36bacdd0b96b0b03e5bd52f495a1fda3d24487883bbc610fdce3a5b9d22ad10b3740d1277bda453b760af24864074f528f06874f5bc05bccc243633de3b21b4ac5d93d609b21a0a6f5b4da8d8bb" + }, + { + "comment": "jubjub_sha-512_tai_ring - vector-2", + "sk": "ca48b2a3649f62e7c240e22851cb514b57ca1dfad8de5e6d79f06329357bd008", + "pk": "308996eb46e494d162f29bd6abacf14685bd204eeaeefd78d226da240dab9e3c", + "alpha": "0a", + "salt": "", + "ad": "", + "h": "0602a39a45b8b51b28f4489367e3215d8886e650a7dcd8a21e7365a2bfa1994e", + "gamma": "703fa7dce4f7acd51a92b5e845af77babee0c9cf9a680901c621ff98b0637821", + "beta": "282c8073be0faba5ec8d75b7c69790d4032be1af17b00d32d44b1d23a5b0d4935333e66481a212c42a0c6165c7ba568c6203a6b7e687bf513559b998af718fa0", + "blinding": "31d20c401eda5170115ec3a267d5992051f90cfec778b5d1adb9d2dc840ee80b", + "proof_pk_com": "d7cf9ddc584e24d147148fc39e30fda1c6dd11a85d75a9754fa9cb278164f709", + "proof_r": "669af5bc935a578ed76f6ab83a3ab13a7ed1a23c82cd0f9851c140da5c9bbc0d", + "proof_ok": "e0ac0b52a36d31ae196cc9b446f14128cd3070e933d64035547a517fdf406d62", + "proof_s": "a931e47c8d599ac10ff0fe5f0d5f5648ca413e322d9c997ad452fc1c8b2c3803", + "proof_sb": "a95dc0c0f41cf435b92930833b52e7d8c5ba4fe7ceacd59b071eb9a8963c040b", + "ring_pks": "5dd27aea106952af837b5e3efcba83c6ebc9f9332304c45ef06594dbe6d6cd96c6f8e8c67d3cd3ddb54d7a5e657d19e96973f210e52b37ebb0800d000e63df85cf74fb13dc0ef9c7247a082035a3eba8d0730fb5c330bf91df02ad5b3dd2a737308996eb46e494d162f29bd6abacf14685bd204eeaeefd78d226da240dab9e3cd747f1786bffe582d1fb7a8b5bd10aa29326280ef50e10883abf2cc712abd2d2fe68b3691157bb595d051f492a48da6650037b59a4f730a1ce968277a8d58f2552cddf01cc76b1c94e08cd65c1d7f2a6ff97da2cd920a4624d5b0e7795956e46602e39020dfb0a63469baec9e3448d91d36bd78f08c709d888884b7d500bf0c6", + "ring_pks_com": "9012c8628eea71ff74781b097260015e46cbe8f7a2a03023cb0b2fd68d46eefd41e62a17ea23e847932b037413592e78a1fa9da34cfd20b2fe97b6434b850c64214b36a21f4a0eb9b3056cf0f57759a339a560f007d9e0c77b3f276879a2b4e6a40eb7cbebb436f8fdffc2a4cfd038c257bdff3f2dc17b5c6bf0fc5bdbe4a521d56d64023e42d531c33e214111d637dd", + "ring_proof": "95b8c8684127f11b394fd850af0e20bf16f6b1740c07bf64c7564777856b95bb096a06dc6f3bb9bc08104624a193fb859107bd20fe94a01157764aab5f300d7e2fcba2178cb80851890a656d89550d0bebf60cca8c23575011d2f37cdc06dcddb33651c6b391ac1260b35f1276aab89766f32a48125cf2b33124741542b255ab90c224202d0f24b5cc68cffff6138a4a8c51ece57bb8eebfe10361ce7a8193041d97b99d7a167678a562433e7c3e43e88504dd103520866438afa468a8c273d3ac1470ce116f74e067ecc5c5a3ef275d1adb3af99a9ba15bdad1cca1c162b85282978594d5a5db55ea535ee4506eb696f7f785d3e2fa46e1f2763a8674eccd1757a16273161601ba4edd49ff6a8cf6e793f6bc23ea172c95727bb7fa4bf80163c4153dea8374c088ab977c965483f16119a713568cc908a1dad0cea03d8f1003f17d0bef73a77aedfa009b124e3dc8cf8e8f0898d717308d844065627553e449ee866bc03a00dde9f2fcc4da5ddfa82378bb0e7a268e8d0651d99e4305559f159820171c7a1ee6f5e28f9a5c56dca96240038410f83160ef3615fcfa0a207c658e4c08fb88f972303c069db6e407531ce3692bc2e9fc40cdf9a2810066943c626537b70d05f02fcf0b9513759fa79827d7f1d97ef7b55af2f348ee8714549e0508815492186e75be26290ccd096bbb57ae549ccf539622044ecce7adb3dc49e37f6c611fffd4210fe4031f63b5a88d3435795ba59802a7d540fc512aa7788fe6a091749b480dd73c7c29ed6ee5fb05fd5fe92fd5188f5e41c0de422b6287574378006b94cb6870303616128c0d5d2170" + }, + { + "comment": "jubjub_sha-512_tai_ring - vector-3", + "sk": "d0286e69edde875b7d5587068d03ffda50d2af165574c7b29136962b81796603", + "pk": "b818097374bdcec279c69356de3398a240f2542bfbe07b339d56d0b452c16cc6", + "alpha": "", + "salt": "", + "ad": "0b8c", + "h": "deb13729d88f7003e094dcef981aa8e62ce35d7dff20143c1ece67335dd23257", + "gamma": "28e78b819a6449ebeaa94866dbb93290177bb4c58fe9ac9dc5a82a8c871afd1a", + "beta": "d882d5ca4549f669da6c325957914bb19f0b7ee9eda29a8012cc2fde2b0e2f21ad321f6e6c2096582cae71af42f2ca345fb2dc3bf55cdabda35b9d937f54f89e", + "blinding": "76f0df1c062d482c842d43b092af5544d7108559683bbe14a3265f16e84e6006", + "proof_pk_com": "7cbb7a527393d031377a0457dd4a605c491781261dd1f17273f918c16299535c", + "proof_r": "c6038e97ebe9b0d5339d4ce0a734a1c05e7725da800d218d9389bb8028e2ec02", + "proof_ok": "c218481a881a21bd0ad10271ecf77c5ac7ce3731ead92bef8b4d28f2dff14f48", + "proof_s": "bad33d0fe96476d13cfcfb329263275c8592517fde6bea0475c261eb9ccc9805", + "proof_sb": "8f426c0be2db2f58a9488d7690a49f00d2de5cd374595d5f45dcfc7568a6bf04", + "ring_pks": "5dd27aea106952af837b5e3efcba83c6ebc9f9332304c45ef06594dbe6d6cd96c6f8e8c67d3cd3ddb54d7a5e657d19e96973f210e52b37ebb0800d000e63df85cf74fb13dc0ef9c7247a082035a3eba8d0730fb5c330bf91df02ad5b3dd2a737b818097374bdcec279c69356de3398a240f2542bfbe07b339d56d0b452c16cc6d747f1786bffe582d1fb7a8b5bd10aa29326280ef50e10883abf2cc712abd2d2fe68b3691157bb595d051f492a48da6650037b59a4f730a1ce968277a8d58f2552cddf01cc76b1c94e08cd65c1d7f2a6ff97da2cd920a4624d5b0e7795956e46602e39020dfb0a63469baec9e3448d91d36bd78f08c709d888884b7d500bf0c6", + "ring_pks_com": "9729760ad0ba42ccf351c33aabba1fe9109554245d77ffb6e880ca2eefb2b2d8f4de4b23195788302d435a6581239537b3c2e05a0da366afd983ed40acb6ddccfe171c9af105d034c573b18857713d325575450f8acd4bc1a7bd896bde04d9b4a40eb7cbebb436f8fdffc2a4cfd038c257bdff3f2dc17b5c6bf0fc5bdbe4a521d56d64023e42d531c33e214111d637dd", + "ring_proof": "825c03f8c653c91cf286453fd32d065cce0844779ea7db0c89f4ff95a47eb1aa3fe150dbf3518d802abeb188500bdf5b9107bd20fe94a01157764aab5f300d7e2fcba2178cb80851890a656d89550d0bebf60cca8c23575011d2f37cdc06dcdd93b0d0a4d408b4e0adf82d943aad709ce9b7bdfb6d2b911e2987335850140bdcf928d68ca52fda8db3d2ffe0b52eba90b01bfbc69084b09e80260420db36379f4720c192c2955969bdd11f60cb8bafbb2513c171633493d58635d121f744e2196c34245457c8cd1622118268d877851c504fc9461d44a0abbd99baaffa52a8367073653144b90519bd3f0afa07204e1368757cd315b87e26dbc636edeaa6a50276ec9862f4dd033163c3951078ff3f4ac1943c1b36fc08701f5db958456f4216c7b562bef56295d262c0e14c0df2a7f38a37f63729d9df284045fa259e09d328265bd9a86f0d7c06830b72c1c02c5385aeab69c0a29ad57c7d4213d938f4716233326e8482c25ddc57ef4b045b76e8e274637d5914050905816bb9ba32cd313e6d534250fc10304facbe7f888e95dfdc3abe3b4790a625175d26ee1eaa03fc32964221d33ac0e0845af33212a4c8c1576f775fcb9988a052e228182dc74c3ed6ed1cad2a9e6036019c2f6aedb80853e170c16cc504a085fce4e4f433a2c1ed5ad00b847c5dc0eadd0c76906d8a25fe5fb15033edf7b5b7dbbcfdfef40c6eeb342ce605e6475436d47a88026e57d6289b0af0c8f602b39dd95191a2d13a550643953133c41630e84c337be8ecf4a0648da95702cce8dcd40fe9b9f10d5b4dfdada6fd48879116a61b2b4a0a2248629722" + }, + { + "comment": "jubjub_sha-512_tai_ring - vector-4", + "sk": "0e141badfe43931575e134862426bc47b86440d2b2e643862c1250a1464a2203", + "pk": "205db8f7d735e7df59410f974e39d0c6797119034b090f749f0306ce7c27fb40", + "alpha": "73616d706c65", + "salt": "", + "ad": "", + "h": "d9151cdd64a5d16bf3149694f13dfcbc7df5b3657f70e3aa8daa2f67b0e75ccf", + "gamma": "5014e883d3c7994ecac93af9e6a95aeca4d5fc3be5e77fac8d8af1f313b0b12a", + "beta": "6035d22c8348614fb393c2910e81412711ff1defcfd1939e5744cbec10600489979bbe25a47f1738cb4937d9a3a16914cef65563a57b9142638a151d4ea459ff", + "blinding": "cb35e984e03253ea63bdcf1ce52c54d60c85a9e0e6d6b771fae5148d5b0e4302", + "proof_pk_com": "bcae3d49b89cf385d2fc6edb899194c2f9938d6b970f2a40a6efe426f5724784", + "proof_r": "8a5e6ce55f659c43848414270e558423b5a42ca8b8d67c9b5f269997c407461f", + "proof_ok": "6e2ce4a6f4cf3b924f65eb71c3719f709c3d87f0a1ca6e295fe1078a792b00b9", + "proof_s": "e4ef3397d02e9b9b10292e81e0d0e17e53437443d2a03fca0ef3ff8225883f03", + "proof_sb": "e66e8da6a4f4ba895d56e8e0b5fc006e361c843423e987eb7ebaf4bbee20b30b", + "ring_pks": "5dd27aea106952af837b5e3efcba83c6ebc9f9332304c45ef06594dbe6d6cd96c6f8e8c67d3cd3ddb54d7a5e657d19e96973f210e52b37ebb0800d000e63df85cf74fb13dc0ef9c7247a082035a3eba8d0730fb5c330bf91df02ad5b3dd2a737205db8f7d735e7df59410f974e39d0c6797119034b090f749f0306ce7c27fb40d747f1786bffe582d1fb7a8b5bd10aa29326280ef50e10883abf2cc712abd2d2fe68b3691157bb595d051f492a48da6650037b59a4f730a1ce968277a8d58f2552cddf01cc76b1c94e08cd65c1d7f2a6ff97da2cd920a4624d5b0e7795956e46602e39020dfb0a63469baec9e3448d91d36bd78f08c709d888884b7d500bf0c6", + "ring_pks_com": "ac8744e54afba48283fab5067f77314beeb2559b4cf7710433635a328a9fc4a73d77641ecf8cb4d7ed4f1222c6156f9e9537c7fe35354a91781d079fb678f0b84ee1f3373b5b0a2670c25a832b0ea775a0eed0845937f3fc0ddc45bd8be423eaa40eb7cbebb436f8fdffc2a4cfd038c257bdff3f2dc17b5c6bf0fc5bdbe4a521d56d64023e42d531c33e214111d637dd", + "ring_proof": "97e850700905f7038977eaf083015fb38bb3a3e751d43f26819af2b16a15d4409462c2c9985f97c7043b6cc3a7c753f99107bd20fe94a01157764aab5f300d7e2fcba2178cb80851890a656d89550d0bebf60cca8c23575011d2f37cdc06dcdda851a52e455fcf4a0725c4df1f0d57c077e63c4abd36e2b47eda8f522b646a4a38ba1df402c9cc16728cc885985ca5a780ea1510972c18a130209cd8046436d089145b8a6c664a1f698513b1f9e60ce5389e674bee2b26a45d283a646ef55bcbd9712994edd05602f49b98c5d3a1fd1b35ef941f0d9cfac204a7b4755ec4df2b84b94e79c8b81bd05c59d4390b93d55a64b5223049ae1aa614d7adbb374d9e6ee0412fba65c516ac1c26234c33119ac684ddf132153bee195e854c01b7d9dc548712a79db1a6a475946941ef28ef4af798b4117ca078dbe07a90bb939420e62ddfe3c7ac60b81685e45ba414b0db8fac2231ebdb4c8a2b51bb5ec6cb7e887e1567aa28ee75313d6de0c7bd290668c62d0f824b863e144169e980f0d3d4f07b1a1cc2c01abae6132e5970b5d0bc548cc0df7a84ac0ac32e732b7c8d2a9b744335a075d1ed3b33a9d0c939cb5070557606a8a1023ef7ab8101082a7947fef551f5f4ed1d6938bfb733582f03871d4e6e067bcde1fe41a5021664c1836c9e37986199ed5aa8b108d6a0fc21a934cf346262a3faa36571c8efcf6b7aeb00887b6827550799a8eacb2368df9c759b91bb5238cc86b2e3b942ad938d9eb48454298e2197e160b47cc213c82230643dbdd990639a83ef8689505d39e5c73986248e29006dfafe915ac8d000356ec39c6b2dcabf" + }, + { + "comment": "jubjub_sha-512_tai_ring - vector-5", + "sk": "c5b89638ae4eb16237a1d6f39d48687e9bf12733eb74c6b21edf871ca576fa02", + "pk": "8146083de63a51ca4c8c28126e5bed6439e3a2ad6c23307b96c030d3dabaffd6", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "b6014d3da5289c81014b6b5fb077183f4fc67370d589b04703f331d497c21b5a", + "beta": "bb1f90f574cac7deaac1a52fab802e4305cceababa4d874fcf1e0c122f13ee966c05b375f7d48df5ae7d286cb470f26a0f10ff19abe4f3d90d568c27621b4f0b", + "blinding": "4589927d0d90f1e3e801a1ffc6d5c576b18e890e9c72141d3f0203f2768a8909", + "proof_pk_com": "e4b8106ea14e5fdb290239787013f1476d1215125dfd81fc0e509f067aa9049a", + "proof_r": "b3f03fe8cd7ff11840cde63b36d99fd3ecb83089234ec3eb3ff877a73c9f1480", + "proof_ok": "d2a9679ab878d18dce9360b8f021ed10110d5962e3dacdd17a9178c36c233ed6", + "proof_s": "f7f68fb226b905e76c4b05d962afa176e3f734c445d47ead6fdfc29019235106", + "proof_sb": "beb64e4b98b7c08cf2935eeacbf255f42e5597050fc99d4df96c1f104fbb700e", + "ring_pks": "5dd27aea106952af837b5e3efcba83c6ebc9f9332304c45ef06594dbe6d6cd96c6f8e8c67d3cd3ddb54d7a5e657d19e96973f210e52b37ebb0800d000e63df85cf74fb13dc0ef9c7247a082035a3eba8d0730fb5c330bf91df02ad5b3dd2a7378146083de63a51ca4c8c28126e5bed6439e3a2ad6c23307b96c030d3dabaffd6d747f1786bffe582d1fb7a8b5bd10aa29326280ef50e10883abf2cc712abd2d2fe68b3691157bb595d051f492a48da6650037b59a4f730a1ce968277a8d58f2552cddf01cc76b1c94e08cd65c1d7f2a6ff97da2cd920a4624d5b0e7795956e46602e39020dfb0a63469baec9e3448d91d36bd78f08c709d888884b7d500bf0c6", + "ring_pks_com": "946e9fbece8329a49058449d67339a6fd09091c5ea3a719018573670fe8bdcd8023af24f69e2f2cde9e05fb943962849a167d65efaef7106f493b64f67f0a9e6071372ca56d49df0a84f54d4f51499e742563af88b4090f2eb03eb618296f0b2a40eb7cbebb436f8fdffc2a4cfd038c257bdff3f2dc17b5c6bf0fc5bdbe4a521d56d64023e42d531c33e214111d637dd", + "ring_proof": "a560c8eeb46660b75acb1f88822de69d7c8e4c7a0f47d08c786da6523baf9897718908f85f142759ad6c03844ba562b29107bd20fe94a01157764aab5f300d7e2fcba2178cb80851890a656d89550d0bebf60cca8c23575011d2f37cdc06dcdd8e7711e09688e13988791b86afd812dd814f9ac0f2b125809f813aef68c4dac2048c9be90b3121ecb605f609a5f405f092317e99c1f8aa443466530e79d510a4588b47280bfaa55ee8053903404f77c085a1a16f14f7dcd3cb7945d14f2d129fa573127e4d69454518d381d579447124d3945cd65d20abc013b8cf04e18dcd17757d1b729ba0f53533ff0120e0e01bc783a08698cf3b27975814b131d3bbeb30f2f7641cfc698fd32d24703c0d68fa5a83bfd6d14e67a155ef711c65a4100f544b77ff8196579caa66c55d070bf6c7c998a175bd07d18c36fd232de441fea103b1f7bb306569de96bfee52e741693efcbb3b3e565dd7411deb5a6019c3db4b6e7856d02695e615089edf25a7062ea75b2386b06352659ac47d3033b8b29f341cd0f67013ac0791a05ab29f3e3f3fae0ace77fcc83299086d17c01e91adc94561a0e7e4bf1ec080ce3861b4e0b26605242a9c2437e3aab71249114b4e9e342e2fcf902383855721519b6752644294659071c2419ded216f817710cbb6ddbbc4c3271756342d91a08f769f4672d3e597408e12ad788bfdc579249301222837696edfeef1b681bcadd6843ebd89b7b3150d1d05f2f15c846133ccf8d242deeb6791a59a9b392a33984a905e19181e2791c41d586c0ec900d4d92225d7020933181a02dd4962eec8bcb10ab6af5f2de72643" + }, + { + "comment": "jubjub_sha-512_tai_ring - vector-6", + "sk": "c5b89638ae4eb16237a1d6f39d48687e9bf12733eb74c6b21edf871ca576fa02", + "pk": "8146083de63a51ca4c8c28126e5bed6439e3a2ad6c23307b96c030d3dabaffd6", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "1f42", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "b6014d3da5289c81014b6b5fb077183f4fc67370d589b04703f331d497c21b5a", + "beta": "bb1f90f574cac7deaac1a52fab802e4305cceababa4d874fcf1e0c122f13ee966c05b375f7d48df5ae7d286cb470f26a0f10ff19abe4f3d90d568c27621b4f0b", + "blinding": "0b16ae8001479a5887fd3710f388b6b35be9b04eb4d62ba5717d0452a06f0f06", + "proof_pk_com": "296d6eeceaaabaaba6849fd46fd7abdf33a90b8bf79b3199f851b795db3089df", + "proof_r": "93a39efa2a45eb8a6d104f50155cb7e049249395a8d252726b5c76d4fdf0564b", + "proof_ok": "d2a9679ab878d18dce9360b8f021ed10110d5962e3dacdd17a9178c36c233ed6", + "proof_s": "97ab45760f9a3fb33d4136ee024e324e853809497083f72251d0125eaee96d08", + "proof_sb": "1477e1966975343b0b75bec7b4bf208230df702a5de23515ee2df63f2d9bc806", + "ring_pks": "5dd27aea106952af837b5e3efcba83c6ebc9f9332304c45ef06594dbe6d6cd96c6f8e8c67d3cd3ddb54d7a5e657d19e96973f210e52b37ebb0800d000e63df85cf74fb13dc0ef9c7247a082035a3eba8d0730fb5c330bf91df02ad5b3dd2a7378146083de63a51ca4c8c28126e5bed6439e3a2ad6c23307b96c030d3dabaffd6d747f1786bffe582d1fb7a8b5bd10aa29326280ef50e10883abf2cc712abd2d2fe68b3691157bb595d051f492a48da6650037b59a4f730a1ce968277a8d58f2552cddf01cc76b1c94e08cd65c1d7f2a6ff97da2cd920a4624d5b0e7795956e46602e39020dfb0a63469baec9e3448d91d36bd78f08c709d888884b7d500bf0c6", + "ring_pks_com": "946e9fbece8329a49058449d67339a6fd09091c5ea3a719018573670fe8bdcd8023af24f69e2f2cde9e05fb943962849a167d65efaef7106f493b64f67f0a9e6071372ca56d49df0a84f54d4f51499e742563af88b4090f2eb03eb618296f0b2a40eb7cbebb436f8fdffc2a4cfd038c257bdff3f2dc17b5c6bf0fc5bdbe4a521d56d64023e42d531c33e214111d637dd", + "ring_proof": "ae5becc7945445445a1f3147bdc2ec760b4378c3f6f55f0d102c8efbdc81777acdf566902fe4af046796bf5ae8d595e29107bd20fe94a01157764aab5f300d7e2fcba2178cb80851890a656d89550d0bebf60cca8c23575011d2f37cdc06dcdd8daafbe2174ddfdaa3a1ab868bceb9568f12f54451b2f8aff0629b56ec5fa763994aef49e27ba310a61589b4f2e8a7fb8a28f07ef6c28f502457091b438837553c09c6bc289ac1f41decfc2a867bef0d6f80ee83481f8e4ad1dffbc1f87f2e3ac0597b0dcb5aa8f6384d5e9638aff70fce2e38a3700fa73f1ccd384608ffa60722bbce927aa5aaa42aef2c955a28dc33cc2d6e1a740c09232c510208f6e41e31f74cb8d0cbf807ae2ef49aeb27bb14aaafed038bc2b5ce56b2a7b862baf6932f9c687d7302457c642b73bf12416c1db611ca1395930719afaa4abfcfcf600020f35fe841b9c3b4dd62d74d0407a9104cce11a2b3ae408e10b172dc5a868ddf45b0c4521069c2e2194ca64a4560401b4f7e5e68e52dff91c60f0ffb271cff9d2f4cb88d911b19f80352ef9d018fb1b5a6e8495007ed9209707c17cdc5d1cb104db82380bdb5310facf077f1eae503cf0530c5ee1212b7951ecb1adc693b97d97a6e9d109862cc3307c6eba2645015f044801b36c2090c529a03b039244ab00af6e083bf28e8c13a2d340eb1ce4390f862a22909253b60d547404888f78ef9323d784941a8142ce390d7b6b2b0cf9612132ced02bffae529ac9445d737daec934382b2cec1b5838a1139e9de2b04a718571ea651ccdbd1e1487a7a8567fa303c8f16b00ac1d0829935a866967f8fafba48" + }, + { + "comment": "jubjub_sha-512_tai_ring - vector-7", + "sk": "d742adcfce2a341263158af472d390d680eef01422290420cc61107497597005", + "pk": "a1014ce47c0acb248907b95d8cac8427d56ec88f6b88e6efa85e9953a2ef2e6b", + "alpha": "42616e646572736e6174636820766563746f72", + "salt": "", + "ad": "1f42", + "h": "4faa81c497e007f695dceca4d92abddf2f9d79aa298b5fad477079907fabe033", + "gamma": "ef00ace4b541a74d06b05d03aa8447cb66a3a11aea47f26a0197ab7ff0498bb8", + "beta": "9b5d9daf0ae53d37fa2d1458005194e14c20520ede7fb12cb76b4b27743104bcbc71e6815708bf6136360c667515f5707ad68037b6efd32e59e17df962c8d10a", + "blinding": "b25bb1af5615454485805239c496939748815cfa6a340095e771016018a7db02", + "proof_pk_com": "26b7098b64f6ad2ed1b22f3491380f79927a2bb720df5e938291f00e52cecd9c", + "proof_r": "dc9aeebbecce230138055bfeda361ec1ccac090c8761ed2b59cdde183ce80066", + "proof_ok": "34d4ec9b618684a9b2a6f3ad50e6e5f1df5b64c79dff52ad3d1a26ee90f91c55", + "proof_s": "6bcf6a736e7e567c6b789476b99f48e3d45d84e69f7bc0d686c8e00086760007", + "proof_sb": "8b42b21a12f024b00e0bc81f7280816eee8377f412bf401ed2b49863a6c78505", + "ring_pks": "5dd27aea106952af837b5e3efcba83c6ebc9f9332304c45ef06594dbe6d6cd96c6f8e8c67d3cd3ddb54d7a5e657d19e96973f210e52b37ebb0800d000e63df85cf74fb13dc0ef9c7247a082035a3eba8d0730fb5c330bf91df02ad5b3dd2a737a1014ce47c0acb248907b95d8cac8427d56ec88f6b88e6efa85e9953a2ef2e6bd747f1786bffe582d1fb7a8b5bd10aa29326280ef50e10883abf2cc712abd2d2fe68b3691157bb595d051f492a48da6650037b59a4f730a1ce968277a8d58f2552cddf01cc76b1c94e08cd65c1d7f2a6ff97da2cd920a4624d5b0e7795956e46602e39020dfb0a63469baec9e3448d91d36bd78f08c709d888884b7d500bf0c6", + "ring_pks_com": "885350e8773e6c326f9e20a14836dd4e0ef54a64f5adb1bee06ce0549a3717d9cf7383635305f1098aa8fe3a142f2876b1dcb4fe27ac10a85491b9d16ba8cd3c1d20e5a9e190ae21fb30f4971ec26036f2916119912a2682c8ad7fcc70bfdae4a40eb7cbebb436f8fdffc2a4cfd038c257bdff3f2dc17b5c6bf0fc5bdbe4a521d56d64023e42d531c33e214111d637dd", + "ring_proof": "97e21b45676ec14a22618ad3712b293a8d23e362e7924a3a2d3933ad8e8a1bc214d8890448cb7509d1bc89ecfc455b7c9107bd20fe94a01157764aab5f300d7e2fcba2178cb80851890a656d89550d0bebf60cca8c23575011d2f37cdc06dcdd95834a8e5a03f4a523b4ff47af73912489e60fc5f304f7af0f2fb0eab5ffe885c051d6a46913a4986cb4c03b31cbb43d96f15e780585f1b2769756a56c616961dc2860b4bfb1a98245599e3f6abb8ba878775646ad8f218859ab3a08c8fe4c4525ec078bcaf3e2961aa695d7688f2daac827e5584aa321713cf820b7ff237f7151b17683da53213c10f8bab6c35924d4602788a408299fad7b10944bb6c4a6185aa573c5ef5d3f67aa21b132ec56a17fcae269f7ada22fceb0db3f1a9b53005e22f1a6f7cbb8f379cdd3342652a0b49a86bb32e43425af5d5743be58a5df3e66f677dac9b082adc3eb45fcf6c704c811d0ab944e5833fbd5863fcb4809c1a6444950fb5c620c3bfd32faa834f4b60eaf59ba7073e2d7425f08ea90a408270073bae88e5e7b9843d365cd8110ee66e2613462d7f94ae2436ed1b706d3f4107429a13b6ae4877f5b0cfb281a0b2649d33f39da26bf5a93eb7a8f16b8e26e9e7dd1cc1df554d2bea0150a52c72f395f1449624fdecff76d355452fe8f93040c930493cf8b7ee1f771a7d802023d2c293a1e9245739938aa18a44f27a5d62f355b4cfa7eae758b4b424a1980936e93b851b7116f9cee55a123a63a84ece834e5335e9606055c547ac4ee2617d19cd938b8deed037ffb1b38d38eb5134f90e90009928d9a187b8c635f2cd0c54ee7a8c5f6db" + } +] \ No newline at end of file diff --git a/src/suites/baby_jubjub.rs b/src/suites/baby_jubjub.rs index 1d9bf0b..7376a0d 100644 --- a/src/suites/baby_jubjub.rs +++ b/src/suites/baby_jubjub.rs @@ -41,8 +41,7 @@ //! [RFC6234](https://www.rfc-editor.org/rfc/rfc6234), with hLen = 64. //! //! * The `ECVRF_encode_to_curve` function uses try and increment. -//! with `h2c_suite_ID_string` = `"BabyJubJub:SHA-512_TAI_RO_"` -//! and domain separation tag `DST = "ECVRF_" || h2c_suite_ID_string || suite_string`. +//! as defined by RFC 9381 section 5.4.1.1. use crate::{pedersen::PedersenSuite, *}; use ark_ff::MontFp; diff --git a/src/suites/jubjub.rs b/src/suites/jubjub.rs new file mode 100644 index 0000000..21d6707 --- /dev/null +++ b/src/suites/jubjub.rs @@ -0,0 +1,128 @@ +//! `ECVRF JubJub SHA-512 Try and Increment H2C` suite. +//! +//! Configuration: +//! +//! * `suite_string` = b"JubJub_SHA-512_TAI". +//! +//! - The EC group is the prime subgroup of the JubJub elliptic curve +//! as defined by . +//! For this group, `fLen` = `qLen` = $32$ and `cofactor` = $8$. +//! +//! - The prime subgroup generator G is defined as follows: +//! - G.x = 8076246640662884909881801758704306714034609987455869804520522091855516602923 +//! - G.y = 13262374693698910701929044844600465831413122818447359594527400194675274060458 +//! +//! * `cLen` = 32. +//! +//! * The key pair generation primitive is `PK = sk * G`, with x the secret +//! key scalar and `G` the group generator. In this ciphersuite, the secret +//! scalar x is equal to the secret key scalar sk. +//! +//! * The ECVRF_nonce_generation function is as specified in Section 5.4.2.2 +//! of RFC-9381. +//! +//! * The int_to_string function encodes into the 32 bytes little endian +//! representation. +//! +//! * The string_to_int function decodes from the 32 bytes little endian +//! representation. +//! +//! * The point_to_string function converts a point in to an octet +//! string using compressed form. The y coordinate is encoded using +//! int_to_string function and the most significant bit of the last +//! octet is used to keep track of the x's sign. This implies that +//! the point is encoded on 32 bytes. +//! +//! * The string_to_point function tries to decompress the point encoded +//! according to `point_to_string` procedure. This function MUST outputs +//! "INVALID" if the octet string does not decode to a point on G. +//! +//! * The hash function Hash is SHA-512 as specified in +//! [RFC6234](https://www.rfc-editor.org/rfc/rfc6234), with hLen = 64. +//! +//! * The `ECVRF_encode_to_curve` function uses try and increment. +//! as defined by RFC 9381 section 5.4.1.1. + +use crate::{pedersen::PedersenSuite, *}; +use ark_ff::MontFp; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +pub struct JubJubSha512Ell2; + +type ThisSuite = JubJubSha512Ell2; + +suite_types!(ThisSuite); + +impl Suite for ThisSuite { + const SUITE_ID: &'static [u8] = b"JubJub_SHA-512_TAI"; + const CHALLENGE_LEN: usize = 32; + + type Affine = ark_ed_on_bls12_381::EdwardsAffine; + type Hasher = sha2::Sha512; + type Codec = codec::ArkworksCodec; +} + +impl PedersenSuite for ThisSuite { + const BLINDING_BASE: AffinePoint = { + const X: BaseField = MontFp!( + "42257337814662035284373945156525735092765968053982822992704750832078779438788" + ); + const Y: BaseField = MontFp!( + "47476395315228831116309413527962830333178159651930104661512857647213254194102" + ); + AffinePoint::new_unchecked(X, Y) + }; +} + +#[cfg(feature = "ring")] +impl crate::ring::RingSuite for ThisSuite { + type Pairing = ark_bls12_381::Bls12_381; + + const ACCUMULATOR_BASE: AffinePoint = { + const X: BaseField = MontFp!( + "46194868970636137215665291958977045607402791989805288388161474094918623165215" + ); + const Y: BaseField = MontFp!( + "25076105280846228970329523770418275693120076470674973696258471026983323652479" + ); + AffinePoint::new_unchecked(X, Y) + }; + + const PADDING: AffinePoint = { + const X: BaseField = MontFp!( + "29457445426702359580423699774559186616331674592397285916231493776142609373871" + ); + const Y: BaseField = MontFp!( + "35786798678243451862860591331740861701769099764458806489168460821196579577970" + ); + AffinePoint::new_unchecked(X, Y) + }; +} + +#[cfg(feature = "ring")] +ring_suite_types!(ThisSuite); + +#[cfg(test)] +pub(crate) mod tests { + use super::*; + + impl crate::testing::SuiteExt for ThisSuite {} + + ietf_suite_tests!(ThisSuite); + + pedersen_suite_tests!(ThisSuite); + + #[cfg(feature = "ring")] + ring_suite_tests!(ThisSuite); + + #[cfg(feature = "ring")] + impl crate::ring::testing::RingSuiteExt for ThisSuite { + const SRS_FILE: &str = crate::testing::BLS12_381_PCS_SRS_FILE; + + fn context() -> &'static RingContext { + use std::sync::OnceLock; + static RING_CTX: OnceLock = OnceLock::new(); + RING_CTX.get_or_init(Self::load_context) + } + } +} diff --git a/src/suites/mod.rs b/src/suites/mod.rs index db31cfe..63e8c21 100644 --- a/src/suites/mod.rs +++ b/src/suites/mod.rs @@ -12,5 +12,8 @@ pub mod bandersnatch; #[cfg(feature = "bandersnatch")] pub mod bandersnatch_sw; +#[cfg(feature = "jubjub")] +pub mod jubjub; + #[cfg(feature = "baby-jubjub")] pub mod baby_jubjub; diff --git a/src/suites/secp256r1.rs b/src/suites/secp256r1.rs index c6e897d..7129fe9 100644 --- a/src/suites/secp256r1.rs +++ b/src/suites/secp256r1.rs @@ -66,10 +66,6 @@ impl Suite for ThisSuite { fn nonce(sk: &ScalarField, pt: Input) -> ScalarField { utils::nonce_rfc_6979::(sk, &pt.0) } - - fn data_to_point(data: &[u8]) -> Option { - utils::hash_to_curve_tai_rfc_9381::(data) - } } impl PedersenSuite for ThisSuite {