From 4ccf267051276064eb42a0736492e53eb25b05e0 Mon Sep 17 00:00:00 2001 From: RandomLattice <128569685+RandomLattice@users.noreply.github.com> Date: Thu, 17 Oct 2024 16:52:56 +0700 Subject: [PATCH] PR feedback: add more wycheproof ECDH test cases Co-authored-by: Sean Andersen <6730974+andozw@users.noreply.github.com> --- src/modules/ecdh/tests_impl.h | 3 +- src/wycheproof/ecdh_secp256k1_test.h | 1037 ++++++++++++----------- tools/tests_wycheproof_generate_ecdh.py | 33 +- 3 files changed, 583 insertions(+), 490 deletions(-) diff --git a/src/modules/ecdh/tests_impl.h b/src/modules/ecdh/tests_impl.h index 7648cac651..c533e37908 100644 --- a/src/modules/ecdh/tests_impl.h +++ b/src/modules/ecdh/tests_impl.h @@ -170,8 +170,7 @@ static void test_ecdh_wycheproof(void) { expected_result = testvectors[t].expected_result; - /* fail if public key is valid, but doesn't parse */ - CHECK(parsed_ok || expected_result == 0); + CHECK(parsed_ok == expected_result); if (!parsed_ok && expected_result == 0) { continue; diff --git a/src/wycheproof/ecdh_secp256k1_test.h b/src/wycheproof/ecdh_secp256k1_test.h index dd13829680..02a087e53c 100644 --- a/src/wycheproof/ecdh_secp256k1_test.h +++ b/src/wycheproof/ecdh_secp256k1_test.h @@ -1,5 +1,5 @@ /* Note: this file was autogenerated using tests_wycheproof_ecdh.py. Do not edit. */ -#define SECP256K1_ECDH_WYCHEPROOF_NUMBER_TESTVECTORS (479) +#define SECP256K1_ECDH_WYCHEPROOF_NUMBER_TESTVECTORS (503) typedef struct { size_t pk_offset; @@ -9,6 +9,7 @@ typedef struct { size_t shared_offset; size_t shared_len; int expected_result; + int wycheproof_tcid; } wycheproof_ecdh_testvector; static const unsigned char wycheproof_ecdh_private_keys[] = { 0xf4,0xb7,0xff,0x7c,0xcc,0xc9,0x88,0x13,0xa6,0x9f,0xae,0x3d,0xf2,0x22,0xbf,0xe3,0xf4,0xe2,0x8f,0x76,0x4b,0xf9,0x1b,0x4a,0x10,0xd8,0x09,0x6c,0xe4,0x46,0xb2,0x54, @@ -32,6 +33,7 @@ static const unsigned char wycheproof_ecdh_private_keys[] = { 0xf4,0xb7,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xba,0xae,0xdc,0xe6,0xaf,0x48,0xa0,0x3b,0xbf,0xd2,0x5e,0x8c,0xd0,0x36,0x41,0x3b, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xba,0xae,0xdc,0xe6,0xaf,0x48,0xa0,0x3b,0xbf,0xd2,0x5e,0x8c,0xd0,0x36,0x41,0x3e, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xba,0xae,0xdc,0xe6,0xaf,0x48,0xa0,0x3b,0xbf,0xd2,0x5e,0x8c,0xd0,0x36,0x41,0x3f, + 0xc6,0xca,0xfb,0x74,0xe2,0xa5,0x0c,0x83,0xb3,0xd2,0x32,0xc4,0x58,0x52,0x37,0xf4,0x4d,0x4c,0x54,0x33,0xc4,0xb3,0xf5,0x0c,0xe9,0x78,0xe6,0xae,0xda,0x3a,0x4f,0x5d, 0xcf,0xe7,0x5e,0xe7,0x64,0x19,0x7a,0xa7,0x73,0x2a,0x54,0x78,0x55,0x6b,0x47,0x88,0x98,0x42,0x3d,0x2b,0xc0,0xe4,0x84,0xa6,0xeb,0xb3,0x67,0x4a,0x60,0x36,0xa6,0x5d, 0xd0,0x91,0x82,0xa4,0xd0,0xc9,0x4b,0xa8,0x5f,0x82,0xef,0xf9,0xfc,0x1b,0xdd,0xb0,0xb0,0x7d,0x3f,0x2a,0xf8,0x63,0x2f,0xc1,0xc7,0x3a,0x36,0x04,0xe8,0xf0,0xb3,0x35}; @@ -491,10 +493,27 @@ static const unsigned char wycheproof_ecdh_public_keys[] = { 0x04,0xd8,0x09,0x6a 0x04,0x35,0x67,0x0f,0x86,0xc5,0xf7,0x2b,0x93,0xab,0xe4,0x13,0x1d,0x2b,0xea,0x1f,0xce,0x87,0x6a,0xd4,0xe2,0x5b,0x40,0xd4,0x2d,0x44,0x7d,0x68,0xcf,0xf9,0x0c,0xa0,0xbe,0x0b,0x6d,0x3b,0x9e,0x57,0x0b,0xa0,0x04,0x87,0x7c,0x9a,0x69,0xe4,0x81,0xfe,0x21,0x5d,0xe0,0x3a,0x70,0x12,0x63,0x05,0xa4,0x52,0x82,0x6e,0x66,0xd9,0xb5,0x58,0x3e, 0x04,0xdf,0xca,0x67,0x8a,0x1b,0x8e,0x6f,0x67,0x99,0x6a,0x09,0x7f,0xc9,0xce,0x37,0x41,0x2d,0xe9,0xfb,0xd9,0xcf,0xa1,0xa2,0x1b,0x75,0x0c,0xef,0x48,0xe5,0xe5,0x95,0xa1,0x30,0x7d,0x8f,0x1d,0x02,0xc6,0xf0,0x71,0x46,0x65,0x5e,0x63,0x83,0xb0,0xef,0x30,0x35,0xbe,0xe7,0x06,0x7c,0x33,0x6f,0xdb,0x91,0x36,0x5e,0x19,0x7a,0x97,0xb6,0x16, 0x04,0x32,0xbd,0xd9,0x78,0xeb,0x62,0xb1,0xf3,0x69,0xa5,0x6d,0x09,0x49,0xab,0x85,0x51,0xa7,0xad,0x52,0x7d,0x96,0x02,0xe8,0x91,0xce,0x45,0x75,0x86,0xc2,0xa8,0x56,0x9e,0x98,0x1e,0x67,0xfa,0xe0,0x53,0xb0,0x3f,0xc3,0x3e,0x1a,0x29,0x1f,0x0a,0x3b,0xeb,0x58,0xfc,0xeb,0x2e,0x85,0xbb,0x12,0x05,0xda,0xce,0xe1,0x23,0x2d,0xfd,0x31,0x6b, - 0x04,0x49,0xc2,0x48,0xed,0xc6,0x59,0xe1,0x84,0x82,0xb7,0x10,0x57,0x48,0xa4,0xb9,0x5d,0x3a,0x46,0x95,0x2a,0x5b,0xa7,0x2d,0xa0,0xd7,0x02,0xdc,0x97,0xa6,0x4e,0x99,0x79,0x9d,0x8c,0xff,0x7a,0x5c,0x4b,0x92,0x5e,0x43,0x60,0xec,0xe2,0x5c,0xcf,0x30,0x7d,0x7a,0x9a,0x70,0x63,0x28,0x6b,0xbd,0x16,0xef,0x64,0xc6,0x5f,0x54,0x67,0x57,0xe4, 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2e, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2e, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f, + 0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, + 0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2e, + 0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f, + 0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, + 0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2e, + 0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f, + 0x04,0x49,0xc2,0x48,0xed,0xc6,0x59,0xe1,0x84,0x82,0xb7,0x10,0x57,0x48,0xa4,0xb9,0x5d,0x3a,0x46,0x95,0x2a,0x5b,0xa7,0x2d,0xa0,0xd7,0x02,0xdc,0x97,0xa6,0x4e,0x99,0x79,0x9d,0x8c,0xff,0x7a,0x5c,0x4b,0x92,0x5e,0x43,0x60,0xec,0xe2,0x5c,0xcf,0x30,0x7d,0x7a,0x9a,0x70,0x63,0x28,0x6b,0xbd,0x16,0xef,0x64,0xc6,0x5f,0x54,0x67,0x57,0xe4, + 0x04,0x49,0xc2,0x48,0xed,0xc6,0x59,0xe1,0x84,0x82,0xb7,0x10,0x57,0x48,0xa4,0xb9,0x5d,0x3a,0x46,0x95,0x2a,0x5b,0xa7,0x2d,0xa0,0xd7,0x02,0xdc,0x97,0xa6,0x4e,0x99,0x79,0x9d,0x8c,0xff,0x7a,0x5c,0x4b,0x92,0x5e,0x43,0x60,0xec,0xe2,0x5c,0xcf,0x30,0x7d,0x7a,0x9a,0x70,0x63,0x28,0x6b,0xbd,0x16,0xef,0x64,0xc6,0x5f,0x54,0x67,0x57,0xe2, 0x04,0x07,0x4f,0x56,0xdc,0x2e,0xa6,0x48,0xef,0x89,0xc3,0xb7,0x2e,0x23,0xbb,0xd2,0xda,0x36,0xf6,0x02,0x43,0xe4,0xd2,0x06,0x7b,0x70,0x60,0x4a,0xf1,0xc2,0x16,0x5c,0xec,0x2f,0x86,0x60,0x3d,0x60,0xc8,0xa6,0x11,0xd5,0xb8,0x4b,0xa3,0xd9,0x1d,0xfe,0x1a,0x48,0x08,0x25,0xbc,0xc4,0xaf,0x3b,0xcf, 0x04,0xcb,0xf6,0x60,0x65,0x95,0xa3,0xee,0x50,0xf9,0xfc,0xea,0xa2,0x79,0x8c,0x27,0x40,0xc8,0x25,0x40,0x51,0x6b,0x4e,0x5a,0x7d,0x36,0x1f,0xf2,0x4e,0x9d,0xd1,0x53,0x64,0xe5,0x40,0x8b,0x2e,0x67,0x9f,0x9d,0x53,0x10,0xd1,0xf6,0x89,0x3b,0x36,0xce,0x16,0xb4,0xa5,0x07,0x50,0x91,0x75,0xfc,0xb5,0x2a,0xea,0x53,0xb7,0x81,0x55,0x6b,0x39, + 0x04,0xfb,0x60,0x75,0xd2,0x6c,0x35,0x01,0xc0,0x14,0xe4,0x8c,0x79,0xb3,0x46,0x3c,0xd7,0x68,0x37,0x8c,0x39,0x0d,0x7e,0x6e,0xeb,0x37,0x97,0x17,0xd4,0x90,0xc4,0xe6,0x34,0x78,0x04,0x35,0x77,0x19,0x79,0x87,0x88,0x16,0x70,0xbc,0x13,0xfd,0x0b,0x5f,0x0b,0xa1,0x0f,0x06,0xbc,0xef,0x27,0x11,0xc2,0x8f,0x5e,0xfd,0x7e,0x31,0xd5,0x15,0x7c, 0x02,0x97,0x7c,0xb7,0xfb,0x9a,0x0e,0xc5,0xb2,0x08,0xe8,0x11,0xd6,0xa0,0x79,0x5e,0xb7,0x8d,0x76,0x42,0xe3,0xca,0xc4,0x2a,0x80,0x1b,0xcc,0x8f,0xc0,0xf0,0x64,0x72,0xd4}; static const unsigned char wycheproof_ecdh_shared_secrets[] = { 0x54,0x4d,0xfa,0xe2,0x2a,0xf6,0xaf,0x93,0x90,0x42,0xb1,0xd8,0x5b,0x71,0xa1,0xe4,0x9e,0x9a,0x56,0x14,0x12,0x3c,0x4d,0x6a,0xd0,0xc8,0xaf,0x65,0xba,0xf8,0x7d,0x65, @@ -970,966 +989,1020 @@ static const unsigned char wycheproof_ecdh_shared_secrets[] = { 0x54,0x4d,0xfa, 0x02,0x77,0x63,0x15,0xfe,0x14,0x7a,0x36,0xa4,0xb0,0x98,0x74,0x92,0xb6,0x50,0x3a,0xcd,0xea,0x60,0xf9,0x26,0x45,0x0e,0x5e,0xdd,0xb9,0xf8,0x8f,0xc8,0x21,0x78,0xd3, 0x39,0x88,0xc9,0xc7,0x05,0x0a,0x28,0x79,0x49,0x34,0xe5,0xbd,0x67,0x62,0x9b,0x55,0x6d,0x97,0xa4,0x85,0x8d,0x22,0x81,0x28,0x35,0xf4,0xa3,0x7d,0xca,0x35,0x19,0x43, 0x34,0x00,0x56,0x94,0xe3,0xca,0xc0,0x93,0x32,0xaa,0x42,0x80,0x7e,0x3a,0xfd,0xc3,0xb3,0xb3,0xbc,0x7c,0x7b,0xe8,0x87,0xd1,0xf9,0x8d,0x76,0x77,0x8c,0x55,0xcf,0xd7, - 0x4b,0x52,0x25,0x7d,0x8b,0x3b,0xa3,0x87,0x79,0x7f,0xdf,0x7a,0x75,0x2f,0x19,0x5d,0xdc,0x4f,0x7d,0x76,0x26,0x3d,0xe6,0x1d,0x0d,0x52,0xa5,0xec,0x14,0xa3,0x6c,0xbf}; + 0x4b,0x52,0x25,0x7d,0x8b,0x3b,0xa3,0x87,0x79,0x7f,0xdf,0x7a,0x75,0x2f,0x19,0x5d,0xdc,0x4f,0x7d,0x76,0x26,0x3d,0xe6,0x1d,0x0d,0x52,0xa5,0xec,0x14,0xa3,0x6c,0xbf, + 0x38,0x0c,0x53,0xe0,0xa5,0x09,0xeb,0xb3,0xb6,0x33,0x46,0x59,0x81,0x05,0x21,0x9b,0x43,0xd5,0x1a,0xe1,0x96,0xb4,0x55,0x7d,0x59,0xbb,0xd6,0x78,0x24,0x03,0x2d,0xff, + 0x38,0x0c,0x53,0xe0,0xa5,0x09,0xeb,0xb3,0xb6,0x33,0x46,0x59,0x81,0x05,0x21,0x9b,0x43,0xd5,0x1a,0xe1,0x96,0xb4,0x55,0x7d,0x59,0xbb,0xd6,0x78,0x24,0x03,0x2d,0xff, + 0x38,0x0c,0x53,0xe0,0xa5,0x09,0xeb,0xb3,0xb6,0x33,0x46,0x59,0x81,0x05,0x21,0x9b,0x43,0xd5,0x1a,0xe1,0x96,0xb4,0x55,0x7d,0x59,0xbb,0xd6,0x78,0x24,0x03,0x2d,0xff, + 0x38,0x0c,0x53,0xe0,0xa5,0x09,0xeb,0xb3,0xb6,0x33,0x46,0x59,0x81,0x05,0x21,0x9b,0x43,0xd5,0x1a,0xe1,0x96,0xb4,0x55,0x7d,0x59,0xbb,0xd6,0x78,0x24,0x03,0x2d,0xff, + 0x38,0x0c,0x53,0xe0,0xa5,0x09,0xeb,0xb3,0xb6,0x33,0x46,0x59,0x81,0x05,0x21,0x9b,0x43,0xd5,0x1a,0xe1,0x96,0xb4,0x55,0x7d,0x59,0xbb,0xd6,0x78,0x24,0x03,0x2d,0xff, + 0x38,0x0c,0x53,0xe0,0xa5,0x09,0xeb,0xb3,0xb6,0x33,0x46,0x59,0x81,0x05,0x21,0x9b,0x43,0xd5,0x1a,0xe1,0x96,0xb4,0x55,0x7d,0x59,0xbb,0xd6,0x78,0x24,0x03,0x2d,0xff}; static const wycheproof_ecdh_testvector testvectors[SECP256K1_ECDH_WYCHEPROOF_NUMBER_TESTVECTORS] = { /* tcId: 1. normal case */ - {0, 65, 0, 32, 0, 32, 1 }, + {0, 65, 0, 32, 0, 32, 1, 1 }, /* tcId: 2. compressed public key */ - {65, 33, 0, 32, 32, 32, 1 }, + {65, 33, 0, 32, 32, 32, 1, 2 }, /* tcId: 3. shared secret has x-coordinate that satisfies x**2 + a = 1 */ - {98, 65, 32, 32, 64, 32, 1 }, + {98, 65, 32, 32, 64, 32, 1, 3 }, /* tcId: 4. shared secret has x-coordinate that satisfies x**2 + a = 4 */ - {163, 65, 32, 32, 96, 32, 1 }, + {163, 65, 32, 32, 96, 32, 1, 4 }, /* tcId: 5. shared secret has x-coordinate that satisfies x**2 + a = 9 */ - {228, 65, 32, 32, 128, 32, 1 }, + {228, 65, 32, 32, 128, 32, 1, 5 }, /* tcId: 6. shared secret has x-coordinate p-3 */ - {293, 65, 32, 32, 160, 32, 1 }, + {293, 65, 32, 32, 160, 32, 1, 6 }, /* tcId: 7. shared secret has x-coordinate 2**16 + 0 */ - {358, 65, 32, 32, 192, 32, 1 }, + {358, 65, 32, 32, 192, 32, 1, 7 }, /* tcId: 8. shared secret has x-coordinate 2**32 + 7 */ - {423, 65, 32, 32, 224, 32, 1 }, + {423, 65, 32, 32, 224, 32, 1, 8 }, /* tcId: 9. shared secret has x-coordinate 2**64 + 1 */ - {488, 65, 32, 32, 256, 32, 1 }, + {488, 65, 32, 32, 256, 32, 1, 9 }, /* tcId: 10. shared secret has x-coordinate 2**96 + 1 */ - {553, 65, 32, 32, 288, 32, 1 }, + {553, 65, 32, 32, 288, 32, 1, 10 }, /* tcId: 11. shared secret has x-coordinate that satisfies x**2 + a = -6 */ - {618, 65, 32, 32, 320, 32, 1 }, + {618, 65, 32, 32, 320, 32, 1, 11 }, /* tcId: 12. shared secret has x-coordinate that satisfies x**2 + a = 2 */ - {683, 65, 32, 32, 352, 32, 1 }, + {683, 65, 32, 32, 352, 32, 1, 12 }, /* tcId: 13. shared secret has x-coordinate that satisfies x**2 + a = 8 */ - {748, 65, 32, 32, 384, 32, 1 }, + {748, 65, 32, 32, 384, 32, 1, 13 }, /* tcId: 14. shared secret has x-coordinate that satisfies x**2 = 2**96 + 2 */ - {813, 65, 32, 32, 416, 32, 1 }, + {813, 65, 32, 32, 416, 32, 1, 14 }, /* tcId: 15. shared secret has x-coordinate with repeating bit-pattern of size 2 */ - {878, 65, 32, 32, 448, 32, 1 }, + {878, 65, 32, 32, 448, 32, 1, 15 }, /* tcId: 16. shared secret has x-coordinate with repeating bit-pattern of size 2 */ - {943, 65, 32, 32, 480, 32, 1 }, + {943, 65, 32, 32, 480, 32, 1, 16 }, /* tcId: 17. shared secret has x-coordinate with repeating bit-pattern of size 4 */ - {1008, 65, 32, 32, 512, 32, 1 }, + {1008, 65, 32, 32, 512, 32, 1, 17 }, /* tcId: 18. shared secret has x-coordinate with repeating bit-pattern of size 4 */ - {1073, 65, 32, 32, 544, 32, 1 }, + {1073, 65, 32, 32, 544, 32, 1, 18 }, /* tcId: 19. shared secret has x-coordinate with repeating bit-pattern of size 8 */ - {1138, 65, 32, 32, 576, 32, 1 }, + {1138, 65, 32, 32, 576, 32, 1, 19 }, /* tcId: 20. shared secret has x-coordinate with repeating bit-pattern of size 8 */ - {1203, 65, 32, 32, 608, 32, 1 }, + {1203, 65, 32, 32, 608, 32, 1, 20 }, /* tcId: 21. shared secret has x-coordinate with repeating bit-pattern of size 16 */ - {1268, 65, 32, 32, 640, 32, 1 }, + {1268, 65, 32, 32, 640, 32, 1, 21 }, /* tcId: 22. shared secret has x-coordinate with repeating bit-pattern of size 16 */ - {1333, 65, 32, 32, 672, 32, 1 }, + {1333, 65, 32, 32, 672, 32, 1, 22 }, /* tcId: 23. shared secret has x-coordinate with repeating bit-pattern of size 30 */ - {1398, 65, 32, 32, 704, 32, 1 }, + {1398, 65, 32, 32, 704, 32, 1, 23 }, /* tcId: 24. shared secret has x-coordinate with repeating bit-pattern of size 30 */ - {1463, 65, 32, 32, 736, 32, 1 }, + {1463, 65, 32, 32, 736, 32, 1, 24 }, /* tcId: 25. shared secret has x-coordinate with repeating bit-pattern of size 32 */ - {1528, 65, 32, 32, 768, 32, 1 }, + {1528, 65, 32, 32, 768, 32, 1, 25 }, /* tcId: 26. shared secret has x-coordinate with repeating bit-pattern of size 32 */ - {1593, 65, 32, 32, 800, 32, 1 }, + {1593, 65, 32, 32, 800, 32, 1, 26 }, /* tcId: 27. shared secret has x-coordinate with repeating bit-pattern of size 51 */ - {1658, 65, 32, 32, 832, 32, 1 }, + {1658, 65, 32, 32, 832, 32, 1, 27 }, /* tcId: 28. shared secret has x-coordinate with repeating bit-pattern of size 51 */ - {1723, 65, 32, 32, 864, 32, 1 }, + {1723, 65, 32, 32, 864, 32, 1, 28 }, /* tcId: 29. shared secret has x-coordinate with repeating bit-pattern of size 52 */ - {1788, 65, 32, 32, 896, 32, 1 }, + {1788, 65, 32, 32, 896, 32, 1, 29 }, /* tcId: 30. shared secret has x-coordinate with repeating bit-pattern of size 52 */ - {1853, 65, 32, 32, 928, 32, 1 }, + {1853, 65, 32, 32, 928, 32, 1, 30 }, /* tcId: 31. shared secret has x-coordinate with repeating bit-pattern of size 60 */ - {1918, 65, 32, 32, 960, 32, 1 }, + {1918, 65, 32, 32, 960, 32, 1, 31 }, /* tcId: 32. shared secret has x-coordinate with repeating bit-pattern of size 60 */ - {1983, 65, 32, 32, 992, 32, 1 }, + {1983, 65, 32, 32, 992, 32, 1, 32 }, /* tcId: 33. shared secret has x-coordinate with repeating bit-pattern of size 62 */ - {2048, 65, 32, 32, 1024, 32, 1 }, + {2048, 65, 32, 32, 1024, 32, 1, 33 }, /* tcId: 34. shared secret has x-coordinate with repeating bit-pattern of size 62 */ - {2113, 65, 32, 32, 1056, 32, 1 }, + {2113, 65, 32, 32, 1056, 32, 1, 34 }, /* tcId: 35. shared secret has x-coordinate with repeating bit-pattern of size 64 */ - {2178, 65, 32, 32, 1088, 32, 1 }, + {2178, 65, 32, 32, 1088, 32, 1, 35 }, /* tcId: 36. shared secret has x-coordinate with repeating bit-pattern of size 64 */ - {2243, 65, 32, 32, 1120, 32, 1 }, + {2243, 65, 32, 32, 1120, 32, 1, 36 }, /* tcId: 37. shared secret has x-coordinate with repeating bit-pattern of size 112 */ - {2308, 65, 32, 32, 1152, 32, 1 }, + {2308, 65, 32, 32, 1152, 32, 1, 37 }, /* tcId: 38. shared secret has x-coordinate with repeating bit-pattern of size 112 */ - {2373, 65, 32, 32, 1184, 32, 1 }, + {2373, 65, 32, 32, 1184, 32, 1, 38 }, /* tcId: 39. shared secret has x-coordinate with repeating bit-pattern of size 128 */ - {2438, 65, 32, 32, 1216, 32, 1 }, + {2438, 65, 32, 32, 1216, 32, 1, 39 }, /* tcId: 40. shared secret has x-coordinate with repeating bit-pattern of size 128 */ - {2503, 65, 32, 32, 1248, 32, 1 }, + {2503, 65, 32, 32, 1248, 32, 1, 40 }, /* tcId: 41. shared secret has an x-coordinate of approx p//3 */ - {2568, 65, 32, 32, 1280, 32, 1 }, + {2568, 65, 32, 32, 1280, 32, 1, 41 }, /* tcId: 42. shared secret has an x-coordinate of approx p//5 */ - {2633, 65, 32, 32, 1312, 32, 1 }, + {2633, 65, 32, 32, 1312, 32, 1, 42 }, /* tcId: 43. shared secret has an x-coordinate of approx p//7 */ - {2698, 65, 32, 32, 1344, 32, 1 }, + {2698, 65, 32, 32, 1344, 32, 1, 43 }, /* tcId: 44. shared secret has an x-coordinate of approx p//9 */ - {2763, 65, 32, 32, 1376, 32, 1 }, + {2763, 65, 32, 32, 1376, 32, 1, 44 }, /* tcId: 45. y-coordinate of the public key has many trailing 1's */ - {2828, 65, 32, 32, 1408, 32, 1 }, + {2828, 65, 32, 32, 1408, 32, 1, 45 }, /* tcId: 46. y-coordinate of the public key has many trailing 1's */ - {2893, 65, 64, 32, 1440, 32, 1 }, + {2893, 65, 64, 32, 1440, 32, 1, 46 }, /* tcId: 47. y-coordinate of the public key is small */ - {2958, 65, 32, 32, 1472, 32, 1 }, + {2958, 65, 32, 32, 1472, 32, 1, 47 }, /* tcId: 48. y-coordinate of the public key is small */ - {3023, 65, 32, 32, 1504, 32, 1 }, + {3023, 65, 32, 32, 1504, 32, 1, 48 }, /* tcId: 49. y-coordinate of the public key is small */ - {3088, 65, 64, 32, 1536, 32, 1 }, + {3088, 65, 64, 32, 1536, 32, 1, 49 }, /* tcId: 50. y-coordinate of the public key is small */ - {3153, 65, 64, 32, 1568, 32, 1 }, + {3153, 65, 64, 32, 1568, 32, 1, 50 }, /* tcId: 51. y-coordinate of the public key is large */ - {3218, 65, 32, 32, 1600, 32, 1 }, + {3218, 65, 32, 32, 1600, 32, 1, 51 }, /* tcId: 52. y-coordinate of the public key is large */ - {3283, 65, 32, 32, 1632, 32, 1 }, + {3283, 65, 32, 32, 1632, 32, 1, 52 }, /* tcId: 53. y-coordinate of the public key is large */ - {3348, 65, 64, 32, 1664, 32, 1 }, + {3348, 65, 64, 32, 1664, 32, 1, 53 }, /* tcId: 54. y-coordinate of the public key is large */ - {3413, 65, 64, 32, 1696, 32, 1 }, + {3413, 65, 64, 32, 1696, 32, 1, 54 }, /* tcId: 55. y-coordinate of the public key has many trailing 0's */ - {3478, 65, 32, 32, 1728, 32, 1 }, + {3478, 65, 32, 32, 1728, 32, 1, 55 }, /* tcId: 56. y-coordinate of the public key has many trailing 0's */ - {3543, 65, 64, 32, 1760, 32, 1 }, + {3543, 65, 64, 32, 1760, 32, 1, 56 }, /* tcId: 57. ephemeral key has x-coordinate that satisfies x**2 + a = 1 */ - {3608, 65, 64, 32, 1792, 32, 1 }, + {3608, 65, 64, 32, 1792, 32, 1, 57 }, /* tcId: 58. ephemeral key has x-coordinate that satisfies x**2 + a = 4 */ - {3673, 65, 64, 32, 1824, 32, 1 }, + {3673, 65, 64, 32, 1824, 32, 1, 58 }, /* tcId: 59. ephemeral key has x-coordinate that satisfies x**2 + a = 9 */ - {3738, 65, 64, 32, 1856, 32, 1 }, + {3738, 65, 64, 32, 1856, 32, 1, 59 }, /* tcId: 60. ephemeral key has x-coordinate p-3 */ - {3803, 65, 64, 32, 1888, 32, 1 }, + {3803, 65, 64, 32, 1888, 32, 1, 60 }, /* tcId: 61. ephemeral key has x-coordinate 2**16 + 0 */ - {3868, 65, 64, 32, 1920, 32, 1 }, + {3868, 65, 64, 32, 1920, 32, 1, 61 }, /* tcId: 62. ephemeral key has x-coordinate 2**32 + 7 */ - {3933, 65, 64, 32, 1952, 32, 1 }, + {3933, 65, 64, 32, 1952, 32, 1, 62 }, /* tcId: 63. ephemeral key has x-coordinate 2**64 + 1 */ - {3998, 65, 64, 32, 1984, 32, 1 }, + {3998, 65, 64, 32, 1984, 32, 1, 63 }, /* tcId: 64. ephemeral key has x-coordinate 2**96 + 1 */ - {4063, 65, 64, 32, 2016, 32, 1 }, + {4063, 65, 64, 32, 2016, 32, 1, 64 }, /* tcId: 65. ephemeral key has x-coordinate that satisfies x**2 + a = -6 */ - {4128, 65, 64, 32, 2048, 32, 1 }, + {4128, 65, 64, 32, 2048, 32, 1, 65 }, /* tcId: 66. ephemeral key has x-coordinate that satisfies x**2 + a = 2 */ - {4193, 65, 64, 32, 2080, 32, 1 }, + {4193, 65, 64, 32, 2080, 32, 1, 66 }, /* tcId: 67. ephemeral key has x-coordinate that satisfies x**2 + a = 8 */ - {4258, 65, 64, 32, 2112, 32, 1 }, + {4258, 65, 64, 32, 2112, 32, 1, 67 }, /* tcId: 68. ephemeral key has x-coordinate that satisfies x**2 = 2**96 + 2 */ - {4323, 65, 64, 32, 2144, 32, 1 }, + {4323, 65, 64, 32, 2144, 32, 1, 68 }, /* tcId: 69. ephemeral key has x-coordinate with repeating bit-pattern of size 2 */ - {4388, 65, 64, 32, 2176, 32, 1 }, + {4388, 65, 64, 32, 2176, 32, 1, 69 }, /* tcId: 70. ephemeral key has x-coordinate with repeating bit-pattern of size 2 */ - {4453, 65, 64, 32, 2208, 32, 1 }, + {4453, 65, 64, 32, 2208, 32, 1, 70 }, /* tcId: 71. ephemeral key has x-coordinate with repeating bit-pattern of size 4 */ - {4518, 65, 64, 32, 2240, 32, 1 }, + {4518, 65, 64, 32, 2240, 32, 1, 71 }, /* tcId: 72. ephemeral key has x-coordinate with repeating bit-pattern of size 4 */ - {4583, 65, 64, 32, 2272, 32, 1 }, + {4583, 65, 64, 32, 2272, 32, 1, 72 }, /* tcId: 73. ephemeral key has x-coordinate with repeating bit-pattern of size 8 */ - {4648, 65, 64, 32, 2304, 32, 1 }, + {4648, 65, 64, 32, 2304, 32, 1, 73 }, /* tcId: 74. ephemeral key has x-coordinate with repeating bit-pattern of size 8 */ - {4713, 65, 64, 32, 2336, 32, 1 }, + {4713, 65, 64, 32, 2336, 32, 1, 74 }, /* tcId: 75. ephemeral key has x-coordinate with repeating bit-pattern of size 16 */ - {4778, 65, 64, 32, 2368, 32, 1 }, + {4778, 65, 64, 32, 2368, 32, 1, 75 }, /* tcId: 76. ephemeral key has x-coordinate with repeating bit-pattern of size 16 */ - {4843, 65, 64, 32, 2400, 32, 1 }, + {4843, 65, 64, 32, 2400, 32, 1, 76 }, /* tcId: 77. ephemeral key has x-coordinate with repeating bit-pattern of size 30 */ - {4908, 65, 64, 32, 2432, 32, 1 }, + {4908, 65, 64, 32, 2432, 32, 1, 77 }, /* tcId: 78. ephemeral key has x-coordinate with repeating bit-pattern of size 30 */ - {4973, 65, 64, 32, 2464, 32, 1 }, + {4973, 65, 64, 32, 2464, 32, 1, 78 }, /* tcId: 79. ephemeral key has x-coordinate with repeating bit-pattern of size 32 */ - {5038, 65, 64, 32, 2496, 32, 1 }, + {5038, 65, 64, 32, 2496, 32, 1, 79 }, /* tcId: 80. ephemeral key has x-coordinate with repeating bit-pattern of size 32 */ - {5103, 65, 64, 32, 2528, 32, 1 }, + {5103, 65, 64, 32, 2528, 32, 1, 80 }, /* tcId: 81. ephemeral key has x-coordinate with repeating bit-pattern of size 51 */ - {5168, 65, 64, 32, 2560, 32, 1 }, + {5168, 65, 64, 32, 2560, 32, 1, 81 }, /* tcId: 82. ephemeral key has x-coordinate with repeating bit-pattern of size 51 */ - {5233, 65, 64, 32, 2592, 32, 1 }, + {5233, 65, 64, 32, 2592, 32, 1, 82 }, /* tcId: 83. ephemeral key has x-coordinate with repeating bit-pattern of size 52 */ - {5298, 65, 64, 32, 2624, 32, 1 }, + {5298, 65, 64, 32, 2624, 32, 1, 83 }, /* tcId: 84. ephemeral key has x-coordinate with repeating bit-pattern of size 52 */ - {5363, 65, 64, 32, 2656, 32, 1 }, + {5363, 65, 64, 32, 2656, 32, 1, 84 }, /* tcId: 85. ephemeral key has x-coordinate with repeating bit-pattern of size 60 */ - {5428, 65, 64, 32, 2688, 32, 1 }, + {5428, 65, 64, 32, 2688, 32, 1, 85 }, /* tcId: 86. ephemeral key has x-coordinate with repeating bit-pattern of size 60 */ - {5493, 65, 64, 32, 2720, 32, 1 }, + {5493, 65, 64, 32, 2720, 32, 1, 86 }, /* tcId: 87. ephemeral key has x-coordinate with repeating bit-pattern of size 62 */ - {5558, 65, 64, 32, 2752, 32, 1 }, + {5558, 65, 64, 32, 2752, 32, 1, 87 }, /* tcId: 88. ephemeral key has x-coordinate with repeating bit-pattern of size 62 */ - {5623, 65, 64, 32, 2784, 32, 1 }, + {5623, 65, 64, 32, 2784, 32, 1, 88 }, /* tcId: 89. ephemeral key has x-coordinate with repeating bit-pattern of size 64 */ - {5688, 65, 64, 32, 2816, 32, 1 }, + {5688, 65, 64, 32, 2816, 32, 1, 89 }, /* tcId: 90. ephemeral key has x-coordinate with repeating bit-pattern of size 64 */ - {5753, 65, 64, 32, 2848, 32, 1 }, + {5753, 65, 64, 32, 2848, 32, 1, 90 }, /* tcId: 91. ephemeral key has x-coordinate with repeating bit-pattern of size 112 */ - {5818, 65, 64, 32, 2880, 32, 1 }, + {5818, 65, 64, 32, 2880, 32, 1, 91 }, /* tcId: 92. ephemeral key has x-coordinate with repeating bit-pattern of size 112 */ - {5883, 65, 64, 32, 2912, 32, 1 }, + {5883, 65, 64, 32, 2912, 32, 1, 92 }, /* tcId: 93. ephemeral key has x-coordinate with repeating bit-pattern of size 128 */ - {5948, 65, 64, 32, 2944, 32, 1 }, + {5948, 65, 64, 32, 2944, 32, 1, 93 }, /* tcId: 94. ephemeral key has x-coordinate with repeating bit-pattern of size 128 */ - {6013, 65, 64, 32, 2976, 32, 1 }, + {6013, 65, 64, 32, 2976, 32, 1, 94 }, /* tcId: 95. ephemeral key has an x-coordinate of approx p//3 */ - {6078, 65, 64, 32, 3008, 32, 1 }, + {6078, 65, 64, 32, 3008, 32, 1, 95 }, /* tcId: 96. ephemeral key has an x-coordinate of approx p//5 */ - {6143, 65, 64, 32, 3040, 32, 1 }, + {6143, 65, 64, 32, 3040, 32, 1, 96 }, /* tcId: 97. ephemeral key has an x-coordinate of approx p//7 */ - {6208, 65, 64, 32, 3072, 32, 1 }, + {6208, 65, 64, 32, 3072, 32, 1, 97 }, /* tcId: 98. ephemeral key has an x-coordinate of approx p//9 */ - {6273, 65, 64, 32, 3104, 32, 1 }, + {6273, 65, 64, 32, 3104, 32, 1, 98 }, /* tcId: 99. edge case for Jacobian and projective coordinates */ - {6338, 65, 96, 32, 3136, 32, 1 }, + {6338, 65, 96, 32, 3136, 32, 1, 99 }, /* tcId: 100. edge case for Jacobian and projective coordinates */ - {6403, 65, 96, 32, 3168, 32, 1 }, + {6403, 65, 96, 32, 3168, 32, 1, 100 }, /* tcId: 101. edge case for Jacobian and projective coordinates */ - {6468, 65, 96, 32, 3200, 32, 1 }, + {6468, 65, 96, 32, 3200, 32, 1, 101 }, /* tcId: 102. edge case for Jacobian and projective coordinates */ - {6533, 65, 128, 32, 3232, 32, 1 }, + {6533, 65, 128, 32, 3232, 32, 1, 102 }, /* tcId: 103. edge case for Jacobian and projective coordinates */ - {6598, 65, 128, 32, 3264, 32, 1 }, + {6598, 65, 128, 32, 3264, 32, 1, 103 }, /* tcId: 104. edge case for Jacobian and projective coordinates */ - {6663, 65, 128, 32, 3296, 32, 1 }, + {6663, 65, 128, 32, 3296, 32, 1, 104 }, /* tcId: 105. edge case for Jacobian and projective coordinates in left to right addition chain */ - {6728, 65, 96, 32, 3328, 32, 1 }, + {6728, 65, 96, 32, 3328, 32, 1, 105 }, /* tcId: 106. edge case for Jacobian and projective coordinates in left to right addition chain */ - {6793, 65, 96, 32, 3360, 32, 1 }, + {6793, 65, 96, 32, 3360, 32, 1, 106 }, /* tcId: 107. edge case for Jacobian and projective coordinates in left to right addition chain */ - {6858, 65, 96, 32, 3392, 32, 1 }, + {6858, 65, 96, 32, 3392, 32, 1, 107 }, /* tcId: 108. edge case for Jacobian and projective coordinates in left to right addition chain */ - {6923, 65, 96, 32, 3424, 32, 1 }, + {6923, 65, 96, 32, 3424, 32, 1, 108 }, /* tcId: 109. edge case for Jacobian and projective coordinates in left to right addition chain */ - {6988, 65, 96, 32, 3456, 32, 1 }, + {6988, 65, 96, 32, 3456, 32, 1, 109 }, /* tcId: 110. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7053, 65, 96, 32, 3488, 32, 1 }, + {7053, 65, 96, 32, 3488, 32, 1, 110 }, /* tcId: 111. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7118, 65, 96, 32, 3520, 32, 1 }, + {7118, 65, 96, 32, 3520, 32, 1, 111 }, /* tcId: 112. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7183, 65, 96, 32, 3552, 32, 1 }, + {7183, 65, 96, 32, 3552, 32, 1, 112 }, /* tcId: 113. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7248, 65, 96, 32, 3584, 32, 1 }, + {7248, 65, 96, 32, 3584, 32, 1, 113 }, /* tcId: 114. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7313, 65, 96, 32, 3616, 32, 1 }, + {7313, 65, 96, 32, 3616, 32, 1, 114 }, /* tcId: 115. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7378, 65, 96, 32, 3648, 32, 1 }, + {7378, 65, 96, 32, 3648, 32, 1, 115 }, /* tcId: 116. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7443, 65, 96, 32, 3680, 32, 1 }, + {7443, 65, 96, 32, 3680, 32, 1, 116 }, /* tcId: 117. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7508, 65, 96, 32, 3712, 32, 1 }, + {7508, 65, 96, 32, 3712, 32, 1, 117 }, /* tcId: 118. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7573, 65, 96, 32, 3744, 32, 1 }, + {7573, 65, 96, 32, 3744, 32, 1, 118 }, /* tcId: 119. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7638, 65, 96, 32, 3776, 32, 1 }, + {7638, 65, 96, 32, 3776, 32, 1, 119 }, /* tcId: 120. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7703, 65, 96, 32, 3808, 32, 1 }, + {7703, 65, 96, 32, 3808, 32, 1, 120 }, /* tcId: 121. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7768, 65, 128, 32, 3840, 32, 1 }, + {7768, 65, 128, 32, 3840, 32, 1, 121 }, /* tcId: 122. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7833, 65, 128, 32, 3872, 32, 1 }, + {7833, 65, 128, 32, 3872, 32, 1, 122 }, /* tcId: 123. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7898, 65, 128, 32, 3904, 32, 1 }, + {7898, 65, 128, 32, 3904, 32, 1, 123 }, /* tcId: 124. edge case for Jacobian and projective coordinates in left to right addition chain */ - {7963, 65, 128, 32, 3936, 32, 1 }, + {7963, 65, 128, 32, 3936, 32, 1, 124 }, /* tcId: 125. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8028, 65, 128, 32, 3968, 32, 1 }, + {8028, 65, 128, 32, 3968, 32, 1, 125 }, /* tcId: 126. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8093, 65, 128, 32, 4000, 32, 1 }, + {8093, 65, 128, 32, 4000, 32, 1, 126 }, /* tcId: 127. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8158, 65, 128, 32, 4032, 32, 1 }, + {8158, 65, 128, 32, 4032, 32, 1, 127 }, /* tcId: 128. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8223, 65, 128, 32, 4064, 32, 1 }, + {8223, 65, 128, 32, 4064, 32, 1, 128 }, /* tcId: 129. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8288, 65, 128, 32, 4096, 32, 1 }, + {8288, 65, 128, 32, 4096, 32, 1, 129 }, /* tcId: 130. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8353, 65, 128, 32, 4128, 32, 1 }, + {8353, 65, 128, 32, 4128, 32, 1, 130 }, /* tcId: 131. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8418, 65, 128, 32, 4160, 32, 1 }, + {8418, 65, 128, 32, 4160, 32, 1, 131 }, /* tcId: 132. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8483, 65, 128, 32, 4192, 32, 1 }, + {8483, 65, 128, 32, 4192, 32, 1, 132 }, /* tcId: 133. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8548, 65, 128, 32, 4224, 32, 1 }, + {8548, 65, 128, 32, 4224, 32, 1, 133 }, /* tcId: 134. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8613, 65, 128, 32, 4256, 32, 1 }, + {8613, 65, 128, 32, 4256, 32, 1, 134 }, /* tcId: 135. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8678, 65, 128, 32, 4288, 32, 1 }, + {8678, 65, 128, 32, 4288, 32, 1, 135 }, /* tcId: 136. edge case for Jacobian and projective coordinates in left to right addition chain */ - {8743, 65, 128, 32, 4320, 32, 1 }, + {8743, 65, 128, 32, 4320, 32, 1, 136 }, /* tcId: 137. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {8808, 65, 128, 32, 4352, 32, 1 }, + {8808, 65, 128, 32, 4352, 32, 1, 137 }, /* tcId: 138. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {8873, 65, 128, 32, 4384, 32, 1 }, + {8873, 65, 128, 32, 4384, 32, 1, 138 }, /* tcId: 139. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {8938, 65, 128, 32, 4416, 32, 1 }, + {8938, 65, 128, 32, 4416, 32, 1, 139 }, /* tcId: 140. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9003, 65, 128, 32, 4448, 32, 1 }, + {9003, 65, 128, 32, 4448, 32, 1, 140 }, /* tcId: 141. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9068, 65, 128, 32, 4480, 32, 1 }, + {9068, 65, 128, 32, 4480, 32, 1, 141 }, /* tcId: 142. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9133, 65, 128, 32, 4512, 32, 1 }, + {9133, 65, 128, 32, 4512, 32, 1, 142 }, /* tcId: 143. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9198, 65, 128, 32, 4544, 32, 1 }, + {9198, 65, 128, 32, 4544, 32, 1, 143 }, /* tcId: 144. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9263, 65, 128, 32, 4576, 32, 1 }, + {9263, 65, 128, 32, 4576, 32, 1, 144 }, /* tcId: 145. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9328, 65, 128, 32, 4608, 32, 1 }, + {9328, 65, 128, 32, 4608, 32, 1, 145 }, /* tcId: 146. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9393, 65, 128, 32, 4640, 32, 1 }, + {9393, 65, 128, 32, 4640, 32, 1, 146 }, /* tcId: 147. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9458, 65, 128, 32, 4672, 32, 1 }, + {9458, 65, 128, 32, 4672, 32, 1, 147 }, /* tcId: 148. edge case for Jacobian and projective coordinates in precomputation or right to left addition chain */ - {9523, 65, 128, 32, 4704, 32, 1 }, + {9523, 65, 128, 32, 4704, 32, 1, 148 }, /* tcId: 149. edge case for Jacobian and projective coordinates in right to left addition chain */ - {9588, 65, 128, 32, 4736, 32, 1 }, + {9588, 65, 128, 32, 4736, 32, 1, 149 }, /* tcId: 150. edge case for Jacobian and projective coordinates in right to left addition chain */ - {9653, 65, 128, 32, 4768, 32, 1 }, + {9653, 65, 128, 32, 4768, 32, 1, 150 }, /* tcId: 151. edge case for Jacobian and projective coordinates in right to left addition chain */ - {9718, 65, 128, 32, 4800, 32, 1 }, + {9718, 65, 128, 32, 4800, 32, 1, 151 }, /* tcId: 152. edge case for Jacobian and projective coordinates in right to left addition chain */ - {9783, 65, 128, 32, 4832, 32, 1 }, + {9783, 65, 128, 32, 4832, 32, 1, 152 }, /* tcId: 153. edge case for Jacobian and projective coordinates in right to left addition chain */ - {9848, 65, 128, 32, 4864, 32, 1 }, + {9848, 65, 128, 32, 4864, 32, 1, 153 }, /* tcId: 154. edge case for Jacobian and projective coordinates in right to left addition chain */ - {9913, 65, 128, 32, 4896, 32, 1 }, + {9913, 65, 128, 32, 4896, 32, 1, 154 }, /* tcId: 155. edge case for Jacobian and projective coordinates in right to left addition chain */ - {9978, 65, 128, 32, 4928, 32, 1 }, + {9978, 65, 128, 32, 4928, 32, 1, 155 }, /* tcId: 156. edge case for Jacobian and projective coordinates in right to left addition chain */ - {10043, 65, 128, 32, 4960, 32, 1 }, + {10043, 65, 128, 32, 4960, 32, 1, 156 }, /* tcId: 157. edge case for Jacobian and projective coordinates in right to left addition chain */ - {10108, 65, 128, 32, 4992, 32, 1 }, + {10108, 65, 128, 32, 4992, 32, 1, 157 }, /* tcId: 158. edge case for Jacobian and projective coordinates in right to left addition chain */ - {10173, 65, 128, 32, 5024, 32, 1 }, + {10173, 65, 128, 32, 5024, 32, 1, 158 }, /* tcId: 159. edge case for computation of x with projective coordinates */ - {10238, 65, 128, 32, 5056, 32, 1 }, + {10238, 65, 128, 32, 5056, 32, 1, 159 }, /* tcId: 160. edge case for computation of x with projective coordinates */ - {10303, 65, 128, 32, 5088, 32, 1 }, + {10303, 65, 128, 32, 5088, 32, 1, 160 }, /* tcId: 161. edge case for computation of x with projective coordinates */ - {10368, 65, 128, 32, 5120, 32, 1 }, + {10368, 65, 128, 32, 5120, 32, 1, 161 }, /* tcId: 162. edge case for computation of x with projective coordinates */ - {10433, 65, 128, 32, 5152, 32, 1 }, + {10433, 65, 128, 32, 5152, 32, 1, 162 }, /* tcId: 163. edge case for computation of x with projective coordinates */ - {10498, 65, 128, 32, 5184, 32, 1 }, + {10498, 65, 128, 32, 5184, 32, 1, 163 }, /* tcId: 164. edge case for computation of x with projective coordinates */ - {10563, 65, 128, 32, 5216, 32, 1 }, + {10563, 65, 128, 32, 5216, 32, 1, 164 }, /* tcId: 165. edge case for computation of x with projective coordinates */ - {10628, 65, 128, 32, 5248, 32, 1 }, + {10628, 65, 128, 32, 5248, 32, 1, 165 }, /* tcId: 166. edge case for computation of x with projective coordinates */ - {10693, 65, 128, 32, 5280, 32, 1 }, + {10693, 65, 128, 32, 5280, 32, 1, 166 }, /* tcId: 167. edge case for computation of x with projective coordinates */ - {10758, 65, 128, 32, 5312, 32, 1 }, + {10758, 65, 128, 32, 5312, 32, 1, 167 }, /* tcId: 168. edge case for computation of x with projective coordinates in left to right addition chain */ - {10823, 65, 128, 32, 5344, 32, 1 }, + {10823, 65, 128, 32, 5344, 32, 1, 168 }, /* tcId: 169. edge case for computation of x with projective coordinates in left to right addition chain */ - {10888, 65, 128, 32, 5376, 32, 1 }, + {10888, 65, 128, 32, 5376, 32, 1, 169 }, /* tcId: 170. edge case for computation of x with projective coordinates in left to right addition chain */ - {10953, 65, 128, 32, 5408, 32, 1 }, + {10953, 65, 128, 32, 5408, 32, 1, 170 }, /* tcId: 171. edge case for computation of x with projective coordinates in left to right addition chain */ - {11018, 65, 128, 32, 5440, 32, 1 }, + {11018, 65, 128, 32, 5440, 32, 1, 171 }, /* tcId: 172. edge case for computation of x with projective coordinates in left to right addition chain */ - {11083, 65, 128, 32, 5472, 32, 1 }, + {11083, 65, 128, 32, 5472, 32, 1, 172 }, /* tcId: 173. edge case for computation of x with projective coordinates in left to right addition chain */ - {11148, 65, 128, 32, 5504, 32, 1 }, + {11148, 65, 128, 32, 5504, 32, 1, 173 }, /* tcId: 174. edge case for computation of x with projective coordinates in left to right addition chain */ - {11213, 65, 128, 32, 5536, 32, 1 }, + {11213, 65, 128, 32, 5536, 32, 1, 174 }, /* tcId: 175. edge case for computation of x with projective coordinates in left to right addition chain */ - {11278, 65, 128, 32, 5568, 32, 1 }, + {11278, 65, 128, 32, 5568, 32, 1, 175 }, /* tcId: 176. edge case for computation of x with projective coordinates in left to right addition chain */ - {11343, 65, 128, 32, 5600, 32, 1 }, + {11343, 65, 128, 32, 5600, 32, 1, 176 }, /* tcId: 177. edge case for computation of x with projective coordinates in left to right addition chain */ - {11408, 65, 128, 32, 5632, 32, 1 }, + {11408, 65, 128, 32, 5632, 32, 1, 177 }, /* tcId: 178. edge case for computation of x with projective coordinates in left to right addition chain */ - {11473, 65, 128, 32, 5664, 32, 1 }, + {11473, 65, 128, 32, 5664, 32, 1, 178 }, /* tcId: 179. edge case for computation of x with projective coordinates in left to right addition chain */ - {11538, 65, 128, 32, 5696, 32, 1 }, + {11538, 65, 128, 32, 5696, 32, 1, 179 }, /* tcId: 180. edge case for computation of x with projective coordinates in left to right addition chain */ - {11603, 65, 128, 32, 5728, 32, 1 }, + {11603, 65, 128, 32, 5728, 32, 1, 180 }, /* tcId: 181. edge case for computation of x with projective coordinates in left to right addition chain */ - {11668, 65, 128, 32, 5760, 32, 1 }, + {11668, 65, 128, 32, 5760, 32, 1, 181 }, /* tcId: 182. edge case for computation of x with projective coordinates in left to right addition chain */ - {11733, 65, 128, 32, 5792, 32, 1 }, + {11733, 65, 128, 32, 5792, 32, 1, 182 }, /* tcId: 183. edge case for computation of x with projective coordinates in left to right addition chain */ - {11798, 65, 128, 32, 5824, 32, 1 }, + {11798, 65, 128, 32, 5824, 32, 1, 183 }, /* tcId: 184. edge case for computation of x with projective coordinates in left to right addition chain */ - {11863, 65, 128, 32, 5856, 32, 1 }, + {11863, 65, 128, 32, 5856, 32, 1, 184 }, /* tcId: 185. edge case for computation of x with projective coordinates in left to right addition chain */ - {11928, 65, 128, 32, 5888, 32, 1 }, + {11928, 65, 128, 32, 5888, 32, 1, 185 }, /* tcId: 186. edge case for computation of x with projective coordinates in left to right addition chain */ - {11993, 65, 128, 32, 5920, 32, 1 }, + {11993, 65, 128, 32, 5920, 32, 1, 186 }, /* tcId: 187. edge case for computation of x with projective coordinates in left to right addition chain */ - {12058, 65, 128, 32, 5952, 32, 1 }, + {12058, 65, 128, 32, 5952, 32, 1, 187 }, /* tcId: 188. edge case for computation of x with projective coordinates in left to right addition chain */ - {12123, 65, 128, 32, 5984, 32, 1 }, + {12123, 65, 128, 32, 5984, 32, 1, 188 }, /* tcId: 189. edge case for computation of x with projective coordinates in left to right addition chain */ - {12188, 65, 128, 32, 6016, 32, 1 }, + {12188, 65, 128, 32, 6016, 32, 1, 189 }, /* tcId: 190. edge case for computation of x with projective coordinates in left to right addition chain */ - {12253, 65, 128, 32, 6048, 32, 1 }, + {12253, 65, 128, 32, 6048, 32, 1, 190 }, /* tcId: 191. edge case for computation of x with projective coordinates in left to right addition chain */ - {12318, 65, 128, 32, 6080, 32, 1 }, + {12318, 65, 128, 32, 6080, 32, 1, 191 }, /* tcId: 192. edge case for computation of x with projective coordinates in left to right addition chain */ - {12383, 65, 128, 32, 6112, 32, 1 }, + {12383, 65, 128, 32, 6112, 32, 1, 192 }, /* tcId: 193. edge case for computation of x with projective coordinates in left to right addition chain */ - {12448, 65, 128, 32, 6144, 32, 1 }, + {12448, 65, 128, 32, 6144, 32, 1, 193 }, /* tcId: 194. edge case for computation of x with projective coordinates in left to right addition chain */ - {12513, 65, 128, 32, 6176, 32, 1 }, + {12513, 65, 128, 32, 6176, 32, 1, 194 }, /* tcId: 195. edge case for computation of x with projective coordinates in left to right addition chain */ - {12578, 65, 128, 32, 6208, 32, 1 }, + {12578, 65, 128, 32, 6208, 32, 1, 195 }, /* tcId: 196. edge case for computation of x with projective coordinates in left to right addition chain */ - {12643, 65, 128, 32, 6240, 32, 1 }, + {12643, 65, 128, 32, 6240, 32, 1, 196 }, /* tcId: 197. edge case for computation of x with projective coordinates in left to right addition chain */ - {12708, 65, 128, 32, 6272, 32, 1 }, + {12708, 65, 128, 32, 6272, 32, 1, 197 }, /* tcId: 198. edge case for computation of x with projective coordinates in left to right addition chain */ - {12773, 65, 128, 32, 6304, 32, 1 }, + {12773, 65, 128, 32, 6304, 32, 1, 198 }, /* tcId: 199. edge case for computation of x with projective coordinates in left to right addition chain */ - {12838, 65, 128, 32, 6336, 32, 1 }, + {12838, 65, 128, 32, 6336, 32, 1, 199 }, /* tcId: 200. edge case for computation of x with projective coordinates in left to right addition chain */ - {12903, 65, 128, 32, 6368, 32, 1 }, + {12903, 65, 128, 32, 6368, 32, 1, 200 }, /* tcId: 201. edge case for computation of x with projective coordinates in left to right addition chain */ - {12968, 65, 128, 32, 6400, 32, 1 }, + {12968, 65, 128, 32, 6400, 32, 1, 201 }, /* tcId: 202. edge case for computation of x with projective coordinates in left to right addition chain */ - {13033, 65, 128, 32, 6432, 32, 1 }, + {13033, 65, 128, 32, 6432, 32, 1, 202 }, /* tcId: 203. edge case for computation of x with projective coordinates in left to right addition chain */ - {13098, 65, 128, 32, 6464, 32, 1 }, + {13098, 65, 128, 32, 6464, 32, 1, 203 }, /* tcId: 204. edge case for computation of x with projective coordinates in left to right addition chain */ - {13163, 65, 128, 32, 6496, 32, 1 }, + {13163, 65, 128, 32, 6496, 32, 1, 204 }, /* tcId: 205. edge case for computation of x with projective coordinates in left to right addition chain */ - {13228, 65, 128, 32, 6528, 32, 1 }, + {13228, 65, 128, 32, 6528, 32, 1, 205 }, /* tcId: 206. edge case for computation of x with projective coordinates in left to right addition chain */ - {13293, 65, 128, 32, 6560, 32, 1 }, + {13293, 65, 128, 32, 6560, 32, 1, 206 }, /* tcId: 207. edge case for computation of x with projective coordinates in left to right addition chain */ - {13358, 65, 128, 32, 6592, 32, 1 }, + {13358, 65, 128, 32, 6592, 32, 1, 207 }, /* tcId: 208. edge case for computation of x with projective coordinates in left to right addition chain */ - {13423, 65, 128, 32, 6624, 32, 1 }, + {13423, 65, 128, 32, 6624, 32, 1, 208 }, /* tcId: 209. edge case for computation of x with projective coordinates in left to right addition chain */ - {13488, 65, 128, 32, 6656, 32, 1 }, + {13488, 65, 128, 32, 6656, 32, 1, 209 }, /* tcId: 210. edge case for computation of x with projective coordinates in left to right addition chain */ - {13553, 65, 128, 32, 6688, 32, 1 }, + {13553, 65, 128, 32, 6688, 32, 1, 210 }, /* tcId: 211. edge case for computation of x with projective coordinates in left to right addition chain */ - {13618, 65, 128, 32, 6720, 32, 1 }, + {13618, 65, 128, 32, 6720, 32, 1, 211 }, /* tcId: 212. edge case for computation of x with projective coordinates in left to right addition chain */ - {13683, 65, 128, 32, 6752, 32, 1 }, + {13683, 65, 128, 32, 6752, 32, 1, 212 }, /* tcId: 213. edge case for computation of x with projective coordinates in left to right addition chain */ - {13748, 65, 128, 32, 6784, 32, 1 }, + {13748, 65, 128, 32, 6784, 32, 1, 213 }, /* tcId: 214. edge case for computation of x with projective coordinates in left to right addition chain */ - {13813, 65, 128, 32, 6816, 32, 1 }, + {13813, 65, 128, 32, 6816, 32, 1, 214 }, /* tcId: 215. edge case for computation of x with projective coordinates in left to right addition chain */ - {13878, 65, 128, 32, 6848, 32, 1 }, + {13878, 65, 128, 32, 6848, 32, 1, 215 }, /* tcId: 216. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {13943, 65, 128, 32, 6880, 32, 1 }, + {13943, 65, 128, 32, 6880, 32, 1, 216 }, /* tcId: 217. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14008, 65, 128, 32, 6912, 32, 1 }, + {14008, 65, 128, 32, 6912, 32, 1, 217 }, /* tcId: 218. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14073, 65, 128, 32, 6944, 32, 1 }, + {14073, 65, 128, 32, 6944, 32, 1, 218 }, /* tcId: 219. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14138, 65, 128, 32, 6976, 32, 1 }, + {14138, 65, 128, 32, 6976, 32, 1, 219 }, /* tcId: 220. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14203, 65, 128, 32, 7008, 32, 1 }, + {14203, 65, 128, 32, 7008, 32, 1, 220 }, /* tcId: 221. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14268, 65, 128, 32, 7040, 32, 1 }, + {14268, 65, 128, 32, 7040, 32, 1, 221 }, /* tcId: 222. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14333, 65, 128, 32, 7072, 32, 1 }, + {14333, 65, 128, 32, 7072, 32, 1, 222 }, /* tcId: 223. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14398, 65, 128, 32, 7104, 32, 1 }, + {14398, 65, 128, 32, 7104, 32, 1, 223 }, /* tcId: 224. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14463, 65, 128, 32, 7136, 32, 1 }, + {14463, 65, 128, 32, 7136, 32, 1, 224 }, /* tcId: 225. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14528, 65, 128, 32, 7168, 32, 1 }, + {14528, 65, 128, 32, 7168, 32, 1, 225 }, /* tcId: 226. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14593, 65, 128, 32, 7200, 32, 1 }, + {14593, 65, 128, 32, 7200, 32, 1, 226 }, /* tcId: 227. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14658, 65, 128, 32, 7232, 32, 1 }, + {14658, 65, 128, 32, 7232, 32, 1, 227 }, /* tcId: 228. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14723, 65, 128, 32, 7264, 32, 1 }, + {14723, 65, 128, 32, 7264, 32, 1, 228 }, /* tcId: 229. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14788, 65, 128, 32, 7296, 32, 1 }, + {14788, 65, 128, 32, 7296, 32, 1, 229 }, /* tcId: 230. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14853, 65, 128, 32, 7328, 32, 1 }, + {14853, 65, 128, 32, 7328, 32, 1, 230 }, /* tcId: 231. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14918, 65, 128, 32, 7360, 32, 1 }, + {14918, 65, 128, 32, 7360, 32, 1, 231 }, /* tcId: 232. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {14983, 65, 128, 32, 7392, 32, 1 }, + {14983, 65, 128, 32, 7392, 32, 1, 232 }, /* tcId: 233. edge case for computation of x with projective coordinates in precomputation or right to left addition chain */ - {15048, 65, 128, 32, 7424, 32, 1 }, + {15048, 65, 128, 32, 7424, 32, 1, 233 }, /* tcId: 234. edge case for computation of x with projective coordinates in right to left addition chain */ - {15113, 65, 128, 32, 7456, 32, 1 }, + {15113, 65, 128, 32, 7456, 32, 1, 234 }, /* tcId: 235. edge case for computation of x with projective coordinates in right to left addition chain */ - {15178, 65, 128, 32, 7488, 32, 1 }, + {15178, 65, 128, 32, 7488, 32, 1, 235 }, /* tcId: 236. edge case for computation of x with projective coordinates in right to left addition chain */ - {15243, 65, 128, 32, 7520, 32, 1 }, + {15243, 65, 128, 32, 7520, 32, 1, 236 }, /* tcId: 237. edge case for computation of x with projective coordinates in right to left addition chain */ - {15308, 65, 128, 32, 7552, 32, 1 }, + {15308, 65, 128, 32, 7552, 32, 1, 237 }, /* tcId: 238. edge case for computation of x with projective coordinates in right to left addition chain */ - {15373, 65, 128, 32, 7584, 32, 1 }, + {15373, 65, 128, 32, 7584, 32, 1, 238 }, /* tcId: 239. edge case for computation of x with projective coordinates in right to left addition chain */ - {15438, 65, 128, 32, 7616, 32, 1 }, + {15438, 65, 128, 32, 7616, 32, 1, 239 }, /* tcId: 240. edge case for computation of x with projective coordinates in right to left addition chain */ - {15503, 65, 128, 32, 7648, 32, 1 }, + {15503, 65, 128, 32, 7648, 32, 1, 240 }, /* tcId: 241. edge case for computation of x with projective coordinates in right to left addition chain */ - {15568, 65, 128, 32, 7680, 32, 1 }, + {15568, 65, 128, 32, 7680, 32, 1, 241 }, /* tcId: 242. edge case for computation of x with projective coordinates in right to left addition chain */ - {15633, 65, 128, 32, 7712, 32, 1 }, + {15633, 65, 128, 32, 7712, 32, 1, 242 }, /* tcId: 243. edge case for computation of x with projective coordinates in right to left addition chain */ - {15698, 65, 128, 32, 7744, 32, 1 }, + {15698, 65, 128, 32, 7744, 32, 1, 243 }, /* tcId: 244. edge case for computation of x with projective coordinates in right to left addition chain */ - {15763, 65, 128, 32, 7776, 32, 1 }, + {15763, 65, 128, 32, 7776, 32, 1, 244 }, /* tcId: 245. edge case for computation of x with projective coordinates in right to left addition chain */ - {15828, 65, 128, 32, 7808, 32, 1 }, + {15828, 65, 128, 32, 7808, 32, 1, 245 }, /* tcId: 246. edge case for computation of x with projective coordinates in right to left addition chain */ - {15893, 65, 128, 32, 7840, 32, 1 }, + {15893, 65, 128, 32, 7840, 32, 1, 246 }, /* tcId: 247. edge case for computation of x with projective coordinates in right to left addition chain */ - {15958, 65, 128, 32, 7872, 32, 1 }, + {15958, 65, 128, 32, 7872, 32, 1, 247 }, /* tcId: 248. edge case for computation of x with projective coordinates in right to left addition chain */ - {16023, 65, 128, 32, 7904, 32, 1 }, + {16023, 65, 128, 32, 7904, 32, 1, 248 }, /* tcId: 249. edge case for computation of y with projective coordinates */ - {16088, 65, 128, 32, 7936, 32, 1 }, + {16088, 65, 128, 32, 7936, 32, 1, 249 }, /* tcId: 250. edge case for computation of y with projective coordinates */ - {16153, 65, 128, 32, 7968, 32, 1 }, + {16153, 65, 128, 32, 7968, 32, 1, 250 }, /* tcId: 251. edge case for computation of y with projective coordinates */ - {16218, 65, 128, 32, 8000, 32, 1 }, + {16218, 65, 128, 32, 8000, 32, 1, 251 }, /* tcId: 252. edge case for computation of y with projective coordinates in left to right addition chain */ - {16283, 65, 128, 32, 8032, 32, 1 }, + {16283, 65, 128, 32, 8032, 32, 1, 252 }, /* tcId: 253. edge case for computation of y with projective coordinates in left to right addition chain */ - {16348, 65, 128, 32, 8064, 32, 1 }, + {16348, 65, 128, 32, 8064, 32, 1, 253 }, /* tcId: 254. edge case for computation of y with projective coordinates in left to right addition chain */ - {16413, 65, 128, 32, 8096, 32, 1 }, + {16413, 65, 128, 32, 8096, 32, 1, 254 }, /* tcId: 255. edge case for computation of y with projective coordinates in left to right addition chain */ - {16478, 65, 128, 32, 8128, 32, 1 }, + {16478, 65, 128, 32, 8128, 32, 1, 255 }, /* tcId: 256. edge case for computation of y with projective coordinates in left to right addition chain */ - {16543, 65, 128, 32, 8160, 32, 1 }, + {16543, 65, 128, 32, 8160, 32, 1, 256 }, /* tcId: 257. edge case for computation of y with projective coordinates in left to right addition chain */ - {16608, 65, 128, 32, 8192, 32, 1 }, + {16608, 65, 128, 32, 8192, 32, 1, 257 }, /* tcId: 258. edge case for computation of y with projective coordinates in left to right addition chain */ - {16673, 65, 128, 32, 8224, 32, 1 }, + {16673, 65, 128, 32, 8224, 32, 1, 258 }, /* tcId: 259. edge case for computation of y with projective coordinates in left to right addition chain */ - {16738, 65, 128, 32, 8256, 32, 1 }, + {16738, 65, 128, 32, 8256, 32, 1, 259 }, /* tcId: 260. edge case for computation of y with projective coordinates in left to right addition chain */ - {16803, 65, 128, 32, 8288, 32, 1 }, + {16803, 65, 128, 32, 8288, 32, 1, 260 }, /* tcId: 261. edge case for computation of y with projective coordinates in left to right addition chain */ - {16868, 65, 128, 32, 8320, 32, 1 }, + {16868, 65, 128, 32, 8320, 32, 1, 261 }, /* tcId: 262. edge case for computation of y with projective coordinates in left to right addition chain */ - {16933, 65, 128, 32, 8352, 32, 1 }, + {16933, 65, 128, 32, 8352, 32, 1, 262 }, /* tcId: 263. edge case for computation of y with projective coordinates in left to right addition chain */ - {16998, 65, 128, 32, 8384, 32, 1 }, + {16998, 65, 128, 32, 8384, 32, 1, 263 }, /* tcId: 264. edge case for computation of y with projective coordinates in left to right addition chain */ - {17063, 65, 128, 32, 8416, 32, 1 }, + {17063, 65, 128, 32, 8416, 32, 1, 264 }, /* tcId: 265. edge case for computation of y with projective coordinates in left to right addition chain */ - {17128, 65, 128, 32, 8448, 32, 1 }, + {17128, 65, 128, 32, 8448, 32, 1, 265 }, /* tcId: 266. edge case for computation of y with projective coordinates in left to right addition chain */ - {17193, 65, 128, 32, 8480, 32, 1 }, + {17193, 65, 128, 32, 8480, 32, 1, 266 }, /* tcId: 267. edge case for computation of y with projective coordinates in left to right addition chain */ - {17258, 65, 128, 32, 8512, 32, 1 }, + {17258, 65, 128, 32, 8512, 32, 1, 267 }, /* tcId: 268. edge case for computation of y with projective coordinates in precomputation or right to left addition chain */ - {17323, 65, 128, 32, 8544, 32, 1 }, + {17323, 65, 128, 32, 8544, 32, 1, 268 }, /* tcId: 269. edge case for computation of y with projective coordinates in precomputation or right to left addition chain */ - {17388, 65, 128, 32, 8576, 32, 1 }, + {17388, 65, 128, 32, 8576, 32, 1, 269 }, /* tcId: 270. edge case for computation of y with projective coordinates in precomputation or right to left addition chain */ - {17453, 65, 128, 32, 8608, 32, 1 }, + {17453, 65, 128, 32, 8608, 32, 1, 270 }, /* tcId: 271. edge case for computation of y with projective coordinates in precomputation or right to left addition chain */ - {17518, 65, 128, 32, 8640, 32, 1 }, + {17518, 65, 128, 32, 8640, 32, 1, 271 }, /* tcId: 272. edge case for computation of y with projective coordinates in precomputation or right to left addition chain */ - {17583, 65, 128, 32, 8672, 32, 1 }, + {17583, 65, 128, 32, 8672, 32, 1, 272 }, /* tcId: 273. edge case for computation of y with projective coordinates in precomputation or right to left addition chain */ - {17648, 65, 128, 32, 8704, 32, 1 }, + {17648, 65, 128, 32, 8704, 32, 1, 273 }, /* tcId: 274. edge case for computation of y with projective coordinates in right to left addition chain */ - {17713, 65, 128, 32, 8736, 32, 1 }, + {17713, 65, 128, 32, 8736, 32, 1, 274 }, /* tcId: 275. edge case for computation of y with projective coordinates in right to left addition chain */ - {17778, 65, 128, 32, 8768, 32, 1 }, + {17778, 65, 128, 32, 8768, 32, 1, 275 }, /* tcId: 276. edge case for computation of y with projective coordinates in right to left addition chain */ - {17843, 65, 128, 32, 8800, 32, 1 }, + {17843, 65, 128, 32, 8800, 32, 1, 276 }, /* tcId: 277. edge case for computation of y with projective coordinates in right to left addition chain */ - {17908, 65, 128, 32, 8832, 32, 1 }, + {17908, 65, 128, 32, 8832, 32, 1, 277 }, /* tcId: 278. edge case for computation of y with projective coordinates in right to left addition chain */ - {17973, 65, 128, 32, 8864, 32, 1 }, + {17973, 65, 128, 32, 8864, 32, 1, 278 }, /* tcId: 279. point with coordinate x = 1 */ - {3608, 65, 128, 32, 8896, 32, 1 }, + {3608, 65, 128, 32, 8896, 32, 1, 279 }, /* tcId: 280. point with coordinate x = 1 */ - {18038, 65, 128, 32, 8928, 32, 1 }, + {18038, 65, 128, 32, 8928, 32, 1, 280 }, /* tcId: 281. point with coordinate x = 1 */ - {18103, 65, 128, 32, 8960, 32, 1 }, + {18103, 65, 128, 32, 8960, 32, 1, 281 }, /* tcId: 282. point with coordinate x = 1 in left to right addition chain */ - {18168, 65, 128, 32, 8992, 32, 1 }, + {18168, 65, 128, 32, 8992, 32, 1, 282 }, /* tcId: 283. point with coordinate x = 1 in left to right addition chain */ - {18233, 65, 128, 32, 9024, 32, 1 }, + {18233, 65, 128, 32, 9024, 32, 1, 283 }, /* tcId: 284. point with coordinate x = 1 in left to right addition chain */ - {18298, 65, 128, 32, 9056, 32, 1 }, + {18298, 65, 128, 32, 9056, 32, 1, 284 }, /* tcId: 285. point with coordinate x = 1 in left to right addition chain */ - {18363, 65, 128, 32, 9088, 32, 1 }, + {18363, 65, 128, 32, 9088, 32, 1, 285 }, /* tcId: 286. point with coordinate x = 1 in left to right addition chain */ - {18428, 65, 128, 32, 9120, 32, 1 }, + {18428, 65, 128, 32, 9120, 32, 1, 286 }, /* tcId: 287. point with coordinate x = 1 in left to right addition chain */ - {18493, 65, 128, 32, 9152, 32, 1 }, + {18493, 65, 128, 32, 9152, 32, 1, 287 }, /* tcId: 288. point with coordinate x = 1 in left to right addition chain */ - {18558, 65, 128, 32, 9184, 32, 1 }, + {18558, 65, 128, 32, 9184, 32, 1, 288 }, /* tcId: 289. point with coordinate x = 1 in left to right addition chain */ - {18623, 65, 128, 32, 9216, 32, 1 }, + {18623, 65, 128, 32, 9216, 32, 1, 289 }, /* tcId: 290. point with coordinate x = 1 in left to right addition chain */ - {18688, 65, 128, 32, 9248, 32, 1 }, + {18688, 65, 128, 32, 9248, 32, 1, 290 }, /* tcId: 291. point with coordinate x = 1 in left to right addition chain */ - {18753, 65, 128, 32, 9280, 32, 1 }, + {18753, 65, 128, 32, 9280, 32, 1, 291 }, /* tcId: 292. point with coordinate x = 1 in left to right addition chain */ - {18818, 65, 128, 32, 9312, 32, 1 }, + {18818, 65, 128, 32, 9312, 32, 1, 292 }, /* tcId: 293. point with coordinate x = 1 in left to right addition chain */ - {18883, 65, 128, 32, 9344, 32, 1 }, + {18883, 65, 128, 32, 9344, 32, 1, 293 }, /* tcId: 294. point with coordinate x = 1 in left to right addition chain */ - {18948, 65, 128, 32, 9376, 32, 1 }, + {18948, 65, 128, 32, 9376, 32, 1, 294 }, /* tcId: 295. point with coordinate x = 1 in left to right addition chain */ - {19013, 65, 128, 32, 9408, 32, 1 }, + {19013, 65, 128, 32, 9408, 32, 1, 295 }, /* tcId: 296. point with coordinate x = 1 in left to right addition chain */ - {19078, 65, 128, 32, 9440, 32, 1 }, + {19078, 65, 128, 32, 9440, 32, 1, 296 }, /* tcId: 297. point with coordinate x = 1 in left to right addition chain */ - {19143, 65, 128, 32, 9472, 32, 1 }, + {19143, 65, 128, 32, 9472, 32, 1, 297 }, /* tcId: 298. point with coordinate x = 1 in precomputation or right to left addition chain */ - {19208, 65, 128, 32, 9504, 32, 1 }, + {19208, 65, 128, 32, 9504, 32, 1, 298 }, /* tcId: 299. point with coordinate x = 1 in precomputation or right to left addition chain */ - {19273, 65, 128, 32, 9536, 32, 1 }, + {19273, 65, 128, 32, 9536, 32, 1, 299 }, /* tcId: 300. point with coordinate x = 1 in precomputation or right to left addition chain */ - {19338, 65, 128, 32, 9568, 32, 1 }, + {19338, 65, 128, 32, 9568, 32, 1, 300 }, /* tcId: 301. point with coordinate x = 1 in precomputation or right to left addition chain */ - {19403, 65, 128, 32, 9600, 32, 1 }, + {19403, 65, 128, 32, 9600, 32, 1, 301 }, /* tcId: 302. point with coordinate x = 1 in precomputation or right to left addition chain */ - {19468, 65, 128, 32, 9632, 32, 1 }, + {19468, 65, 128, 32, 9632, 32, 1, 302 }, /* tcId: 303. point with coordinate x = 1 in precomputation or right to left addition chain */ - {19533, 65, 128, 32, 9664, 32, 1 }, + {19533, 65, 128, 32, 9664, 32, 1, 303 }, /* tcId: 304. point with coordinate x = 1 in right to left addition chain */ - {19598, 65, 128, 32, 9696, 32, 1 }, + {19598, 65, 128, 32, 9696, 32, 1, 304 }, /* tcId: 305. point with coordinate x = 1 in right to left addition chain */ - {19663, 65, 128, 32, 9728, 32, 1 }, + {19663, 65, 128, 32, 9728, 32, 1, 305 }, /* tcId: 306. point with coordinate x = 1 in right to left addition chain */ - {19728, 65, 128, 32, 9760, 32, 1 }, + {19728, 65, 128, 32, 9760, 32, 1, 306 }, /* tcId: 307. point with coordinate x = 1 in right to left addition chain */ - {19793, 65, 128, 32, 9792, 32, 1 }, + {19793, 65, 128, 32, 9792, 32, 1, 307 }, /* tcId: 308. point with coordinate x = 1 in right to left addition chain */ - {19858, 65, 128, 32, 9824, 32, 1 }, + {19858, 65, 128, 32, 9824, 32, 1, 308 }, /* tcId: 309. point with coordinate x = 2 */ - {3673, 65, 128, 32, 9856, 32, 1 }, + {3673, 65, 128, 32, 9856, 32, 1, 309 }, /* tcId: 310. point with coordinate x = 2 */ - {19923, 65, 128, 32, 9888, 32, 1 }, + {19923, 65, 128, 32, 9888, 32, 1, 310 }, /* tcId: 311. point with coordinate x = 2 */ - {19988, 65, 128, 32, 9920, 32, 1 }, + {19988, 65, 128, 32, 9920, 32, 1, 311 }, /* tcId: 312. point with coordinate x = 2 in left to right addition chain */ - {20053, 65, 128, 32, 9952, 32, 1 }, + {20053, 65, 128, 32, 9952, 32, 1, 312 }, /* tcId: 313. point with coordinate x = 2 in left to right addition chain */ - {20118, 65, 128, 32, 9984, 32, 1 }, + {20118, 65, 128, 32, 9984, 32, 1, 313 }, /* tcId: 314. point with coordinate x = 2 in left to right addition chain */ - {20183, 65, 128, 32, 10016, 32, 1 }, + {20183, 65, 128, 32, 10016, 32, 1, 314 }, /* tcId: 315. point with coordinate x = 2 in left to right addition chain */ - {20248, 65, 128, 32, 10048, 32, 1 }, + {20248, 65, 128, 32, 10048, 32, 1, 315 }, /* tcId: 316. point with coordinate x = 2 in left to right addition chain */ - {20313, 65, 128, 32, 10080, 32, 1 }, + {20313, 65, 128, 32, 10080, 32, 1, 316 }, /* tcId: 317. point with coordinate x = 2 in left to right addition chain */ - {20378, 65, 128, 32, 10112, 32, 1 }, + {20378, 65, 128, 32, 10112, 32, 1, 317 }, /* tcId: 318. point with coordinate x = 2 in left to right addition chain */ - {20443, 65, 128, 32, 10144, 32, 1 }, + {20443, 65, 128, 32, 10144, 32, 1, 318 }, /* tcId: 319. point with coordinate x = 2 in left to right addition chain */ - {20508, 65, 128, 32, 10176, 32, 1 }, + {20508, 65, 128, 32, 10176, 32, 1, 319 }, /* tcId: 320. point with coordinate x = 2 in left to right addition chain */ - {20573, 65, 128, 32, 10208, 32, 1 }, + {20573, 65, 128, 32, 10208, 32, 1, 320 }, /* tcId: 321. point with coordinate x = 2 in left to right addition chain */ - {20638, 65, 128, 32, 10240, 32, 1 }, + {20638, 65, 128, 32, 10240, 32, 1, 321 }, /* tcId: 322. point with coordinate x = 2 in left to right addition chain */ - {20703, 65, 128, 32, 10272, 32, 1 }, + {20703, 65, 128, 32, 10272, 32, 1, 322 }, /* tcId: 323. point with coordinate x = 2 in left to right addition chain */ - {20768, 65, 128, 32, 10304, 32, 1 }, + {20768, 65, 128, 32, 10304, 32, 1, 323 }, /* tcId: 324. point with coordinate x = 2 in left to right addition chain */ - {20833, 65, 128, 32, 10336, 32, 1 }, + {20833, 65, 128, 32, 10336, 32, 1, 324 }, /* tcId: 325. point with coordinate x = 2 in left to right addition chain */ - {20898, 65, 128, 32, 10368, 32, 1 }, + {20898, 65, 128, 32, 10368, 32, 1, 325 }, /* tcId: 326. point with coordinate x = 2 in left to right addition chain */ - {20963, 65, 128, 32, 10400, 32, 1 }, + {20963, 65, 128, 32, 10400, 32, 1, 326 }, /* tcId: 327. point with coordinate x = 2 in left to right addition chain */ - {21028, 65, 128, 32, 10432, 32, 1 }, + {21028, 65, 128, 32, 10432, 32, 1, 327 }, /* tcId: 328. point with coordinate x = 2 in precomputation or right to left addition chain */ - {21093, 65, 128, 32, 10464, 32, 1 }, + {21093, 65, 128, 32, 10464, 32, 1, 328 }, /* tcId: 329. point with coordinate x = 2 in precomputation or right to left addition chain */ - {21158, 65, 128, 32, 10496, 32, 1 }, + {21158, 65, 128, 32, 10496, 32, 1, 329 }, /* tcId: 330. point with coordinate x = 2 in precomputation or right to left addition chain */ - {21223, 65, 128, 32, 10528, 32, 1 }, + {21223, 65, 128, 32, 10528, 32, 1, 330 }, /* tcId: 331. point with coordinate x = 2 in precomputation or right to left addition chain */ - {21288, 65, 128, 32, 10560, 32, 1 }, + {21288, 65, 128, 32, 10560, 32, 1, 331 }, /* tcId: 332. point with coordinate x = 2 in precomputation or right to left addition chain */ - {21353, 65, 128, 32, 10592, 32, 1 }, + {21353, 65, 128, 32, 10592, 32, 1, 332 }, /* tcId: 333. point with coordinate x = 2 in precomputation or right to left addition chain */ - {21418, 65, 128, 32, 10624, 32, 1 }, + {21418, 65, 128, 32, 10624, 32, 1, 333 }, /* tcId: 334. point with coordinate x = 2 in right to left addition chain */ - {21483, 65, 128, 32, 10656, 32, 1 }, + {21483, 65, 128, 32, 10656, 32, 1, 334 }, /* tcId: 335. point with coordinate x = 2 in right to left addition chain */ - {21548, 65, 128, 32, 10688, 32, 1 }, + {21548, 65, 128, 32, 10688, 32, 1, 335 }, /* tcId: 336. point with coordinate x = 2 in right to left addition chain */ - {21613, 65, 128, 32, 10720, 32, 1 }, + {21613, 65, 128, 32, 10720, 32, 1, 336 }, /* tcId: 337. point with coordinate x = 2 in right to left addition chain */ - {21678, 65, 128, 32, 10752, 32, 1 }, + {21678, 65, 128, 32, 10752, 32, 1, 337 }, /* tcId: 338. point with coordinate x = 2 in right to left addition chain */ - {21743, 65, 128, 32, 10784, 32, 1 }, + {21743, 65, 128, 32, 10784, 32, 1, 338 }, /* tcId: 339. point with coordinate x = 3 */ - {3738, 65, 128, 32, 10816, 32, 1 }, + {3738, 65, 128, 32, 10816, 32, 1, 339 }, /* tcId: 340. point with coordinate x = 3 */ - {21808, 65, 128, 32, 10848, 32, 1 }, + {21808, 65, 128, 32, 10848, 32, 1, 340 }, /* tcId: 341. point with coordinate x = 3 */ - {21873, 65, 128, 32, 10880, 32, 1 }, + {21873, 65, 128, 32, 10880, 32, 1, 341 }, /* tcId: 342. point with coordinate x = 3 in left to right addition chain */ - {21938, 65, 128, 32, 10912, 32, 1 }, + {21938, 65, 128, 32, 10912, 32, 1, 342 }, /* tcId: 343. point with coordinate x = 3 in left to right addition chain */ - {22003, 65, 128, 32, 10944, 32, 1 }, + {22003, 65, 128, 32, 10944, 32, 1, 343 }, /* tcId: 344. point with coordinate x = 3 in left to right addition chain */ - {22068, 65, 128, 32, 10976, 32, 1 }, + {22068, 65, 128, 32, 10976, 32, 1, 344 }, /* tcId: 345. point with coordinate x = 3 in left to right addition chain */ - {22133, 65, 128, 32, 11008, 32, 1 }, + {22133, 65, 128, 32, 11008, 32, 1, 345 }, /* tcId: 346. point with coordinate x = 3 in left to right addition chain */ - {22198, 65, 128, 32, 11040, 32, 1 }, + {22198, 65, 128, 32, 11040, 32, 1, 346 }, /* tcId: 347. point with coordinate x = 3 in left to right addition chain */ - {22263, 65, 128, 32, 11072, 32, 1 }, + {22263, 65, 128, 32, 11072, 32, 1, 347 }, /* tcId: 348. point with coordinate x = 3 in left to right addition chain */ - {22328, 65, 128, 32, 11104, 32, 1 }, + {22328, 65, 128, 32, 11104, 32, 1, 348 }, /* tcId: 349. point with coordinate x = 3 in left to right addition chain */ - {22393, 65, 128, 32, 11136, 32, 1 }, + {22393, 65, 128, 32, 11136, 32, 1, 349 }, /* tcId: 350. point with coordinate x = 3 in left to right addition chain */ - {22458, 65, 128, 32, 11168, 32, 1 }, + {22458, 65, 128, 32, 11168, 32, 1, 350 }, /* tcId: 351. point with coordinate x = 3 in left to right addition chain */ - {22523, 65, 128, 32, 11200, 32, 1 }, + {22523, 65, 128, 32, 11200, 32, 1, 351 }, /* tcId: 352. point with coordinate x = 3 in left to right addition chain */ - {22588, 65, 128, 32, 11232, 32, 1 }, + {22588, 65, 128, 32, 11232, 32, 1, 352 }, /* tcId: 353. point with coordinate x = 3 in left to right addition chain */ - {22653, 65, 128, 32, 11264, 32, 1 }, + {22653, 65, 128, 32, 11264, 32, 1, 353 }, /* tcId: 354. point with coordinate x = 3 in left to right addition chain */ - {22718, 65, 128, 32, 11296, 32, 1 }, + {22718, 65, 128, 32, 11296, 32, 1, 354 }, /* tcId: 355. point with coordinate x = 3 in left to right addition chain */ - {22783, 65, 128, 32, 11328, 32, 1 }, + {22783, 65, 128, 32, 11328, 32, 1, 355 }, /* tcId: 356. point with coordinate x = 3 in left to right addition chain */ - {22848, 65, 128, 32, 11360, 32, 1 }, + {22848, 65, 128, 32, 11360, 32, 1, 356 }, /* tcId: 357. point with coordinate x = 3 in left to right addition chain */ - {22913, 65, 128, 32, 11392, 32, 1 }, + {22913, 65, 128, 32, 11392, 32, 1, 357 }, /* tcId: 358. point with coordinate x = 3 in precomputation or right to left addition chain */ - {22978, 65, 128, 32, 11424, 32, 1 }, + {22978, 65, 128, 32, 11424, 32, 1, 358 }, /* tcId: 359. point with coordinate x = 3 in precomputation or right to left addition chain */ - {23043, 65, 128, 32, 11456, 32, 1 }, + {23043, 65, 128, 32, 11456, 32, 1, 359 }, /* tcId: 360. point with coordinate x = 3 in precomputation or right to left addition chain */ - {23108, 65, 128, 32, 11488, 32, 1 }, + {23108, 65, 128, 32, 11488, 32, 1, 360 }, /* tcId: 361. point with coordinate x = 3 in precomputation or right to left addition chain */ - {23173, 65, 128, 32, 11520, 32, 1 }, + {23173, 65, 128, 32, 11520, 32, 1, 361 }, /* tcId: 362. point with coordinate x = 3 in precomputation or right to left addition chain */ - {23238, 65, 128, 32, 11552, 32, 1 }, + {23238, 65, 128, 32, 11552, 32, 1, 362 }, /* tcId: 363. point with coordinate x = 3 in precomputation or right to left addition chain */ - {23303, 65, 128, 32, 11584, 32, 1 }, + {23303, 65, 128, 32, 11584, 32, 1, 363 }, /* tcId: 364. point with coordinate x = 3 in right to left addition chain */ - {23368, 65, 128, 32, 11616, 32, 1 }, + {23368, 65, 128, 32, 11616, 32, 1, 364 }, /* tcId: 365. point with coordinate x = 3 in right to left addition chain */ - {23433, 65, 128, 32, 11648, 32, 1 }, + {23433, 65, 128, 32, 11648, 32, 1, 365 }, /* tcId: 366. point with coordinate x = 3 in right to left addition chain */ - {23498, 65, 128, 32, 11680, 32, 1 }, + {23498, 65, 128, 32, 11680, 32, 1, 366 }, /* tcId: 367. point with coordinate x = 3 in right to left addition chain */ - {23563, 65, 128, 32, 11712, 32, 1 }, + {23563, 65, 128, 32, 11712, 32, 1, 367 }, /* tcId: 368. point with coordinate x = 3 in right to left addition chain */ - {23628, 65, 128, 32, 11744, 32, 1 }, + {23628, 65, 128, 32, 11744, 32, 1, 368 }, /* tcId: 369. point with coordinate y = 1 */ - {23693, 65, 128, 32, 11776, 32, 1 }, + {23693, 65, 128, 32, 11776, 32, 1, 369 }, /* tcId: 370. point with coordinate y = 1 */ - {23758, 65, 128, 32, 11808, 32, 1 }, + {23758, 65, 128, 32, 11808, 32, 1, 370 }, /* tcId: 371. point with coordinate y = 1 */ - {23823, 65, 128, 32, 11840, 32, 1 }, + {23823, 65, 128, 32, 11840, 32, 1, 371 }, /* tcId: 372. point with coordinate y = 1 */ - {23888, 65, 128, 32, 11872, 32, 1 }, + {23888, 65, 128, 32, 11872, 32, 1, 372 }, /* tcId: 373. point with coordinate y = 1 */ - {23953, 65, 128, 32, 11904, 32, 1 }, + {23953, 65, 128, 32, 11904, 32, 1, 373 }, /* tcId: 374. point with coordinate y = 1 */ - {24018, 65, 128, 32, 11936, 32, 1 }, + {24018, 65, 128, 32, 11936, 32, 1, 374 }, /* tcId: 375. point with coordinate y = 1 */ - {24083, 65, 128, 32, 11968, 32, 1 }, + {24083, 65, 128, 32, 11968, 32, 1, 375 }, /* tcId: 376. point with coordinate y = 1 */ - {24148, 65, 128, 32, 12000, 32, 1 }, + {24148, 65, 128, 32, 12000, 32, 1, 376 }, /* tcId: 377. point with coordinate y = 1 */ - {24213, 65, 128, 32, 12032, 32, 1 }, + {24213, 65, 128, 32, 12032, 32, 1, 377 }, /* tcId: 378. point with coordinate y = 1 in left to right addition chain */ - {24278, 65, 128, 32, 12064, 32, 1 }, + {24278, 65, 128, 32, 12064, 32, 1, 378 }, /* tcId: 379. point with coordinate y = 1 in left to right addition chain */ - {24343, 65, 128, 32, 12096, 32, 1 }, + {24343, 65, 128, 32, 12096, 32, 1, 379 }, /* tcId: 380. point with coordinate y = 1 in left to right addition chain */ - {24408, 65, 128, 32, 12128, 32, 1 }, + {24408, 65, 128, 32, 12128, 32, 1, 380 }, /* tcId: 381. point with coordinate y = 1 in left to right addition chain */ - {24473, 65, 128, 32, 12160, 32, 1 }, + {24473, 65, 128, 32, 12160, 32, 1, 381 }, /* tcId: 382. point with coordinate y = 1 in left to right addition chain */ - {24538, 65, 128, 32, 12192, 32, 1 }, + {24538, 65, 128, 32, 12192, 32, 1, 382 }, /* tcId: 383. point with coordinate y = 1 in left to right addition chain */ - {24603, 65, 128, 32, 12224, 32, 1 }, + {24603, 65, 128, 32, 12224, 32, 1, 383 }, /* tcId: 384. point with coordinate y = 1 in left to right addition chain */ - {24668, 65, 128, 32, 12256, 32, 1 }, + {24668, 65, 128, 32, 12256, 32, 1, 384 }, /* tcId: 385. point with coordinate y = 1 in left to right addition chain */ - {24733, 65, 128, 32, 12288, 32, 1 }, + {24733, 65, 128, 32, 12288, 32, 1, 385 }, /* tcId: 386. point with coordinate y = 1 in left to right addition chain */ - {24798, 65, 128, 32, 12320, 32, 1 }, + {24798, 65, 128, 32, 12320, 32, 1, 386 }, /* tcId: 387. point with coordinate y = 1 in left to right addition chain */ - {24863, 65, 128, 32, 12352, 32, 1 }, + {24863, 65, 128, 32, 12352, 32, 1, 387 }, /* tcId: 388. point with coordinate y = 1 in left to right addition chain */ - {24928, 65, 128, 32, 12384, 32, 1 }, + {24928, 65, 128, 32, 12384, 32, 1, 388 }, /* tcId: 389. point with coordinate y = 1 in left to right addition chain */ - {24993, 65, 128, 32, 12416, 32, 1 }, + {24993, 65, 128, 32, 12416, 32, 1, 389 }, /* tcId: 390. point with coordinate y = 1 in left to right addition chain */ - {25058, 65, 128, 32, 12448, 32, 1 }, + {25058, 65, 128, 32, 12448, 32, 1, 390 }, /* tcId: 391. point with coordinate y = 1 in left to right addition chain */ - {25123, 65, 128, 32, 12480, 32, 1 }, + {25123, 65, 128, 32, 12480, 32, 1, 391 }, /* tcId: 392. point with coordinate y = 1 in left to right addition chain */ - {25188, 65, 128, 32, 12512, 32, 1 }, + {25188, 65, 128, 32, 12512, 32, 1, 392 }, /* tcId: 393. point with coordinate y = 1 in left to right addition chain */ - {25253, 65, 128, 32, 12544, 32, 1 }, + {25253, 65, 128, 32, 12544, 32, 1, 393 }, /* tcId: 394. point with coordinate y = 1 in left to right addition chain */ - {25318, 65, 128, 32, 12576, 32, 1 }, + {25318, 65, 128, 32, 12576, 32, 1, 394 }, /* tcId: 395. point with coordinate y = 1 in left to right addition chain */ - {25383, 65, 128, 32, 12608, 32, 1 }, + {25383, 65, 128, 32, 12608, 32, 1, 395 }, /* tcId: 396. point with coordinate y = 1 in left to right addition chain */ - {25448, 65, 128, 32, 12640, 32, 1 }, + {25448, 65, 128, 32, 12640, 32, 1, 396 }, /* tcId: 397. point with coordinate y = 1 in left to right addition chain */ - {25513, 65, 128, 32, 12672, 32, 1 }, + {25513, 65, 128, 32, 12672, 32, 1, 397 }, /* tcId: 398. point with coordinate y = 1 in left to right addition chain */ - {25578, 65, 128, 32, 12704, 32, 1 }, + {25578, 65, 128, 32, 12704, 32, 1, 398 }, /* tcId: 399. point with coordinate y = 1 in left to right addition chain */ - {25643, 65, 128, 32, 12736, 32, 1 }, + {25643, 65, 128, 32, 12736, 32, 1, 399 }, /* tcId: 400. point with coordinate y = 1 in left to right addition chain */ - {25708, 65, 128, 32, 12768, 32, 1 }, + {25708, 65, 128, 32, 12768, 32, 1, 400 }, /* tcId: 401. point with coordinate y = 1 in left to right addition chain */ - {25773, 65, 128, 32, 12800, 32, 1 }, + {25773, 65, 128, 32, 12800, 32, 1, 401 }, /* tcId: 402. point with coordinate y = 1 in left to right addition chain */ - {25838, 65, 128, 32, 12832, 32, 1 }, + {25838, 65, 128, 32, 12832, 32, 1, 402 }, /* tcId: 403. point with coordinate y = 1 in left to right addition chain */ - {25903, 65, 128, 32, 12864, 32, 1 }, + {25903, 65, 128, 32, 12864, 32, 1, 403 }, /* tcId: 404. point with coordinate y = 1 in left to right addition chain */ - {25968, 65, 128, 32, 12896, 32, 1 }, + {25968, 65, 128, 32, 12896, 32, 1, 404 }, /* tcId: 405. point with coordinate y = 1 in left to right addition chain */ - {26033, 65, 128, 32, 12928, 32, 1 }, + {26033, 65, 128, 32, 12928, 32, 1, 405 }, /* tcId: 406. point with coordinate y = 1 in left to right addition chain */ - {26098, 65, 128, 32, 12960, 32, 1 }, + {26098, 65, 128, 32, 12960, 32, 1, 406 }, /* tcId: 407. point with coordinate y = 1 in left to right addition chain */ - {26163, 65, 128, 32, 12992, 32, 1 }, + {26163, 65, 128, 32, 12992, 32, 1, 407 }, /* tcId: 408. point with coordinate y = 1 in left to right addition chain */ - {26228, 65, 128, 32, 13024, 32, 1 }, + {26228, 65, 128, 32, 13024, 32, 1, 408 }, /* tcId: 409. point with coordinate y = 1 in left to right addition chain */ - {26293, 65, 128, 32, 13056, 32, 1 }, + {26293, 65, 128, 32, 13056, 32, 1, 409 }, /* tcId: 410. point with coordinate y = 1 in left to right addition chain */ - {26358, 65, 128, 32, 13088, 32, 1 }, + {26358, 65, 128, 32, 13088, 32, 1, 410 }, /* tcId: 411. point with coordinate y = 1 in left to right addition chain */ - {26423, 65, 128, 32, 13120, 32, 1 }, + {26423, 65, 128, 32, 13120, 32, 1, 411 }, /* tcId: 412. point with coordinate y = 1 in left to right addition chain */ - {26488, 65, 128, 32, 13152, 32, 1 }, + {26488, 65, 128, 32, 13152, 32, 1, 412 }, /* tcId: 413. point with coordinate y = 1 in left to right addition chain */ - {26553, 65, 128, 32, 13184, 32, 1 }, + {26553, 65, 128, 32, 13184, 32, 1, 413 }, /* tcId: 414. point with coordinate y = 1 in left to right addition chain */ - {26618, 65, 128, 32, 13216, 32, 1 }, + {26618, 65, 128, 32, 13216, 32, 1, 414 }, /* tcId: 415. point with coordinate y = 1 in left to right addition chain */ - {26683, 65, 128, 32, 13248, 32, 1 }, + {26683, 65, 128, 32, 13248, 32, 1, 415 }, /* tcId: 416. point with coordinate y = 1 in left to right addition chain */ - {26748, 65, 128, 32, 13280, 32, 1 }, + {26748, 65, 128, 32, 13280, 32, 1, 416 }, /* tcId: 417. point with coordinate y = 1 in left to right addition chain */ - {26813, 65, 128, 32, 13312, 32, 1 }, + {26813, 65, 128, 32, 13312, 32, 1, 417 }, /* tcId: 418. point with coordinate y = 1 in left to right addition chain */ - {26878, 65, 128, 32, 13344, 32, 1 }, + {26878, 65, 128, 32, 13344, 32, 1, 418 }, /* tcId: 419. point with coordinate y = 1 in left to right addition chain */ - {26943, 65, 128, 32, 13376, 32, 1 }, + {26943, 65, 128, 32, 13376, 32, 1, 419 }, /* tcId: 420. point with coordinate y = 1 in left to right addition chain */ - {27008, 65, 128, 32, 13408, 32, 1 }, + {27008, 65, 128, 32, 13408, 32, 1, 420 }, /* tcId: 421. point with coordinate y = 1 in left to right addition chain */ - {27073, 65, 128, 32, 13440, 32, 1 }, + {27073, 65, 128, 32, 13440, 32, 1, 421 }, /* tcId: 422. point with coordinate y = 1 in left to right addition chain */ - {27138, 65, 128, 32, 13472, 32, 1 }, + {27138, 65, 128, 32, 13472, 32, 1, 422 }, /* tcId: 423. point with coordinate y = 1 in left to right addition chain */ - {27203, 65, 128, 32, 13504, 32, 1 }, + {27203, 65, 128, 32, 13504, 32, 1, 423 }, /* tcId: 424. point with coordinate y = 1 in left to right addition chain */ - {27268, 65, 128, 32, 13536, 32, 1 }, + {27268, 65, 128, 32, 13536, 32, 1, 424 }, /* tcId: 425. point with coordinate y = 1 in left to right addition chain */ - {27333, 65, 128, 32, 13568, 32, 1 }, + {27333, 65, 128, 32, 13568, 32, 1, 425 }, /* tcId: 426. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27398, 65, 128, 32, 13600, 32, 1 }, + {27398, 65, 128, 32, 13600, 32, 1, 426 }, /* tcId: 427. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27463, 65, 128, 32, 13632, 32, 1 }, + {27463, 65, 128, 32, 13632, 32, 1, 427 }, /* tcId: 428. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27528, 65, 128, 32, 13664, 32, 1 }, + {27528, 65, 128, 32, 13664, 32, 1, 428 }, /* tcId: 429. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27593, 65, 128, 32, 13696, 32, 1 }, + {27593, 65, 128, 32, 13696, 32, 1, 429 }, /* tcId: 430. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27658, 65, 128, 32, 13728, 32, 1 }, + {27658, 65, 128, 32, 13728, 32, 1, 430 }, /* tcId: 431. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27723, 65, 128, 32, 13760, 32, 1 }, + {27723, 65, 128, 32, 13760, 32, 1, 431 }, /* tcId: 432. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27788, 65, 128, 32, 13792, 32, 1 }, + {27788, 65, 128, 32, 13792, 32, 1, 432 }, /* tcId: 433. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27853, 65, 128, 32, 13824, 32, 1 }, + {27853, 65, 128, 32, 13824, 32, 1, 433 }, /* tcId: 434. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27918, 65, 128, 32, 13856, 32, 1 }, + {27918, 65, 128, 32, 13856, 32, 1, 434 }, /* tcId: 435. point with coordinate y = 1 in precomputation or right to left addition chain */ - {27983, 65, 128, 32, 13888, 32, 1 }, + {27983, 65, 128, 32, 13888, 32, 1, 435 }, /* tcId: 436. point with coordinate y = 1 in precomputation or right to left addition chain */ - {28048, 65, 128, 32, 13920, 32, 1 }, + {28048, 65, 128, 32, 13920, 32, 1, 436 }, /* tcId: 437. point with coordinate y = 1 in precomputation or right to left addition chain */ - {28113, 65, 128, 32, 13952, 32, 1 }, + {28113, 65, 128, 32, 13952, 32, 1, 437 }, /* tcId: 438. point with coordinate y = 1 in precomputation or right to left addition chain */ - {28178, 65, 128, 32, 13984, 32, 1 }, + {28178, 65, 128, 32, 13984, 32, 1, 438 }, /* tcId: 439. point with coordinate y = 1 in precomputation or right to left addition chain */ - {28243, 65, 128, 32, 14016, 32, 1 }, + {28243, 65, 128, 32, 14016, 32, 1, 439 }, /* tcId: 440. point with coordinate y = 1 in precomputation or right to left addition chain */ - {28308, 65, 128, 32, 14048, 32, 1 }, + {28308, 65, 128, 32, 14048, 32, 1, 440 }, /* tcId: 441. point with coordinate y = 1 in precomputation or right to left addition chain */ - {28373, 65, 128, 32, 14080, 32, 1 }, + {28373, 65, 128, 32, 14080, 32, 1, 441 }, /* tcId: 442. point with coordinate y = 1 in precomputation or right to left addition chain */ - {28438, 65, 128, 32, 14112, 32, 1 }, + {28438, 65, 128, 32, 14112, 32, 1, 442 }, /* tcId: 443. point with coordinate y = 1 in precomputation or right to left addition chain */ - {28503, 65, 128, 32, 14144, 32, 1 }, + {28503, 65, 128, 32, 14144, 32, 1, 443 }, /* tcId: 444. point with coordinate y = 1 in right to left addition chain */ - {28568, 65, 128, 32, 14176, 32, 1 }, + {28568, 65, 128, 32, 14176, 32, 1, 444 }, /* tcId: 445. point with coordinate y = 1 in right to left addition chain */ - {28633, 65, 128, 32, 14208, 32, 1 }, + {28633, 65, 128, 32, 14208, 32, 1, 445 }, /* tcId: 446. point with coordinate y = 1 in right to left addition chain */ - {28698, 65, 128, 32, 14240, 32, 1 }, + {28698, 65, 128, 32, 14240, 32, 1, 446 }, /* tcId: 447. point with coordinate y = 1 in right to left addition chain */ - {28763, 65, 128, 32, 14272, 32, 1 }, + {28763, 65, 128, 32, 14272, 32, 1, 447 }, /* tcId: 448. point with coordinate y = 1 in right to left addition chain */ - {28828, 65, 128, 32, 14304, 32, 1 }, + {28828, 65, 128, 32, 14304, 32, 1, 448 }, /* tcId: 449. point with coordinate y = 1 in right to left addition chain */ - {28893, 65, 128, 32, 14336, 32, 1 }, + {28893, 65, 128, 32, 14336, 32, 1, 449 }, /* tcId: 450. point with coordinate y = 1 in right to left addition chain */ - {28958, 65, 128, 32, 14368, 32, 1 }, + {28958, 65, 128, 32, 14368, 32, 1, 450 }, /* tcId: 451. point with coordinate y = 1 in right to left addition chain */ - {29023, 65, 128, 32, 14400, 32, 1 }, + {29023, 65, 128, 32, 14400, 32, 1, 451 }, /* tcId: 452. point with coordinate y = 1 in right to left addition chain */ - {29088, 65, 128, 32, 14432, 32, 1 }, + {29088, 65, 128, 32, 14432, 32, 1, 452 }, /* tcId: 453. point with coordinate y = 1 in right to left addition chain */ - {29153, 65, 128, 32, 14464, 32, 1 }, + {29153, 65, 128, 32, 14464, 32, 1, 453 }, /* tcId: 454. point with coordinate y = 1 in right to left addition chain */ - {29218, 65, 128, 32, 14496, 32, 1 }, + {29218, 65, 128, 32, 14496, 32, 1, 454 }, /* tcId: 455. point with coordinate y = 1 in right to left addition chain */ - {29283, 65, 128, 32, 14528, 32, 1 }, + {29283, 65, 128, 32, 14528, 32, 1, 455 }, /* tcId: 456. point with coordinate y = 1 in right to left addition chain */ - {29348, 65, 128, 32, 14560, 32, 1 }, + {29348, 65, 128, 32, 14560, 32, 1, 456 }, /* tcId: 457. point with coordinate y = 1 in right to left addition chain */ - {29413, 65, 128, 32, 14592, 32, 1 }, + {29413, 65, 128, 32, 14592, 32, 1, 457 }, /* tcId: 458. point with coordinate y = 1 in right to left addition chain */ - {29478, 65, 128, 32, 14624, 32, 1 }, + {29478, 65, 128, 32, 14624, 32, 1, 458 }, /* tcId: 459. edge case private key */ - {29543, 65, 160, 32, 14656, 32, 1 }, + {29543, 65, 160, 32, 14656, 32, 1, 459 }, /* tcId: 460. edge case private key */ - {29543, 65, 192, 32, 14688, 32, 1 }, + {29543, 65, 192, 32, 14688, 32, 1, 460 }, /* tcId: 461. edge case private key */ - {29543, 65, 224, 32, 14720, 32, 1 }, + {29543, 65, 224, 32, 14720, 32, 1, 461 }, /* tcId: 462. edge case private key */ - {29543, 65, 256, 32, 14752, 32, 1 }, + {29543, 65, 256, 32, 14752, 32, 1, 462 }, /* tcId: 463. edge case private key */ - {29543, 65, 288, 32, 14784, 32, 1 }, + {29543, 65, 288, 32, 14784, 32, 1, 463 }, /* tcId: 464. edge case private key */ - {29543, 65, 320, 32, 14816, 32, 1 }, + {29543, 65, 320, 32, 14816, 32, 1, 464 }, /* tcId: 465. edge case private key */ - {29543, 65, 352, 32, 14848, 32, 1 }, + {29543, 65, 352, 32, 14848, 32, 1, 465 }, /* tcId: 466. edge case private key */ - {29543, 65, 384, 32, 14880, 32, 1 }, + {29543, 65, 384, 32, 14880, 32, 1, 466 }, /* tcId: 467. edge case private key */ - {29543, 65, 416, 32, 14912, 32, 1 }, + {29543, 65, 416, 32, 14912, 32, 1, 467 }, /* tcId: 468. edge case private key */ - {29543, 65, 448, 32, 14944, 32, 1 }, + {29543, 65, 448, 32, 14944, 32, 1, 468 }, /* tcId: 469. edge case private key */ - {29543, 65, 480, 32, 14976, 32, 1 }, + {29543, 65, 480, 32, 14976, 32, 1, 469 }, /* tcId: 470. edge case private key */ - {29543, 65, 512, 32, 15008, 32, 1 }, + {29543, 65, 512, 32, 15008, 32, 1, 470 }, /* tcId: 471. edge case private key */ - {29543, 65, 544, 32, 15040, 32, 1 }, + {29543, 65, 544, 32, 15040, 32, 1, 471 }, /* tcId: 472. edge case private key */ - {29543, 65, 576, 32, 15072, 32, 1 }, + {29543, 65, 576, 32, 15072, 32, 1, 472 }, /* tcId: 473. edge case private key */ - {29543, 65, 608, 32, 15104, 32, 1 }, + {29543, 65, 608, 32, 15104, 32, 1, 473 }, /* tcId: 474. edge case private key */ - {29543, 65, 640, 32, 15136, 32, 1 }, + {29543, 65, 640, 32, 15136, 32, 1, 474 }, + /* tcId: 475. point is not on curve */ + {29608, 65, 672, 32, 15168, 0, 0, 475 }, + /* tcId: 476. point is not on curve */ + {29673, 65, 672, 32, 15168, 0, 0, 476 }, + /* tcId: 477. point is not on curve */ + {29738, 65, 672, 32, 15168, 0, 0, 477 }, + /* tcId: 478. point is not on curve */ + {29803, 65, 672, 32, 15168, 0, 0, 478 }, + /* tcId: 479. point is not on curve */ + {29868, 65, 672, 32, 15168, 0, 0, 479 }, + /* tcId: 480. point is not on curve */ + {29933, 65, 672, 32, 15168, 0, 0, 480 }, + /* tcId: 481. point is not on curve */ + {29998, 65, 672, 32, 15168, 0, 0, 481 }, + /* tcId: 482. point is not on curve */ + {30063, 65, 672, 32, 15168, 0, 0, 482 }, + /* tcId: 483. point is not on curve */ + {30128, 65, 672, 32, 15168, 0, 0, 483 }, + /* tcId: 484. point is not on curve */ + {30193, 65, 672, 32, 15168, 0, 0, 484 }, + /* tcId: 485. point is not on curve */ + {30258, 65, 672, 32, 15168, 0, 0, 485 }, + /* tcId: 486. point is not on curve */ + {30323, 65, 672, 32, 15168, 0, 0, 486 }, + /* tcId: 487. point is not on curve */ + {30388, 65, 672, 32, 15168, 0, 0, 487 }, + /* tcId: 488. point is not on curve */ + {30453, 65, 672, 32, 15168, 0, 0, 488 }, + /* tcId: 489. point is not on curve */ + {30518, 65, 672, 32, 15168, 0, 0, 489 }, + /* tcId: 490. point is not on curve */ + {30583, 65, 672, 32, 15168, 0, 0, 490 }, + /* tcId: 491. */ + {30648, 0, 672, 32, 15168, 0, 0, 491 }, /* tcId: 494. public point not on curve */ - {29608, 65, 672, 32, 15168, 0, 0 }, + {30648, 65, 704, 32, 15168, 0, 0, 494 }, /* tcId: 495. public point = (0,0) */ - {29673, 65, 672, 32, 15168, 0, 0 }, + {29608, 65, 704, 32, 15168, 0, 0, 495 }, + /* tcId: 498. order = 1 */ + {30713, 65, 704, 32, 15168, 32, 1, 498 }, + /* tcId: 499. order = 26959946667150639794667015087019630673536463705607434823784316690060 */ + {30713, 65, 704, 32, 15200, 32, 1, 499 }, + /* tcId: 500. generator = (0,0) */ + {30713, 65, 704, 32, 15232, 32, 1, 500 }, + /* tcId: 501. generator not on curve */ + {30713, 65, 704, 32, 15264, 32, 1, 501 }, + /* tcId: 506. cofactor = None */ + {30713, 65, 704, 32, 15296, 32, 1, 506 }, /* tcId: 508. using secp224r1 */ - {29738, 57, 672, 32, 15168, 0, 0 }, + {30778, 57, 704, 32, 15328, 0, 0, 508 }, /* tcId: 509. using secp256r1 */ - {29795, 65, 672, 32, 15168, 0, 0 }, + {30835, 65, 704, 32, 15328, 0, 0, 509 }, + /* tcId: 510. a = 0 */ + {30713, 65, 704, 32, 15328, 32, 1, 510 }, + /* tcId: 511. public key of order 3 */ + {30900, 65, 704, 32, 15360, 0, 0, 511 }, /* tcId: 528. invalid public key */ - {29860, 33, 704, 32, 15168, 0, 0 }, + {30965, 33, 736, 32, 15360, 0, 0, 528 }, }; diff --git a/tools/tests_wycheproof_generate_ecdh.py b/tools/tests_wycheproof_generate_ecdh.py index 26dd8a1eac..706233cbe6 100755 --- a/tools/tests_wycheproof_generate_ecdh.py +++ b/tools/tests_wycheproof_generate_ecdh.py @@ -12,18 +12,37 @@ from binascii import hexlify, unhexlify from wycheproof_utils import to_c_array -def should_skip(test_vector_flags): +def should_skip_flags(test_vector_flags): # skip these vectors because they are for ASN.1 encoding issues and other curves - flags_to_skip = {"InvalidAsn", "InvalidCurveAttack", "InvalidEncoding", "WrongCurve", "UnnamedCurve"} + flags_to_skip = {"InvalidAsn", "WrongCurve"} return any(flag in test_vector_flags for flag in flags_to_skip) +def should_skip_tcid(test_vector_tcid): + ''' + We skip some test case IDs that have a public key whose custom ASN.1 representation explicitly + encodes some curve parameters that are invalid. libsecp256k1 never parses this part so we do + not care testing those. See https://github.com/bitcoin-core/secp256k1/pull/1492#discussion_r1572491546 + ''' + tcids_to_skip = [496, 497, 502, 503, 504, 505, 507] + return test_vector_tcid in tcids_to_skip + # Rudimentary ASN.1 DER public key parser. # This should not be used for anything other than parsing Wycheproof test vectors. def parse_der_pk(s): tag = s[0] L = int(s[1]) - value = s[2:(L+2)] - rest = s[(L+2):] + offset = 0 + if L & 0x80: + if L == 0x81: + L = int(s[2]) + offset = 1 + elif L == 0x82: + L = 256*int(s[2]) + int(s[3]) + offset = 2 + else: + raise ValueError("invalid L") + value = s[(offset+2):(L+2+offset)] + rest = s[(L+2+offset):] if len(rest) > 0 or tag == 0x06: # OBJECT IDENTIFIER return parse_der_pk(rest) @@ -71,7 +90,7 @@ def normalize_expected_result(er): for j in range(num_tests): test_vector = group['tests'][j] - if should_skip(test_vector['flags']): + if should_skip_flags(test_vector['flags']) or should_skip_tcid(test_vector['tcId']): continue public_key = parse_public_key(test_vector['public']) @@ -114,9 +133,10 @@ def normalize_expected_result(er): pk_offset = cache_public_keys[pk] shared_secrets += to_c_array(test_vector['shared']) + wycheproof_tcid = test_vector['tcId'] out += " /" + "* tcId: " + str(test_vector['tcId']) + ". " + test_vector['comment'] + " *" + "/\n" - out += f" {{{pk_offset}, {pk_size}, {sk_offset}, {sk_size}, {offset_shared}, {shared_size}, {expected_result} }},\n" + out += f" {{{pk_offset}, {pk_size}, {sk_offset}, {sk_size}, {offset_shared}, {shared_size}, {expected_result}, {wycheproof_tcid} }},\n" if new_sk: offset_sk_running += sk_size if new_pk: @@ -133,6 +153,7 @@ def normalize_expected_result(er): size_t shared_offset; size_t shared_len; int expected_result; + int wycheproof_tcid; } wycheproof_ecdh_testvector; """