This is an automated email from the ASF dual-hosted git repository. sandreoli pushed a commit to branch update-model-no-replay in repository https://gitbox.apache.org/repos/asf/incubator-milagro-MPC.git
commit 2895c827a89c6a9668e5c92111c4b4913df0bebe Author: Samuele Andreoli <[email protected]> AuthorDate: Thu Feb 6 13:30:19 2020 +0000 Add tests for double schnorr proof --- test/smoke/test_d_schnorr_smoke.c | 113 +++++++++++++++++++++++++++++ test/unit/test_d_schnorr_challenge.c | 106 +++++++++++++++++++++++++++ test/unit/test_d_schnorr_commit.c | 116 ++++++++++++++++++++++++++++++ test/unit/test_d_schnorr_prove.c | 125 ++++++++++++++++++++++++++++++++ test/unit/test_d_schnorr_verify.c | 135 +++++++++++++++++++++++++++++++++++ testVectors/schnorr/dchallenge.json | 72 +++++++++++++++++++ testVectors/schnorr/dchallenge.txt | 60 ++++++++++++++++ testVectors/schnorr/dcommit.json | 72 +++++++++++++++++++ testVectors/schnorr/dcommit.txt | 60 ++++++++++++++++ testVectors/schnorr/dprove.json | 102 ++++++++++++++++++++++++++ testVectors/schnorr/dprove.txt | 90 +++++++++++++++++++++++ testVectors/schnorr/dverify.json | 92 ++++++++++++++++++++++++ testVectors/schnorr/dverify.txt | 80 +++++++++++++++++++++ 13 files changed, 1223 insertions(+) diff --git a/test/smoke/test_d_schnorr_smoke.c b/test/smoke/test_d_schnorr_smoke.c new file mode 100644 index 0000000..40cfbf8 --- /dev/null +++ b/test/smoke/test_d_schnorr_smoke.c @@ -0,0 +1,113 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +*/ + +#include "amcl/schnorr.h" + +/* Double Schnorr's proofs smoke test */ + +int main() +{ + int rc; + + BIG_256_56 r; + BIG_256_56 s; + BIG_256_56 l; + BIG_256_56 q; + ECP_SECP256K1 G; + ECP_SECP256K1 ECPR; + + char oct_s[SGS_SECP256K1]; + octet S = {0, sizeof(oct_s), oct_s}; + + char oct_l[SGS_SECP256K1]; + octet L = {0, sizeof(oct_l), oct_l}; + + char oct_r[SFS_SECP256K1 + 1]; + octet R = {0, sizeof(oct_r), oct_r}; + + char v[SFS_SECP256K1+1]; + octet V = {0, sizeof(v), v}; + + char a[SGS_SECP256K1]; + octet A = {0, sizeof(a), a}; + + char b[SGS_SECP256K1]; + octet B = {0, sizeof(b), b}; + + char c[SFS_SECP256K1+1]; + octet C = {0, sizeof(c), c}; + + char e[SGS_SECP256K1]; + octet E = {0, sizeof(e), e}; + + char t[SGS_SECP256K1]; + octet T = {0, sizeof(t), t}; + + char u[SGS_SECP256K1]; + octet U = {0, sizeof(u), u}; + + // Deterministic RNG for testing + char seed[32] = {0}; + csprng RNG; + RAND_seed(&RNG, 32, seed); + + BIG_256_56_rcopy(q, CURVE_Order_SECP256K1); + ECP_SECP256K1_generator(&G); + ECP_SECP256K1_generator(&ECPR); + + // Generate public R + BIG_256_56_randomnum(r, q, &RNG); + ECP_SECP256K1_mul(&ECPR, r); + + ECP_SECP256K1_toOctet(&R, &ECPR, 1); + + // Generate double DLOG + BIG_256_56_randomnum(s, q, &RNG); + BIG_256_56_randomnum(l, q, &RNG); + + ECP_SECP256K1_mul2(&G, &ECPR, l, s); + + BIG_256_56_toBytes(S.val, s); + BIG_256_56_toBytes(L.val, l); + S.len = SGS_SECP256K1; + L.len = SGS_SECP256K1; + + ECP_SECP256K1_toOctet(&V, &G, 1); + + // Run test + rc = SCHNORR_D_commit(&RNG, &R, &A, &B, &C); + if (rc != SCHNORR_OK) + { + printf("FAILURE SCHNORR_D_commit. RC %d\n", rc); + exit(EXIT_FAILURE); + } + + SCHNORR_D_challenge(&R, &V, &C, &E); + SCHNORR_D_prove(&A, &B, &E, &S, &L, &T, &U); + + rc = SCHNORR_D_verify(&R, &V, &C, &E, &T, &U); + if (rc != SCHNORR_OK) + { + printf("FAILURE SCHNORR_D_verify. RC %d\n", rc); + exit(EXIT_FAILURE); + } + + printf("SUCCESS\n"); + exit(EXIT_SUCCESS); +} \ No newline at end of file diff --git a/test/unit/test_d_schnorr_challenge.c b/test/unit/test_d_schnorr_challenge.c new file mode 100644 index 0000000..61d3041 --- /dev/null +++ b/test/unit/test_d_schnorr_challenge.c @@ -0,0 +1,106 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ + +#include <string.h> +#include "test.h" +#include "amcl/schnorr.h" + +/* Double Schnorr's Proof challenge unit test */ + +#define LINE_LEN 256 + +int main(int argc, char **argv) +{ + if (argc != 2) + { + printf("usage: ./test_d_schnorr_challenge [path to test vector file]\n"); + exit(EXIT_FAILURE); + } + + int test_run = 0; + + FILE *fp; + char line[LINE_LEN] = {0}; + + const char *TESTline = "TEST = "; + int testNo = 0; + + char r[SFS_SECP256K1+1]; + octet R = {0, sizeof(r), r}; + const char *Rline = "R = "; + + char v[SFS_SECP256K1+1]; + octet V = {0, sizeof(v), v}; + const char *Vline = "V = "; + + char c[SFS_SECP256K1+1]; + octet C = {0, sizeof(c), c}; + const char *Cline = "C = "; + + char e_golden[SGS_SECP256K1]; + octet E_GOLDEN = {0, sizeof(e_golden), e_golden}; + const char *Eline = "E = "; + + char e[SGS_SECP256K1]; + octet E = {0, sizeof(e), e}; + + // Line terminating a test vector + const char *last_line = Eline; + + /* Test happy path using test vectors */ + fp = fopen(argv[1], "r"); + if (fp == NULL) + { + printf("ERROR opening test vector file\n"); + exit(EXIT_FAILURE); + } + + while (fgets(line, LINE_LEN, fp) != NULL) + { + scan_int(&testNo, line, TESTline); + + // Read inputs + scan_OCTET(fp, &R, line, Rline); + scan_OCTET(fp, &V, line, Vline); + scan_OCTET(fp, &C, line, Cline); + + // Read ground truth + scan_OCTET(fp, &E_GOLDEN, line, Eline); + + if (!strncmp(line, last_line, strlen(last_line))) + { + SCHNORR_D_challenge(&R, &V, &C, &E); + compare_OCT(fp, testNo, "SCHNORR_D_challenge", &E, &E_GOLDEN); + + // Mark that at least one test vector was executed + test_run = 1; + } + } + + fclose(fp); + + if (test_run == 0) + { + printf("ERROR no test vector was executed\n"); + exit(EXIT_FAILURE); + } + + printf("SUCCESS\n"); + exit(EXIT_SUCCESS); +} diff --git a/test/unit/test_d_schnorr_commit.c b/test/unit/test_d_schnorr_commit.c new file mode 100644 index 0000000..bb11500 --- /dev/null +++ b/test/unit/test_d_schnorr_commit.c @@ -0,0 +1,116 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +*/ + +#include <string.h> +#include "test.h" +#include "amcl/schnorr.h" + +/* Double Schnorr's Proof commitment unit test */ + +#define LINE_LEN 256 + +int main(int argc, char **argv) +{ + if (argc != 2) + { + printf("usage: ./test_schnorr_d_commit [path to test vector file]\n"); + exit(EXIT_FAILURE); + } + + int rc; + int test_run = 0; + + char err_msg[128]; + + FILE *fp; + char line[LINE_LEN] = {0}; + + const char *TESTline = "TEST = "; + int testNo = 0; + + char a[SGS_SECP256K1]; + octet A = {0, sizeof(a), a}; + const char *Aline = "A = "; + + char b[SGS_SECP256K1]; + octet B = {0, sizeof(b), b}; + const char *Bline = "B = "; + + char r[SFS_SECP256K1+1]; + octet R = {0, sizeof(r), r}; + const char *Rline = "R = "; + + char c_golden[SFS_SECP256K1+1]; + octet C_GOLDEN = {0, sizeof(c_golden), c_golden}; + const char *Cline = "C = "; + + char c[SFS_SECP256K1+1]; + octet C = {0, sizeof(c), c}; + + // Line terminating a test vector + const char *last_line = Cline; + + fp = fopen(argv[1], "r"); + if (fp == NULL) + { + printf("ERROR opening test vector file\n"); + exit(EXIT_FAILURE); + } + + while (fgets(line, LINE_LEN, fp) != NULL) + { + scan_int(&testNo, line, TESTline); + + // Read input + scan_OCTET(fp, &R, line, Rline); + scan_OCTET(fp, &A, line, Aline); + scan_OCTET(fp, &B, line, Bline); + + // Read ground truth + scan_OCTET(fp, &C_GOLDEN, line, Cline); + + if (!strncmp(line, last_line, strlen(last_line))) + { + rc = SCHNORR_D_commit(NULL, &R, &A, &B, &C); + sprintf(err_msg, "FAILURE SCHNORR_D_commit. rc %d", rc); + assert_tv(fp, testNo, err_msg, rc == SCHNORR_OK); + + compare_OCT(fp, testNo, "SCHNORR_D_commit", &C, &C_GOLDEN); + + // Mark that at least one test vector was executed + test_run = 1; + } + } + + fclose(fp); + + if (test_run == 0) + { + printf("ERROR no test vector was executed\n"); + exit(EXIT_FAILURE); + } + + // Test invalid R + rc = SCHNORR_D_commit(NULL, &A, &A, &B, &C); + sprintf(err_msg, "FAILURE SCHNORR_D_commit invalid R. rc %d", rc); + assert_tv(fp, testNo, err_msg, rc == SCHNORR_INVALID_ECP); + + printf("SUCCESS\n"); + exit(EXIT_SUCCESS); +} diff --git a/test/unit/test_d_schnorr_prove.c b/test/unit/test_d_schnorr_prove.c new file mode 100644 index 0000000..4724ef4 --- /dev/null +++ b/test/unit/test_d_schnorr_prove.c @@ -0,0 +1,125 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ + +#include <string.h> +#include "test.h" +#include "amcl/schnorr.h" + +/* Double Schnorr's Proof prove unit test */ + +#define LINE_LEN 256 + +int main(int argc, char **argv) +{ + if (argc != 2) + { + printf("usage: ./test_shcnorr_d_prove [path to test vector file]\n"); + exit(EXIT_FAILURE); + } + + int test_run = 0; + + FILE *fp; + char line[LINE_LEN] = {0}; + + const char *TESTline = "TEST = "; + int testNo = 0; + + char a[SGS_SECP256K1]; + octet A = {0, sizeof(a), a}; + const char *Aline = "A = "; + + char b[SGS_SECP256K1]; + octet B = {0, sizeof(b), b}; + const char *Bline = "B = "; + + char e[SGS_SECP256K1]; + octet E = {0, sizeof(e), e}; + const char *Eline = "E = "; + + char s[SGS_SECP256K1]; + octet S = {0, sizeof(s), s}; + const char *Sline = "S = "; + + char l[SGS_SECP256K1]; + octet L = {0, sizeof(l), l}; + const char *Lline = "L = "; + + char t_golden[SGS_SECP256K1]; + octet T_GOLDEN = {0, sizeof(t_golden), t_golden}; + const char *Tline = "T = "; + + char u_golden[SGS_SECP256K1]; + octet U_GOLDEN = {0, sizeof(u_golden), u_golden}; + const char *Uline = "U = "; + + char t[SGS_SECP256K1]; + octet T = {0, sizeof(t), t}; + + char u[SGS_SECP256K1]; + octet U = {0, sizeof(u), u}; + + // Line terminating a test vector + const char *last_line = Uline; + + fp = fopen(argv[1], "r"); + if (fp == NULL) + { + printf("ERROR opening test vector file\n"); + exit(EXIT_FAILURE); + } + + while (fgets(line, LINE_LEN, fp) != NULL) + { + scan_int(&testNo, line, TESTline); + + // Read input + scan_OCTET(fp, &A, line, Aline); + scan_OCTET(fp, &B, line, Bline); + scan_OCTET(fp, &E, line, Eline); + scan_OCTET(fp, &S, line, Sline); + scan_OCTET(fp, &L, line, Lline); + + // Read ground truth + scan_OCTET(fp, &T_GOLDEN, line, Tline); + scan_OCTET(fp, &U_GOLDEN, line, Uline); + + // Read P and run test + if (!strncmp(line, last_line, strlen(last_line))) + { + SCHNORR_D_prove(&A, &B, &E, &S, &L, &T, &U); + compare_OCT(fp, testNo, "SCHNORR_D_prove T", &T, &T_GOLDEN); + compare_OCT(fp, testNo, "SCHNORR_D_prove U", &U, &U_GOLDEN); + + // Mark that at least one test vector was executed + test_run = 1; + } + } + + fclose(fp); + + if (test_run == 0) + { + printf("ERROR no test vector was executed\n"); + exit(EXIT_FAILURE); + } + + printf("SUCCESS\n"); + exit(EXIT_SUCCESS); +} diff --git a/test/unit/test_d_schnorr_verify.c b/test/unit/test_d_schnorr_verify.c new file mode 100644 index 0000000..448db42 --- /dev/null +++ b/test/unit/test_d_schnorr_verify.c @@ -0,0 +1,135 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ + +#include <string.h> +#include "test.h" +#include "amcl/schnorr.h" + +/* Double Schnorr's Proof challenge verify test */ + +#define LINE_LEN 256 + +int main(int argc, char **argv) +{ + if (argc != 2) + { + printf("usage: ./test_schnorr_d_verify [path to test vector file]\n"); + exit(EXIT_FAILURE); + } + + int rc; + int test_run = 0; + + char err_msg[128]; + + FILE *fp; + char line[LINE_LEN] = {0}; + + const char *TESTline = "TEST = "; + int testNo = 0; + + char r[SFS_SECP256K1+1]; + octet R = {0, sizeof(r), r}; + const char *Rline = "R = "; + + char v[SFS_SECP256K1+1]; + octet V = {0, sizeof(v), v}; + const char *Vline = "V = "; + + char c[SFS_SECP256K1+1]; + octet C = {0, sizeof(c), c}; + const char *Cline = "C = "; + + char e[SGS_SECP256K1]; + octet E = {0, sizeof(e), e}; + const char *Eline = "E = "; + + char t[SGS_SECP256K1]; + octet T = {0, sizeof(t), t}; + const char *Tline = "T = "; + + char u[SGS_SECP256K1]; + octet U = {0, sizeof(u), u}; + const char *Uline = "U = "; + + // Line terminating a test vector + const char *last_line = Uline; + + fp = fopen(argv[1], "r"); + if (fp == NULL) + { + printf("ERROR opening test vector file\n"); + exit(EXIT_FAILURE); + } + + /* Test happy path with test vectors */ + while (fgets(line, LINE_LEN, fp) != NULL) + { + scan_int(&testNo, line, TESTline); + + // Read input + scan_OCTET(fp, &R, line, Rline); + scan_OCTET(fp, &V, line, Vline); + scan_OCTET(fp, &C, line, Cline); + scan_OCTET(fp, &E, line, Eline); + scan_OCTET(fp, &T, line, Tline); + scan_OCTET(fp, &U, line, Uline); + + if (!strncmp(line, last_line, strlen(last_line))) + { + rc = SCHNORR_D_verify(&R, &V, &C, &E, &T, &U); + sprintf(err_msg, "SCHNORR_D_verify. rc %d", rc); + assert_tv(fp, testNo, err_msg, rc == SCHNORR_OK); + + // Mark that at least one test vector was executed + test_run = 1; + } + } + + fclose(fp); + + if (test_run == 0) + { + printf("ERROR no test vector was executed\n"); + exit(EXIT_FAILURE); + } + + /* Test unhappy path */ + char zero[SFS_SECP256K1+1] = {0}; + octet ZERO = {0, sizeof(zero), zero}; + + rc = SCHNORR_D_verify(&ZERO, &V, &C, &E, &T, &U); + sprintf(err_msg, "SCHNORR_D_verify invalid R. rc %d", rc); + assert(NULL, err_msg, rc == SCHNORR_INVALID_ECP); + + rc = SCHNORR_D_verify(&R, &ZERO, &C, &E, &T, &U); + sprintf(err_msg, "SCHNORR_D_verify invalid V. rc %d", rc); + assert(NULL, err_msg, rc == SCHNORR_INVALID_ECP); + + rc = SCHNORR_D_verify(&R, &V, &ZERO, &E, &T, &U); + sprintf(err_msg, "SCHNORR_D_verify invalid C. rc %d", rc); + assert(NULL, err_msg, rc == SCHNORR_INVALID_ECP); + + rc = SCHNORR_D_verify(&R, &V, &C, &E, &ZERO, &U); + sprintf(err_msg, "SCHNORR_D_verify invalid proof. rc %d", rc); + assert(NULL, err_msg, rc == SCHNORR_FAIL); + + printf("SUCCESS\n"); + exit(EXIT_SUCCESS); +} diff --git a/testVectors/schnorr/dchallenge.json b/testVectors/schnorr/dchallenge.json new file mode 100644 index 0000000..751694d --- /dev/null +++ b/testVectors/schnorr/dchallenge.json @@ -0,0 +1,72 @@ +[ + { + "TEST": 0, + "R": "02fce97b3461044ccb1cfda6653e3307cc0404e634bd042e9ed42abc114a7fae12", + "V": "03a7aa6833de71fe8157742cda5fec88ae20e9daa420363a8bee9baaac05baf53d", + "C": "03b93be23c0f9283a0cd97e3f41247aa26926cd4345e4a622abc0ccf7e9a5a7396", + "E": "377641844b33e90b6d0fc4fbcfd9bfc06dc1667e5211d8e231256f098fd0dcd6" + }, + { + "TEST": 1, + "R": "03e9f81d0e6c24199940612ab91ebaa6dce5d2d3f1d084e8ca6f5e297c9c5a6dc1", + "V": "03f25c7a101353776030a55deffe291c10c977192e86f6c285afb80e5391cd7cc8", + "C": "024989f21a8234221ddf2eba3b634da8bb96c7d5681a366356a98afb9670207a45", + "E": "5b95c4f3ba9c18c54b3877a24e74363bbf7df8434d59c54332955941f5f0cb06" + }, + { + "TEST": 2, + "R": "03a7e24af1dc8d18f1f1e29f1394d8d0a8e90d6c4c26de91bea4bfe1e71ebfa1f6", + "V": "02e8abc8a4759b17f0203e06688bff8abcb9f9664066b63a84a1cdbf3d1ec83871", + "C": "031a4e2b1c88faa7b2d33c174bce726589effa301fa28eb20de8d20930f0808478", + "E": "96631591ff2ab6d5f75c7350a01e562f419ea124519650892bc52ec4a1f9ec56" + }, + { + "TEST": 3, + "R": "0345276ef03da95891d8ab5fec315a99c1d2a0b73e5c6428d2c4783d76ea12e8e5", + "V": "03294ea766113835c1295a89dfa2d72c9133693705232f6961ab112320e13b393b", + "C": "031f7196fbe48c4fb565c096aa221ad50531e1e4fe86d849402b050e479601afb2", + "E": "9dadd46409bc914c556aeadfe4354357fbc1015936e09e4e0bc104ba83c88999" + }, + { + "TEST": 4, + "R": "03c5014eefdd3f846f5e44fe27c0b373ea4f8063f0190f134c1daeac38cb99018d", + "V": "027f1738999c2ba46a69ca139c0231e1bae9d72f7b005116ef326dbf1c159be802", + "C": "023a42f0ac7af46fc1347b085b6c0393630aaafde82c9ea8ff3f19dfe76b439bc9", + "E": "ecd14eab141fedf4ff74a99b04be0b0a3ecee7f61dfd9ade62607d72ca5603c4" + }, + { + "TEST": 5, + "R": "021982e226d514f6b456ce6dd34207e3614c75c7212c1e4aafc8466db3b7f46d7b", + "V": "02e63eb2a216d4b599e3a3744931a994f9ec42e7a1206f7f1da3d02179470d2349", + "C": "0370ae390278ed2b8e2c60f5ae07620bf152b561c07555cd47e7b5f0bc633eef30", + "E": "4fc268495304a9cae32c7034a61e8f06a66daf2eb2de39fbb14898eef3f0a2f0" + }, + { + "TEST": 6, + "R": "02505dd9744db3c1c7f32766c5982f60528a94f5e196beb71a055455a8d565a9fb", + "V": "036049148cb142e8ee3ec967e0fb26407fe896f490ccbb98a9cc4692a5b1353b0e", + "C": "02ba916da7a61ddbd7e4d0e83586bdb9835157b5e194075f7cc68ecbb3255c0862", + "E": "89e69d2a6efd2f0a73ab58720ed4c9f26857f41095ef4ff6078251fb5c0fc7a8" + }, + { + "TEST": 7, + "R": "03c885c69fb95055bb5a69f166024462de5ac80edb1b0a5c7d78ca5f7cf755ed72", + "V": "0224484bebb5b98fbe8c2e2e036e47117df3e7cb8aea0e33cb85313175c355f2a0", + "C": "03d555668d044c595b0b88eb4e24187fc3126f223e8d2c1eb719503ab6bf4bac79", + "E": "278333b0429c722e43f44db99ccdf61c72b8540191d73cd34dc961104df2ac68" + }, + { + "TEST": 8, + "R": "0241b9c2cbd4cdd8c14e875daa25371dddad0843daf46c4e50516eae3a4c93f1da", + "V": "03d5d6a159ea9eb3740c273ca73b570c4532b6865365ceaff9d49ccaae254ff79d", + "C": "028cdc49a1c1e62cb0080a08668e38c9dd45cf1f70cb1edac7a787c43de33a9f13", + "E": "7b5cbf866b40fcf8685eea11dccd0aeaf712daaf79a7593392e0c8072d7bc41e" + }, + { + "TEST": 9, + "R": "03608303184489be2160b83396fabb2941cb75554f7705ed9b20a723f0e35ab5e9", + "V": "0331443c4928d41e51f066f9c19ffe16d3136d952d541c5726a8b69acb88da2c11", + "C": "02f6ce8a1ea47a2736b5274328a8a49e5cf38dbf896f86396223a219df68f49588", + "E": "f3626cb346393399732569f32e4efffad65a76d27762bb7fef9efdccce0671bf" + } +] \ No newline at end of file diff --git a/testVectors/schnorr/dchallenge.txt b/testVectors/schnorr/dchallenge.txt new file mode 100644 index 0000000..cf10987 --- /dev/null +++ b/testVectors/schnorr/dchallenge.txt @@ -0,0 +1,60 @@ +TEST = 0, +R = 02fce97b3461044ccb1cfda6653e3307cc0404e634bd042e9ed42abc114a7fae12, +V = 03a7aa6833de71fe8157742cda5fec88ae20e9daa420363a8bee9baaac05baf53d, +C = 03b93be23c0f9283a0cd97e3f41247aa26926cd4345e4a622abc0ccf7e9a5a7396, +E = 377641844b33e90b6d0fc4fbcfd9bfc06dc1667e5211d8e231256f098fd0dcd6, + +TEST = 1, +R = 03e9f81d0e6c24199940612ab91ebaa6dce5d2d3f1d084e8ca6f5e297c9c5a6dc1, +V = 03f25c7a101353776030a55deffe291c10c977192e86f6c285afb80e5391cd7cc8, +C = 024989f21a8234221ddf2eba3b634da8bb96c7d5681a366356a98afb9670207a45, +E = 5b95c4f3ba9c18c54b3877a24e74363bbf7df8434d59c54332955941f5f0cb06, + +TEST = 2, +R = 03a7e24af1dc8d18f1f1e29f1394d8d0a8e90d6c4c26de91bea4bfe1e71ebfa1f6, +V = 02e8abc8a4759b17f0203e06688bff8abcb9f9664066b63a84a1cdbf3d1ec83871, +C = 031a4e2b1c88faa7b2d33c174bce726589effa301fa28eb20de8d20930f0808478, +E = 96631591ff2ab6d5f75c7350a01e562f419ea124519650892bc52ec4a1f9ec56, + +TEST = 3, +R = 0345276ef03da95891d8ab5fec315a99c1d2a0b73e5c6428d2c4783d76ea12e8e5, +V = 03294ea766113835c1295a89dfa2d72c9133693705232f6961ab112320e13b393b, +C = 031f7196fbe48c4fb565c096aa221ad50531e1e4fe86d849402b050e479601afb2, +E = 9dadd46409bc914c556aeadfe4354357fbc1015936e09e4e0bc104ba83c88999, + +TEST = 4, +R = 03c5014eefdd3f846f5e44fe27c0b373ea4f8063f0190f134c1daeac38cb99018d, +V = 027f1738999c2ba46a69ca139c0231e1bae9d72f7b005116ef326dbf1c159be802, +C = 023a42f0ac7af46fc1347b085b6c0393630aaafde82c9ea8ff3f19dfe76b439bc9, +E = ecd14eab141fedf4ff74a99b04be0b0a3ecee7f61dfd9ade62607d72ca5603c4, + +TEST = 5, +R = 021982e226d514f6b456ce6dd34207e3614c75c7212c1e4aafc8466db3b7f46d7b, +V = 02e63eb2a216d4b599e3a3744931a994f9ec42e7a1206f7f1da3d02179470d2349, +C = 0370ae390278ed2b8e2c60f5ae07620bf152b561c07555cd47e7b5f0bc633eef30, +E = 4fc268495304a9cae32c7034a61e8f06a66daf2eb2de39fbb14898eef3f0a2f0, + +TEST = 6, +R = 02505dd9744db3c1c7f32766c5982f60528a94f5e196beb71a055455a8d565a9fb, +V = 036049148cb142e8ee3ec967e0fb26407fe896f490ccbb98a9cc4692a5b1353b0e, +C = 02ba916da7a61ddbd7e4d0e83586bdb9835157b5e194075f7cc68ecbb3255c0862, +E = 89e69d2a6efd2f0a73ab58720ed4c9f26857f41095ef4ff6078251fb5c0fc7a8, + +TEST = 7, +R = 03c885c69fb95055bb5a69f166024462de5ac80edb1b0a5c7d78ca5f7cf755ed72, +V = 0224484bebb5b98fbe8c2e2e036e47117df3e7cb8aea0e33cb85313175c355f2a0, +C = 03d555668d044c595b0b88eb4e24187fc3126f223e8d2c1eb719503ab6bf4bac79, +E = 278333b0429c722e43f44db99ccdf61c72b8540191d73cd34dc961104df2ac68, + +TEST = 8, +R = 0241b9c2cbd4cdd8c14e875daa25371dddad0843daf46c4e50516eae3a4c93f1da, +V = 03d5d6a159ea9eb3740c273ca73b570c4532b6865365ceaff9d49ccaae254ff79d, +C = 028cdc49a1c1e62cb0080a08668e38c9dd45cf1f70cb1edac7a787c43de33a9f13, +E = 7b5cbf866b40fcf8685eea11dccd0aeaf712daaf79a7593392e0c8072d7bc41e, + +TEST = 9, +R = 03608303184489be2160b83396fabb2941cb75554f7705ed9b20a723f0e35ab5e9, +V = 0331443c4928d41e51f066f9c19ffe16d3136d952d541c5726a8b69acb88da2c11, +C = 02f6ce8a1ea47a2736b5274328a8a49e5cf38dbf896f86396223a219df68f49588, +E = f3626cb346393399732569f32e4efffad65a76d27762bb7fef9efdccce0671bf, + diff --git a/testVectors/schnorr/dcommit.json b/testVectors/schnorr/dcommit.json new file mode 100644 index 0000000..c2dfdec --- /dev/null +++ b/testVectors/schnorr/dcommit.json @@ -0,0 +1,72 @@ +[ + { + "TEST": 0, + "R": "0259e1d6f1cf1d5e97248a54b33c7c18261b2a6152cc4eb36c9c38681616815b1b", + "A": "fb02633176a5893922feb54b6d37188dd8d08695b61cf48210e351ba2aaca20e", + "B": "4621a4da1b0c44d8015214b502b3028c8cfce6dd03bda3dfb92fabf8b324a521", + "C": "02835e9b712b046d5700c347ca4e10846c0e481f05eaa9bdd7da2b6da8574d3471" + }, + { + "TEST": 1, + "R": "0244b8babba4345fd4407bf44ad76f7884f4f8fb38cc0d99cf09b6cf98c2033035", + "A": "f7e8ebe2fed516c81ff6777958c1eba87df724318090be9ffb5c2ea0ac367737", + "B": "36bf6b7dfb228fd360752a392da3b3d8daeeaced132261baf1b075cc34349776", + "C": "03aa219766dd92764d9cc4d125f6cbd1c6f73449dfa96f1268e9ee3723db7918d5" + }, + { + "TEST": 2, + "R": "0296a698250a1237f45aac507bac7f88d1ae2fa5502c0cc061bab6e4d77817de8c", + "A": "0824de324be47ecd9177d6c90dc72158ef2b35047b8d7717ef3d130ed6444fb2", + "B": "a34117c6b8babc2d85af6d70ab1468eee8bf3aace79e90eb1fa8dc4e63f091a1", + "C": "036d4afbc091ca1d0e8e5e3d61ac3d82aa81e1ef7edc901ad8f5c976ff5c376c3a" + }, + { + "TEST": 3, + "R": "03591e1e077cd4195e5afc880ea96ff5d783fd587c1aba1129dfb3c6517ec1c8f6", + "A": "201abd5a905d6686305b79caf6d240281e874f9ff0320469520307d2a5468f7b", + "B": "e2a53a62010f99811f2b0e80776047c9ef9be04b423db6a0963c22c21cf325ce", + "C": "0279747d0a1800961d4173b267185db43ccc22c80afe521b537d734485b78dd463" + }, + { + "TEST": 4, + "R": "038e0ec278ef160284bb19944fcef4158f4a85c181a8c7db020c0796845d5ce4c1", + "A": "18305a54a2b4eebb83ea8a5c73253c0989454f587f2b5bd66d7919cae9c0a6fc", + "B": "8744a82766ec8aca0f398c4e9ac1581e2b0254ab1b0610fa8c911808d838336e", + "C": "02a80e63387fb9bca43fcf13cc4874d3c8c84de22ed7695ff6d7874b02bc197b2f" + }, + { + "TEST": 5, + "R": "03fd2eb61386982525575394a89be40758c24bf6b0a6e4807c1ab7a82a4e1cdd73", + "A": "0d29b13ebd9d14d115cd94822e9e885d81ef67472e5fef7653f8f2d742af851e", + "B": "95d44557e995734a211bd97b586669ae054c18624b19de4ea4700527445c1833", + "C": "02476e16a4960b5fa50e62ef3016c93a344459747e972637f78da66a3193e6b4d2" + }, + { + "TEST": 6, + "R": "03b7a6d84f9577daab651b724ee3d226daf86fccc34a1124703c9c0070597ac5f2", + "A": "74fbe75bce9e10b57486fd5ebade8227421a8c3aeb7855b72cf9f12561fef096", + "B": "8c071721faa418ad062df7462ab65b019a786178088344b58063883dfef78ab8", + "C": "0323bcd4ddca10d9e1bf31ca8f18d4ed62e19770e5495c2d4f6dd8e2382b731024" + }, + { + "TEST": 7, + "R": "028a6e0d9fe36b568ddad3dfc5cf9506eba8e62aa45d08ef59b6c8980720b84221", + "A": "ffcf45371d32b708f527ca3a1875aeb1e0eec092e4688d9ed8ba59df338eb56a", + "B": "81a27940ced64fe34de599799eb567d61b80a1d519c51d5af3fc796d569a51d3", + "C": "02bd668682e5343ac4abb96d913d7e9deec10d5c6278de9b719e32f837a894d7fe" + }, + { + "TEST": 8, + "R": "0313afef23301766f3f26443e2fac4ce42cd850593916daa672baab642d8217ba7", + "A": "d689fcde07c7ffa6ddca08806b53aadc2acad6d139538beb2771dac4c6be8081", + "B": "aeb017ab7ad847df1653fa383898bacea67051a74bec966a2700e91a6d5c9ed1", + "C": "03a46cd1028277311085050afe9c8af7e7accc2a9dfbe6f264ffef6e6021736439" + }, + { + "TEST": 9, + "R": "03f0b186990b491a9f6d7bae86dfa3188a6fcd79204de0c677ea9e1a4c939a9a19", + "A": "c2f66ddf4d51057c88033378b3d088bc8a3b930823b661cd6b3b0f55e7a10d8c", + "B": "5fa5b601079c88f235f73277b53a08f0b50bb09ed404aeef1acd03b4c58d5969", + "C": "03e1507f9e21f26aa04452e7fdbab469dfb28ea1c035def6e56cd7d5ad123b7e9c" + } +] \ No newline at end of file diff --git a/testVectors/schnorr/dcommit.txt b/testVectors/schnorr/dcommit.txt new file mode 100644 index 0000000..fc9ec1a --- /dev/null +++ b/testVectors/schnorr/dcommit.txt @@ -0,0 +1,60 @@ +TEST = 0, +R = 0259e1d6f1cf1d5e97248a54b33c7c18261b2a6152cc4eb36c9c38681616815b1b, +A = fb02633176a5893922feb54b6d37188dd8d08695b61cf48210e351ba2aaca20e, +B = 4621a4da1b0c44d8015214b502b3028c8cfce6dd03bda3dfb92fabf8b324a521, +C = 02835e9b712b046d5700c347ca4e10846c0e481f05eaa9bdd7da2b6da8574d3471, + +TEST = 1, +R = 0244b8babba4345fd4407bf44ad76f7884f4f8fb38cc0d99cf09b6cf98c2033035, +A = f7e8ebe2fed516c81ff6777958c1eba87df724318090be9ffb5c2ea0ac367737, +B = 36bf6b7dfb228fd360752a392da3b3d8daeeaced132261baf1b075cc34349776, +C = 03aa219766dd92764d9cc4d125f6cbd1c6f73449dfa96f1268e9ee3723db7918d5, + +TEST = 2, +R = 0296a698250a1237f45aac507bac7f88d1ae2fa5502c0cc061bab6e4d77817de8c, +A = 0824de324be47ecd9177d6c90dc72158ef2b35047b8d7717ef3d130ed6444fb2, +B = a34117c6b8babc2d85af6d70ab1468eee8bf3aace79e90eb1fa8dc4e63f091a1, +C = 036d4afbc091ca1d0e8e5e3d61ac3d82aa81e1ef7edc901ad8f5c976ff5c376c3a, + +TEST = 3, +R = 03591e1e077cd4195e5afc880ea96ff5d783fd587c1aba1129dfb3c6517ec1c8f6, +A = 201abd5a905d6686305b79caf6d240281e874f9ff0320469520307d2a5468f7b, +B = e2a53a62010f99811f2b0e80776047c9ef9be04b423db6a0963c22c21cf325ce, +C = 0279747d0a1800961d4173b267185db43ccc22c80afe521b537d734485b78dd463, + +TEST = 4, +R = 038e0ec278ef160284bb19944fcef4158f4a85c181a8c7db020c0796845d5ce4c1, +A = 18305a54a2b4eebb83ea8a5c73253c0989454f587f2b5bd66d7919cae9c0a6fc, +B = 8744a82766ec8aca0f398c4e9ac1581e2b0254ab1b0610fa8c911808d838336e, +C = 02a80e63387fb9bca43fcf13cc4874d3c8c84de22ed7695ff6d7874b02bc197b2f, + +TEST = 5, +R = 03fd2eb61386982525575394a89be40758c24bf6b0a6e4807c1ab7a82a4e1cdd73, +A = 0d29b13ebd9d14d115cd94822e9e885d81ef67472e5fef7653f8f2d742af851e, +B = 95d44557e995734a211bd97b586669ae054c18624b19de4ea4700527445c1833, +C = 02476e16a4960b5fa50e62ef3016c93a344459747e972637f78da66a3193e6b4d2, + +TEST = 6, +R = 03b7a6d84f9577daab651b724ee3d226daf86fccc34a1124703c9c0070597ac5f2, +A = 74fbe75bce9e10b57486fd5ebade8227421a8c3aeb7855b72cf9f12561fef096, +B = 8c071721faa418ad062df7462ab65b019a786178088344b58063883dfef78ab8, +C = 0323bcd4ddca10d9e1bf31ca8f18d4ed62e19770e5495c2d4f6dd8e2382b731024, + +TEST = 7, +R = 028a6e0d9fe36b568ddad3dfc5cf9506eba8e62aa45d08ef59b6c8980720b84221, +A = ffcf45371d32b708f527ca3a1875aeb1e0eec092e4688d9ed8ba59df338eb56a, +B = 81a27940ced64fe34de599799eb567d61b80a1d519c51d5af3fc796d569a51d3, +C = 02bd668682e5343ac4abb96d913d7e9deec10d5c6278de9b719e32f837a894d7fe, + +TEST = 8, +R = 0313afef23301766f3f26443e2fac4ce42cd850593916daa672baab642d8217ba7, +A = d689fcde07c7ffa6ddca08806b53aadc2acad6d139538beb2771dac4c6be8081, +B = aeb017ab7ad847df1653fa383898bacea67051a74bec966a2700e91a6d5c9ed1, +C = 03a46cd1028277311085050afe9c8af7e7accc2a9dfbe6f264ffef6e6021736439, + +TEST = 9, +R = 03f0b186990b491a9f6d7bae86dfa3188a6fcd79204de0c677ea9e1a4c939a9a19, +A = c2f66ddf4d51057c88033378b3d088bc8a3b930823b661cd6b3b0f55e7a10d8c, +B = 5fa5b601079c88f235f73277b53a08f0b50bb09ed404aeef1acd03b4c58d5969, +C = 03e1507f9e21f26aa04452e7fdbab469dfb28ea1c035def6e56cd7d5ad123b7e9c, + diff --git a/testVectors/schnorr/dprove.json b/testVectors/schnorr/dprove.json new file mode 100644 index 0000000..a422c3c --- /dev/null +++ b/testVectors/schnorr/dprove.json @@ -0,0 +1,102 @@ +[ + { + "TEST": 0, + "A": "c3658c336985e9415ac8395a5a97dcd9bd0cb566f7c7fc23e4c53726627fc3d2", + "B": "c8d085e5ea92fb4086caf99c27ba68d0cf075531f9a45527e49667558d9d79ff", + "E": "744953855c767494d6f4fdc48e852a54027e2b7aa6c6552c217dd98b152f6395", + "S": "4ba56d82ab4fd7f34eb58be3e3b1b23c06270f1d4d51d4662742b37700a70a06", + "L": "3e13bc076f821b97aaabb9b5a65fa5ef7a1c7e200009d2fa11f17a1858d0a52f", + "T": "2d01dec8512cdd6e880c25053de5f807ed48ebf831de4235754d825b0d1494a5", + "U": "54bf98385efdb40d39827c52d2f4e6d4df8dc0938655a7b0a57cace7986e895d" + }, + { + "TEST": 1, + "A": "931f39d36bfc27283f5b3d791ad3f6df1c55f144fa2b52bd443fc4eb24f26281", + "B": "b6fdb0f8402d57e166816f281b48c2b5a5c04d6c4ab52be80620feb98118957e", + "E": "9675ad591af467de8c64a39b438c213d86e5bbba431bb3880c186b4e8282a672", + "S": "b6683ed0c7f7bb9b53250bb5cbdaf15aa84673d44c011f970b27c4dedc79a7c3", + "L": "6450fb92cefca0594fe5e37a2fab9eed46fcd44eaee464adf1237b8c3f9855ec", + "T": "30e4a42f280a7a135654a4af59a445ce09ed5683b7404d575bccf9d7a2c8c760", + "U": "db60d0b8ba2d3ba0b884774259b8fc40e92595b01ffbc0aa36ee63e3126b194f" + }, + { + "TEST": 2, + "A": "f65387fd820997e523d1099ff99727dde285bac05a0cd9e63fb75e28284df79d", + "B": "94d0c8ba02ebde9f728d1fffd0ec743db34192366c42a9063580ea971d8d8d4b", + "E": "37ce44b6fcd5617c4470e9a83cdb9c2a5057eb71bdf656de4ad1a50cee70334c", + "S": "626e6215eae0f7f304af9abeac0d5267d9c83cbb9ed0beacb0090faaf0fc18eb", + "L": "0da04fe6194cc495ccb9d43225f0b29d7ef322665d37347c441b1a054f4a60b4", + "T": "3e0ff7c4fddb1f58933cf1d5ba9388ff2a6d0e4be347c59bf2be18457c7ab5e7", + "U": "71ee5b78721471d2ac47073eb92d979477208b44a16e8425293902e134c41d34" + }, + { + "TEST": 3, + "A": "0e3cebfb2e5ef09c85305b6d400b35ed581729ecac51782cdb8908043d6bf4af", + "B": "192db7270206618045a6a83cc26babc89eb0f68946bec5b8b99d71a70f391505", + "E": "b1568c9ef268cb8eca2f95a6b9bfa4fe90f65c368a44fbf105305263cf99b396", + "S": "57339ac50d52d6778fcd5787c5578d454c31d285d98e53e60dbfaee5eb22b5de", + "L": "6bffa4f19113e216da05bd988cde2fbbb1553f2f32b03893dad8569f61da8e59", + "T": "60c391d164811208e890f9b1b596b948b423ceca295a2f5e2bc3066dab605051", + "U": "a410308bf97a4b2db7f809bdd7193a91191dfdbd7dc20e9d60ffa91602f2ad02" + }, + { + "TEST": 4, + "A": "a6720ad0cd437e1fad7b6cb831748de9a4c113d7a4407ac48d1c1c649a32cfa7", + "B": "b7001f7b29784a455a9de707f496498e776af6cace3281a5d6dc877c3b960feb", + "E": "de8bd108f9ece11b75fb01241477fb361609105d9874696121c678ceb39dbca1", + "S": "f03a58d3248464d8a1d77e3107151f69ea0a3217238305e43208adb296d27deb", + "L": "5ce20cf65990bf869cb82b4d1b8a7a3dea605340419e86968d31266ad7ceb7cb", + "T": "b7f424831ddbe2061f78e9c505748f30c719d0c813932a957bd62f98dd35bfe4", + "U": "6f10117963601ad31ef4c6ad7baf3753e4febd6b64e7772d741d5db2d7cdcd18" + }, + { + "TEST": 5, + "A": "e064c90e03b7774ecea6f0c5633d9dd98fc6f8416d7baf39cf83df372bbd1a8f", + "B": "b89bf2b48410d26cd0b2450bc384bde59caecd03d1b534b9dee14c4ffb718cc0", + "E": "4a12fe6e64639407ad01860b3cdc10e69dc7d6b319a2160abcac5b4cf1a609f9", + "S": "892a19776ba393756e325ae26eb1be8d058d1978b0cb20dfbbd6f1f514fbdccb", + "L": "06584dc2fbcb24bd8dcefa2ecb75468ca3ee594cafb7e65223fdb49357e7e2f0", + "T": "722402d368c0818577f357aad04d9195ea80e0b013d164f89cf7f3c8f2761f14", + "U": "778d3d0e10ea34e5379297027c1e5f9a0470f126cd19f6bfc21e881652563b5e" + }, + { + "TEST": 6, + "A": "1cb8713e7dba86e70d446668d75bc9c992e6c10c9f6ed108ff0006a6d1b0937b", + "B": "f5cca22f672064914108a628be72e54380471853c91cd92904973944d3671631", + "E": "f54feab6fc6679e536521834a395893c4dcbb9f5cbd79dc6a9b54661eebb3166", + "S": "b69c37cc0963f8619645e9bf2f949ef829aace7604835f08579ecff67049782a", + "L": "e3f71b7a4f66283eab2cc81ae718723105ac4284f668271d53a5053bcb86f449", + "T": "03fec2defb4cb0037aa1fe3e98062b7d3265e6fe6b96257e961203daa7bb20ab", + "U": "b9710f2a2824a140aa970cf2aff3d898c9fe0e69352e5ceee4281549bade7ffe" + }, + { + "TEST": 7, + "A": "38c3298372a795c04c9bf3490d01f6f366bf3ac64c6a5c921581be6fb8263922", + "B": "eb922d0b0694a1e7973742dbff6bfc65cf29cfdf50d22cb7304dc060292adea2", + "E": "bf22c8d94b8b6005b6790ff357647e61b3cb853994f358e4fca9ddc9e191232b", + "S": "692622cb87e36d76b72f5726cc47877cbdd20e5f09ed37a69f9e3483432f8832", + "L": "35459a922c7dee62d1bd2cc240d5ced07bb978f7e2519f93cc5c8f24985593d1", + "T": "4075007fe3a002a59f723027738a37b90dfe8237dc92588769e3e8bae191ec28", + "U": "67caf11bef014d06b9f4467c8b520af8ef9cce399be37997d37f34f1e5cfe367" + }, + { + "TEST": 8, + "A": "45776a977fbb24669f0f5b14d7acbead19b1f23e67d8355156e4d2ad835b3ecb", + "B": "e30e8c0c7b4ada29ae217d87a7ce3a645354b6fa6585650e7e749f6b3c6a8cd6", + "E": "be816305456e6074737eb32e141a1cef89003ed5448d013a43f890ffa7d9eeb6", + "S": "b8bea737a5195af618cbc05f7d0af60df5f2f20805074e4b0b16f086134a0d2c", + "L": "f7ba14eafb15ee44511b0b7fc8f77cc2b0c3a4f7ec77f71286c022eb7ecc284c", + "T": "0c0c3e3cd44061869ccca4a6b9c449a2b46dbf2e73174822d9b2899cda6349a2", + "U": "787c5a03a3b443ee3fa7ff3ff90983b15fbd225b91dad900c2e115f9802c43f7" + }, + { + "TEST": 9, + "A": "a2dad6ce28cf198caa48eaddcdbd925452ece6cad4107559356a055a0fe24893", + "B": "ecc961fbe43346c86b5d4d39df3dcef0d10b7705e82b6efc150a0af912ee2b6d", + "E": "789ab333343a7d16cbc282cb8e4e19782443f31c1d49282d7a39229a85a83d38", + "S": "630f2d213eb0eb0f7bbe51999b55f6e66483e84c3658122b54bc5eec79885df6", + "L": "49f0f6e0465c04217d317516c0c1b844c96c113adcd4d48144ea83e2389c0d0d", + "T": "55a5b26fa437690e5cedb136b26d248459ee49801b7ae1423d12be5e6e28dc23", + "U": "59cf48a53168290f13e8df8ca62f45e2fbb9172e9b9161c95894d5ceef2300ab" + } +] \ No newline at end of file diff --git a/testVectors/schnorr/dprove.txt b/testVectors/schnorr/dprove.txt new file mode 100644 index 0000000..fca06d2 --- /dev/null +++ b/testVectors/schnorr/dprove.txt @@ -0,0 +1,90 @@ +TEST = 0, +A = c3658c336985e9415ac8395a5a97dcd9bd0cb566f7c7fc23e4c53726627fc3d2, +B = c8d085e5ea92fb4086caf99c27ba68d0cf075531f9a45527e49667558d9d79ff, +E = 744953855c767494d6f4fdc48e852a54027e2b7aa6c6552c217dd98b152f6395, +S = 4ba56d82ab4fd7f34eb58be3e3b1b23c06270f1d4d51d4662742b37700a70a06, +L = 3e13bc076f821b97aaabb9b5a65fa5ef7a1c7e200009d2fa11f17a1858d0a52f, +T = 2d01dec8512cdd6e880c25053de5f807ed48ebf831de4235754d825b0d1494a5, +U = 54bf98385efdb40d39827c52d2f4e6d4df8dc0938655a7b0a57cace7986e895d, + +TEST = 1, +A = 931f39d36bfc27283f5b3d791ad3f6df1c55f144fa2b52bd443fc4eb24f26281, +B = b6fdb0f8402d57e166816f281b48c2b5a5c04d6c4ab52be80620feb98118957e, +E = 9675ad591af467de8c64a39b438c213d86e5bbba431bb3880c186b4e8282a672, +S = b6683ed0c7f7bb9b53250bb5cbdaf15aa84673d44c011f970b27c4dedc79a7c3, +L = 6450fb92cefca0594fe5e37a2fab9eed46fcd44eaee464adf1237b8c3f9855ec, +T = 30e4a42f280a7a135654a4af59a445ce09ed5683b7404d575bccf9d7a2c8c760, +U = db60d0b8ba2d3ba0b884774259b8fc40e92595b01ffbc0aa36ee63e3126b194f, + +TEST = 2, +A = f65387fd820997e523d1099ff99727dde285bac05a0cd9e63fb75e28284df79d, +B = 94d0c8ba02ebde9f728d1fffd0ec743db34192366c42a9063580ea971d8d8d4b, +E = 37ce44b6fcd5617c4470e9a83cdb9c2a5057eb71bdf656de4ad1a50cee70334c, +S = 626e6215eae0f7f304af9abeac0d5267d9c83cbb9ed0beacb0090faaf0fc18eb, +L = 0da04fe6194cc495ccb9d43225f0b29d7ef322665d37347c441b1a054f4a60b4, +T = 3e0ff7c4fddb1f58933cf1d5ba9388ff2a6d0e4be347c59bf2be18457c7ab5e7, +U = 71ee5b78721471d2ac47073eb92d979477208b44a16e8425293902e134c41d34, + +TEST = 3, +A = 0e3cebfb2e5ef09c85305b6d400b35ed581729ecac51782cdb8908043d6bf4af, +B = 192db7270206618045a6a83cc26babc89eb0f68946bec5b8b99d71a70f391505, +E = b1568c9ef268cb8eca2f95a6b9bfa4fe90f65c368a44fbf105305263cf99b396, +S = 57339ac50d52d6778fcd5787c5578d454c31d285d98e53e60dbfaee5eb22b5de, +L = 6bffa4f19113e216da05bd988cde2fbbb1553f2f32b03893dad8569f61da8e59, +T = 60c391d164811208e890f9b1b596b948b423ceca295a2f5e2bc3066dab605051, +U = a410308bf97a4b2db7f809bdd7193a91191dfdbd7dc20e9d60ffa91602f2ad02, + +TEST = 4, +A = a6720ad0cd437e1fad7b6cb831748de9a4c113d7a4407ac48d1c1c649a32cfa7, +B = b7001f7b29784a455a9de707f496498e776af6cace3281a5d6dc877c3b960feb, +E = de8bd108f9ece11b75fb01241477fb361609105d9874696121c678ceb39dbca1, +S = f03a58d3248464d8a1d77e3107151f69ea0a3217238305e43208adb296d27deb, +L = 5ce20cf65990bf869cb82b4d1b8a7a3dea605340419e86968d31266ad7ceb7cb, +T = b7f424831ddbe2061f78e9c505748f30c719d0c813932a957bd62f98dd35bfe4, +U = 6f10117963601ad31ef4c6ad7baf3753e4febd6b64e7772d741d5db2d7cdcd18, + +TEST = 5, +A = e064c90e03b7774ecea6f0c5633d9dd98fc6f8416d7baf39cf83df372bbd1a8f, +B = b89bf2b48410d26cd0b2450bc384bde59caecd03d1b534b9dee14c4ffb718cc0, +E = 4a12fe6e64639407ad01860b3cdc10e69dc7d6b319a2160abcac5b4cf1a609f9, +S = 892a19776ba393756e325ae26eb1be8d058d1978b0cb20dfbbd6f1f514fbdccb, +L = 06584dc2fbcb24bd8dcefa2ecb75468ca3ee594cafb7e65223fdb49357e7e2f0, +T = 722402d368c0818577f357aad04d9195ea80e0b013d164f89cf7f3c8f2761f14, +U = 778d3d0e10ea34e5379297027c1e5f9a0470f126cd19f6bfc21e881652563b5e, + +TEST = 6, +A = 1cb8713e7dba86e70d446668d75bc9c992e6c10c9f6ed108ff0006a6d1b0937b, +B = f5cca22f672064914108a628be72e54380471853c91cd92904973944d3671631, +E = f54feab6fc6679e536521834a395893c4dcbb9f5cbd79dc6a9b54661eebb3166, +S = b69c37cc0963f8619645e9bf2f949ef829aace7604835f08579ecff67049782a, +L = e3f71b7a4f66283eab2cc81ae718723105ac4284f668271d53a5053bcb86f449, +T = 03fec2defb4cb0037aa1fe3e98062b7d3265e6fe6b96257e961203daa7bb20ab, +U = b9710f2a2824a140aa970cf2aff3d898c9fe0e69352e5ceee4281549bade7ffe, + +TEST = 7, +A = 38c3298372a795c04c9bf3490d01f6f366bf3ac64c6a5c921581be6fb8263922, +B = eb922d0b0694a1e7973742dbff6bfc65cf29cfdf50d22cb7304dc060292adea2, +E = bf22c8d94b8b6005b6790ff357647e61b3cb853994f358e4fca9ddc9e191232b, +S = 692622cb87e36d76b72f5726cc47877cbdd20e5f09ed37a69f9e3483432f8832, +L = 35459a922c7dee62d1bd2cc240d5ced07bb978f7e2519f93cc5c8f24985593d1, +T = 4075007fe3a002a59f723027738a37b90dfe8237dc92588769e3e8bae191ec28, +U = 67caf11bef014d06b9f4467c8b520af8ef9cce399be37997d37f34f1e5cfe367, + +TEST = 8, +A = 45776a977fbb24669f0f5b14d7acbead19b1f23e67d8355156e4d2ad835b3ecb, +B = e30e8c0c7b4ada29ae217d87a7ce3a645354b6fa6585650e7e749f6b3c6a8cd6, +E = be816305456e6074737eb32e141a1cef89003ed5448d013a43f890ffa7d9eeb6, +S = b8bea737a5195af618cbc05f7d0af60df5f2f20805074e4b0b16f086134a0d2c, +L = f7ba14eafb15ee44511b0b7fc8f77cc2b0c3a4f7ec77f71286c022eb7ecc284c, +T = 0c0c3e3cd44061869ccca4a6b9c449a2b46dbf2e73174822d9b2899cda6349a2, +U = 787c5a03a3b443ee3fa7ff3ff90983b15fbd225b91dad900c2e115f9802c43f7, + +TEST = 9, +A = a2dad6ce28cf198caa48eaddcdbd925452ece6cad4107559356a055a0fe24893, +B = ecc961fbe43346c86b5d4d39df3dcef0d10b7705e82b6efc150a0af912ee2b6d, +E = 789ab333343a7d16cbc282cb8e4e19782443f31c1d49282d7a39229a85a83d38, +S = 630f2d213eb0eb0f7bbe51999b55f6e66483e84c3658122b54bc5eec79885df6, +L = 49f0f6e0465c04217d317516c0c1b844c96c113adcd4d48144ea83e2389c0d0d, +T = 55a5b26fa437690e5cedb136b26d248459ee49801b7ae1423d12be5e6e28dc23, +U = 59cf48a53168290f13e8df8ca62f45e2fbb9172e9b9161c95894d5ceef2300ab, + diff --git a/testVectors/schnorr/dverify.json b/testVectors/schnorr/dverify.json new file mode 100644 index 0000000..f0bfff8 --- /dev/null +++ b/testVectors/schnorr/dverify.json @@ -0,0 +1,92 @@ +[ + { + "TEST": 0, + "R": "0337f69333ec13ff263492807e1da7efccf880dda2d3e54062ebe1e56a4ac8114f", + "V": "03da9f79c96ede4add43f6da69c13c24d441c418ccf9266a0794d4b60139b769f8", + "C": "03be659529d5b0e5e895c98fe4a1615019a0ef506e8be65a844ea3e846e06ab06c", + "E": "5d163667398926b52b47f8164fc92795a9cad7e43efe9f71b78fb6b9d623dc10", + "T": "9b802924c454fa018f220d92c431e927a68bd861f3a823815b5bce9d59291f79", + "U": "9825d990f6a0219cfe6cd8385ed3124f3d20211b8fc8a53440dbf565d6435e21" + }, + { + "TEST": 1, + "R": "0310d9f650695d137ca05adec60b1b78445a40bf403e4f641fe38c2897aaa67769", + "V": "02555ec03ecd2e1585b708a8fe7a1d514057e3152381de479281e083d783a7beb9", + "C": "031072f0b4d488f0e8f93aae1957d5894f0dc3a98c1bc7bae8ea86fd8eb3222565", + "E": "1a45745881d6a22056c4734b068b7d92877a51aead03432774347880f860aa65", + "T": "52b37b5e9e38d8e26fc1b21fcafc63474cb6539134f9931145804bc925913032", + "U": "e148e44602200a79114daa2458f09a8a6e372cf1af472eca05ff2c17f12b42a9" + }, + { + "TEST": 2, + "R": "03903e4bb60f886668c5cdfadd0ddd349cacc4879de7fe8b7fa43ba79a6cbe01b3", + "V": "03ade35a1e50500a4bc8ed3fecb3f1aa2570a39499044c6282398f4dd071ed6c85", + "C": "02cbd3a2714376e1f3cab63feb5e9d23b36135b4565e7d4b4a85afae0882baa4ed", + "E": "450a269d202de9a6d2573b510bcc02f1e7c7d5b4a5779c55fbb4bd25241a1f9f", + "T": "e96ce1c43cbe59f6f6946dea0ff1f3bc15227da9758308f48a53e4fc4c666249", + "U": "a42aa5d5efceb63a480e8718d6e7930c3a156ba9ff971bae8538062305e502c7" + }, + { + "TEST": 3, + "R": "02ac3a849571574161e53aaf3cb9c8c323c3498e7d329f02d723a6b9b3a1848a67", + "V": "025fbc82aa7b986a386ad2fa524f085a0e23dadd259a01e2dda66bf79d4fef9fb5", + "C": "039436f7a6a41ef3e624090f34ac24331fc9b233d03430f263ac62e3b6555817ba", + "E": "670dcf5cca02ce7bb776e48fd01f06119da99af75581ce715cca828e14627771", + "T": "b4702324fa24b547850709fc0874809b638aa5e8ef10f8715100d116f5683702", + "U": "f708022da7a842e68094699df0cd1124a7ae40d17a9bbb5788bf4fec85e9a1b8" + }, + { + "TEST": 4, + "R": "0316ddced170deb5eee2121216c5a714e25ed0cbc5ef5646cc754234f778eb1c0b", + "V": "03b5302ae8d3061ebeebd34ad3e74f4be7ff11b20d321716f10d4e0a409059b2fa", + "C": "021e20bf1693d7515137d274938beb4faa5b6e5fa4fe81d2706cd1c9ad04c07a62", + "E": "7d9690223a556bcbcd86d24b20d85a520199ae39299dfc4f1f1ee36ffeda24e3", + "T": "d6bab7bb975b18d876909c797fd3c70ee4ab59168d0bdad29620c517e5af324b", + "U": "a3a0e66ed30df31b1e3195c964a00e731939ea5ea2c9176fc6fdd39c0dde4701" + }, + { + "TEST": 5, + "R": "03d28743c72ab145876065f39a3105d9b0f55bb225ef797c0674e65bf85c3439c3", + "V": "03708abbfa0a807e3540d8aa6c589c6993bcc0238986b317cfecbdc962fb459860", + "C": "02804191a4f52d8cf6948596122d89c079e4f6212420a263e66a693c1da94c3223", + "E": "ff5bfd05347b361da4d159a29dae99df2ecdf2eec94fd4ade894398d9c4bc239", + "T": "4ca83780f3ab9e30e29c87c3cb6fa0eabb3e0f664d2c27a6bce05380c9ae92ae", + "U": "4edeef14e75585e7fd197c719fd3948f1f420a724d5c3a95eb5bff0bb38681a6" + }, + { + "TEST": 6, + "R": "0375cd1b2c2de801df582927c5b7bb823d03544d818dc2b4ff754cdf3ef30c4c03", + "V": "039fe1711cd9f775105caa6db9cdea37023fccd81d2c03a36141cc15a009e3ee58", + "C": "03271d03e3c2105cd8dce4e17d7e76cb4174cd1631c8c2dcbdee5ef9d67312b2a4", + "E": "56eec5122920560f0b88db05c7912d517f1ba492d1f21e9ab747e354df7e6665", + "T": "f53dc9b0e3580638a7ea996318663d207c73495ebadf47e8061597cf7addb557", + "U": "af3c5fa843e6bb582820c9f8a7a050f4162980c2aaf15952cb615ec0c86e53ab" + }, + { + "TEST": 7, + "R": "03a487f61837e87c747c2737172b962f79f90f3e485792db349390393c7bbec009", + "V": "025c58b47fac4b2bc4556782fd0ff5d6f2761520b256150167144bfe1589531d2b", + "C": "02de1aac64d96206096d82a9782d890593492c33b6fb2cd0eb3d5da13e37a0571e", + "E": "608e104063ace2a703cdb85d79a9817f7732fada6cd2447af523df25083fe01c", + "T": "36c6489ecae5ccb524d2f3166bcdfc71b77aac8cc25a61433cd1062e113103aa", + "U": "b6dadf473f9e7a341848f0a6ea84962694afe9776cd5f45175d6902b64709e96" + }, + { + "TEST": 8, + "R": "0345c3278b4d2e9fbb697b4a497bd41b068314b20a3556984286a348195e4bf87d", + "V": "028c61a27347c094aa299e95dc648cfde1d0ab65ee48a70bbc1d2fddbb43cea989", + "C": "0369298338f45f3e501e7f46d31ff4010425074b128e557bbc8ac5f80dbf764aa9", + "E": "9f553102958aecaf0d00130c36f5bc7c42eaa2ace113853ede0001ae5164a07b", + "T": "a0b325d9e5b895ceae62621c1cf29d9a2fc4498fd1fc9937a63c8f32446080cc", + "U": "a552b6f899eba8c5c2fdc67d2e8f20420a79002b2a8ed545c1332b2b2675eeb7" + }, + { + "TEST": 9, + "R": "02c9ce032faa136eb3ad72225300a592a620d5a9a9f90bf303fab853e29bb68276", + "V": "02313802a1e8c0e23d830d0ddbc81f4b9bdf8636f79823a84ba57e3beb8d11c35d", + "C": "026647a49f2daed3ff69d03c9638bea864f125485af059fe60d640f9e9a0685944", + "E": "fb92fc530bb01d308afc30190ec261d4474346107f33809abe4bef288891e2cb", + "T": "f1be16549e065da6bf96466c9330194e92f2dde14fffb883922c98e6361f19f8", + "U": "e9a57b8486df4a58021fb1f57e3fb8ac5a30a73de5868d6542a196fbf3fc47fb" + } +] \ No newline at end of file diff --git a/testVectors/schnorr/dverify.txt b/testVectors/schnorr/dverify.txt new file mode 100644 index 0000000..41b2438 --- /dev/null +++ b/testVectors/schnorr/dverify.txt @@ -0,0 +1,80 @@ +TEST = 0, +R = 0337f69333ec13ff263492807e1da7efccf880dda2d3e54062ebe1e56a4ac8114f, +V = 03da9f79c96ede4add43f6da69c13c24d441c418ccf9266a0794d4b60139b769f8, +C = 03be659529d5b0e5e895c98fe4a1615019a0ef506e8be65a844ea3e846e06ab06c, +E = 5d163667398926b52b47f8164fc92795a9cad7e43efe9f71b78fb6b9d623dc10, +T = 9b802924c454fa018f220d92c431e927a68bd861f3a823815b5bce9d59291f79, +U = 9825d990f6a0219cfe6cd8385ed3124f3d20211b8fc8a53440dbf565d6435e21, + +TEST = 1, +R = 0310d9f650695d137ca05adec60b1b78445a40bf403e4f641fe38c2897aaa67769, +V = 02555ec03ecd2e1585b708a8fe7a1d514057e3152381de479281e083d783a7beb9, +C = 031072f0b4d488f0e8f93aae1957d5894f0dc3a98c1bc7bae8ea86fd8eb3222565, +E = 1a45745881d6a22056c4734b068b7d92877a51aead03432774347880f860aa65, +T = 52b37b5e9e38d8e26fc1b21fcafc63474cb6539134f9931145804bc925913032, +U = e148e44602200a79114daa2458f09a8a6e372cf1af472eca05ff2c17f12b42a9, + +TEST = 2, +R = 03903e4bb60f886668c5cdfadd0ddd349cacc4879de7fe8b7fa43ba79a6cbe01b3, +V = 03ade35a1e50500a4bc8ed3fecb3f1aa2570a39499044c6282398f4dd071ed6c85, +C = 02cbd3a2714376e1f3cab63feb5e9d23b36135b4565e7d4b4a85afae0882baa4ed, +E = 450a269d202de9a6d2573b510bcc02f1e7c7d5b4a5779c55fbb4bd25241a1f9f, +T = e96ce1c43cbe59f6f6946dea0ff1f3bc15227da9758308f48a53e4fc4c666249, +U = a42aa5d5efceb63a480e8718d6e7930c3a156ba9ff971bae8538062305e502c7, + +TEST = 3, +R = 02ac3a849571574161e53aaf3cb9c8c323c3498e7d329f02d723a6b9b3a1848a67, +V = 025fbc82aa7b986a386ad2fa524f085a0e23dadd259a01e2dda66bf79d4fef9fb5, +C = 039436f7a6a41ef3e624090f34ac24331fc9b233d03430f263ac62e3b6555817ba, +E = 670dcf5cca02ce7bb776e48fd01f06119da99af75581ce715cca828e14627771, +T = b4702324fa24b547850709fc0874809b638aa5e8ef10f8715100d116f5683702, +U = f708022da7a842e68094699df0cd1124a7ae40d17a9bbb5788bf4fec85e9a1b8, + +TEST = 4, +R = 0316ddced170deb5eee2121216c5a714e25ed0cbc5ef5646cc754234f778eb1c0b, +V = 03b5302ae8d3061ebeebd34ad3e74f4be7ff11b20d321716f10d4e0a409059b2fa, +C = 021e20bf1693d7515137d274938beb4faa5b6e5fa4fe81d2706cd1c9ad04c07a62, +E = 7d9690223a556bcbcd86d24b20d85a520199ae39299dfc4f1f1ee36ffeda24e3, +T = d6bab7bb975b18d876909c797fd3c70ee4ab59168d0bdad29620c517e5af324b, +U = a3a0e66ed30df31b1e3195c964a00e731939ea5ea2c9176fc6fdd39c0dde4701, + +TEST = 5, +R = 03d28743c72ab145876065f39a3105d9b0f55bb225ef797c0674e65bf85c3439c3, +V = 03708abbfa0a807e3540d8aa6c589c6993bcc0238986b317cfecbdc962fb459860, +C = 02804191a4f52d8cf6948596122d89c079e4f6212420a263e66a693c1da94c3223, +E = ff5bfd05347b361da4d159a29dae99df2ecdf2eec94fd4ade894398d9c4bc239, +T = 4ca83780f3ab9e30e29c87c3cb6fa0eabb3e0f664d2c27a6bce05380c9ae92ae, +U = 4edeef14e75585e7fd197c719fd3948f1f420a724d5c3a95eb5bff0bb38681a6, + +TEST = 6, +R = 0375cd1b2c2de801df582927c5b7bb823d03544d818dc2b4ff754cdf3ef30c4c03, +V = 039fe1711cd9f775105caa6db9cdea37023fccd81d2c03a36141cc15a009e3ee58, +C = 03271d03e3c2105cd8dce4e17d7e76cb4174cd1631c8c2dcbdee5ef9d67312b2a4, +E = 56eec5122920560f0b88db05c7912d517f1ba492d1f21e9ab747e354df7e6665, +T = f53dc9b0e3580638a7ea996318663d207c73495ebadf47e8061597cf7addb557, +U = af3c5fa843e6bb582820c9f8a7a050f4162980c2aaf15952cb615ec0c86e53ab, + +TEST = 7, +R = 03a487f61837e87c747c2737172b962f79f90f3e485792db349390393c7bbec009, +V = 025c58b47fac4b2bc4556782fd0ff5d6f2761520b256150167144bfe1589531d2b, +C = 02de1aac64d96206096d82a9782d890593492c33b6fb2cd0eb3d5da13e37a0571e, +E = 608e104063ace2a703cdb85d79a9817f7732fada6cd2447af523df25083fe01c, +T = 36c6489ecae5ccb524d2f3166bcdfc71b77aac8cc25a61433cd1062e113103aa, +U = b6dadf473f9e7a341848f0a6ea84962694afe9776cd5f45175d6902b64709e96, + +TEST = 8, +R = 0345c3278b4d2e9fbb697b4a497bd41b068314b20a3556984286a348195e4bf87d, +V = 028c61a27347c094aa299e95dc648cfde1d0ab65ee48a70bbc1d2fddbb43cea989, +C = 0369298338f45f3e501e7f46d31ff4010425074b128e557bbc8ac5f80dbf764aa9, +E = 9f553102958aecaf0d00130c36f5bc7c42eaa2ace113853ede0001ae5164a07b, +T = a0b325d9e5b895ceae62621c1cf29d9a2fc4498fd1fc9937a63c8f32446080cc, +U = a552b6f899eba8c5c2fdc67d2e8f20420a79002b2a8ed545c1332b2b2675eeb7, + +TEST = 9, +R = 02c9ce032faa136eb3ad72225300a592a620d5a9a9f90bf303fab853e29bb68276, +V = 02313802a1e8c0e23d830d0ddbc81f4b9bdf8636f79823a84ba57e3beb8d11c35d, +C = 026647a49f2daed3ff69d03c9638bea864f125485af059fe60d640f9e9a0685944, +E = fb92fc530bb01d308afc30190ec261d4474346107f33809abe4bef288891e2cb, +T = f1be16549e065da6bf96466c9330194e92f2dde14fffb883922c98e6361f19f8, +U = e9a57b8486df4a58021fb1f57e3fb8ac5a30a73de5868d6542a196fbf3fc47fb, +
