1afc4e4a5SEric Biggers // SPDX-License-Identifier: GPL-2.0 OR MIT 2afc4e4a5SEric Biggers /* 3afc4e4a5SEric Biggers * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 4afc4e4a5SEric Biggers */ 5afc4e4a5SEric Biggers 6afc4e4a5SEric Biggers #include <crypto/curve25519.h> 7afc4e4a5SEric Biggers #include <kunit/test.h> 8*643d79e5SEric Biggers #include <linux/timekeeping.h> 9afc4e4a5SEric Biggers 10afc4e4a5SEric Biggers struct curve25519_test_vector { 11afc4e4a5SEric Biggers u8 private[CURVE25519_KEY_SIZE]; 12afc4e4a5SEric Biggers u8 public[CURVE25519_KEY_SIZE]; 13afc4e4a5SEric Biggers u8 result[CURVE25519_KEY_SIZE]; 14afc4e4a5SEric Biggers bool valid; 15afc4e4a5SEric Biggers }; 16afc4e4a5SEric Biggers static const struct curve25519_test_vector curve25519_test_vectors[] = { 17afc4e4a5SEric Biggers { 18afc4e4a5SEric Biggers .private = { 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 19afc4e4a5SEric Biggers 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, 0x66, 0x45, 20afc4e4a5SEric Biggers 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, 21afc4e4a5SEric Biggers 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a }, 22afc4e4a5SEric Biggers .public = { 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 23afc4e4a5SEric Biggers 0xd3, 0x5b, 0x61, 0xc2, 0xec, 0xe4, 0x35, 0x37, 24afc4e4a5SEric Biggers 0x3f, 0x83, 0x43, 0xc8, 0x5b, 0x78, 0x67, 0x4d, 25afc4e4a5SEric Biggers 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f }, 26afc4e4a5SEric Biggers .result = { 0x4a, 0x5d, 0x9d, 0x5b, 0xa4, 0xce, 0x2d, 0xe1, 27afc4e4a5SEric Biggers 0x72, 0x8e, 0x3b, 0xf4, 0x80, 0x35, 0x0f, 0x25, 28afc4e4a5SEric Biggers 0xe0, 0x7e, 0x21, 0xc9, 0x47, 0xd1, 0x9e, 0x33, 29afc4e4a5SEric Biggers 0x76, 0xf0, 0x9b, 0x3c, 0x1e, 0x16, 0x17, 0x42 }, 30afc4e4a5SEric Biggers .valid = true 31afc4e4a5SEric Biggers }, 32afc4e4a5SEric Biggers { 33afc4e4a5SEric Biggers .private = { 0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, 0x4b, 34afc4e4a5SEric Biggers 0x79, 0xe1, 0x7f, 0x8b, 0x83, 0x80, 0x0e, 0xe6, 35afc4e4a5SEric Biggers 0x6f, 0x3b, 0xb1, 0x29, 0x26, 0x18, 0xb6, 0xfd, 36afc4e4a5SEric Biggers 0x1c, 0x2f, 0x8b, 0x27, 0xff, 0x88, 0xe0, 0xeb }, 37afc4e4a5SEric Biggers .public = { 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 38afc4e4a5SEric Biggers 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 39afc4e4a5SEric Biggers 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 40afc4e4a5SEric Biggers 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a }, 41afc4e4a5SEric Biggers .result = { 0x4a, 0x5d, 0x9d, 0x5b, 0xa4, 0xce, 0x2d, 0xe1, 42afc4e4a5SEric Biggers 0x72, 0x8e, 0x3b, 0xf4, 0x80, 0x35, 0x0f, 0x25, 43afc4e4a5SEric Biggers 0xe0, 0x7e, 0x21, 0xc9, 0x47, 0xd1, 0x9e, 0x33, 44afc4e4a5SEric Biggers 0x76, 0xf0, 0x9b, 0x3c, 0x1e, 0x16, 0x17, 0x42 }, 45afc4e4a5SEric Biggers .valid = true 46afc4e4a5SEric Biggers }, 47afc4e4a5SEric Biggers { 48afc4e4a5SEric Biggers .private = { 1 }, 49afc4e4a5SEric Biggers .public = { 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 50afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 51afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 52afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 53afc4e4a5SEric Biggers .result = { 0x3c, 0x77, 0x77, 0xca, 0xf9, 0x97, 0xb2, 0x64, 54afc4e4a5SEric Biggers 0x41, 0x60, 0x77, 0x66, 0x5b, 0x4e, 0x22, 0x9d, 55afc4e4a5SEric Biggers 0x0b, 0x95, 0x48, 0xdc, 0x0c, 0xd8, 0x19, 0x98, 56afc4e4a5SEric Biggers 0xdd, 0xcd, 0xc5, 0xc8, 0x53, 0x3c, 0x79, 0x7f }, 57afc4e4a5SEric Biggers .valid = true 58afc4e4a5SEric Biggers }, 59afc4e4a5SEric Biggers { 60afc4e4a5SEric Biggers .private = { 1 }, 61afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 62afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 63afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 64afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 65afc4e4a5SEric Biggers .result = { 0xb3, 0x2d, 0x13, 0x62, 0xc2, 0x48, 0xd6, 0x2f, 66afc4e4a5SEric Biggers 0xe6, 0x26, 0x19, 0xcf, 0xf0, 0x4d, 0xd4, 0x3d, 67afc4e4a5SEric Biggers 0xb7, 0x3f, 0xfc, 0x1b, 0x63, 0x08, 0xed, 0xe3, 68afc4e4a5SEric Biggers 0x0b, 0x78, 0xd8, 0x73, 0x80, 0xf1, 0xe8, 0x34 }, 69afc4e4a5SEric Biggers .valid = true 70afc4e4a5SEric Biggers }, 71afc4e4a5SEric Biggers { 72afc4e4a5SEric Biggers .private = { 0xa5, 0x46, 0xe3, 0x6b, 0xf0, 0x52, 0x7c, 0x9d, 73afc4e4a5SEric Biggers 0x3b, 0x16, 0x15, 0x4b, 0x82, 0x46, 0x5e, 0xdd, 74afc4e4a5SEric Biggers 0x62, 0x14, 0x4c, 0x0a, 0xc1, 0xfc, 0x5a, 0x18, 75afc4e4a5SEric Biggers 0x50, 0x6a, 0x22, 0x44, 0xba, 0x44, 0x9a, 0xc4 }, 76afc4e4a5SEric Biggers .public = { 0xe6, 0xdb, 0x68, 0x67, 0x58, 0x30, 0x30, 0xdb, 77afc4e4a5SEric Biggers 0x35, 0x94, 0xc1, 0xa4, 0x24, 0xb1, 0x5f, 0x7c, 78afc4e4a5SEric Biggers 0x72, 0x66, 0x24, 0xec, 0x26, 0xb3, 0x35, 0x3b, 79afc4e4a5SEric Biggers 0x10, 0xa9, 0x03, 0xa6, 0xd0, 0xab, 0x1c, 0x4c }, 80afc4e4a5SEric Biggers .result = { 0xc3, 0xda, 0x55, 0x37, 0x9d, 0xe9, 0xc6, 0x90, 81afc4e4a5SEric Biggers 0x8e, 0x94, 0xea, 0x4d, 0xf2, 0x8d, 0x08, 0x4f, 82afc4e4a5SEric Biggers 0x32, 0xec, 0xcf, 0x03, 0x49, 0x1c, 0x71, 0xf7, 83afc4e4a5SEric Biggers 0x54, 0xb4, 0x07, 0x55, 0x77, 0xa2, 0x85, 0x52 }, 84afc4e4a5SEric Biggers .valid = true 85afc4e4a5SEric Biggers }, 86afc4e4a5SEric Biggers { 87afc4e4a5SEric Biggers .private = { 1, 2, 3, 4 }, 88afc4e4a5SEric Biggers .public = { 0 }, 89afc4e4a5SEric Biggers .result = { 0 }, 90afc4e4a5SEric Biggers .valid = false 91afc4e4a5SEric Biggers }, 92afc4e4a5SEric Biggers { 93afc4e4a5SEric Biggers .private = { 2, 4, 6, 8 }, 94afc4e4a5SEric Biggers .public = { 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 95afc4e4a5SEric Biggers 0x16, 0x56, 0xe3, 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 96afc4e4a5SEric Biggers 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, 0xb1, 0xfd, 97afc4e4a5SEric Biggers 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8 }, 98afc4e4a5SEric Biggers .result = { 0 }, 99afc4e4a5SEric Biggers .valid = false 100afc4e4a5SEric Biggers }, 101afc4e4a5SEric Biggers { 102afc4e4a5SEric Biggers .private = { 0xff, 0xff, 0xff, 0xff, 0x0a, 0xff, 0xff, 0xff, 103afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 104afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 105afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 106afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 107afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 108afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 109afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0x0a, 0x00, 0xfb, 0x9f }, 110afc4e4a5SEric Biggers .result = { 0x77, 0x52, 0xb6, 0x18, 0xc1, 0x2d, 0x48, 0xd2, 111afc4e4a5SEric Biggers 0xc6, 0x93, 0x46, 0x83, 0x81, 0x7c, 0xc6, 0x57, 112afc4e4a5SEric Biggers 0xf3, 0x31, 0x03, 0x19, 0x49, 0x48, 0x20, 0x05, 113afc4e4a5SEric Biggers 0x42, 0x2b, 0x4e, 0xae, 0x8d, 0x1d, 0x43, 0x23 }, 114afc4e4a5SEric Biggers .valid = true 115afc4e4a5SEric Biggers }, 116afc4e4a5SEric Biggers { 117afc4e4a5SEric Biggers .private = { 0x8e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 118afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 119afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 120afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 121afc4e4a5SEric Biggers .public = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 122afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 123afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 124afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x06 }, 125afc4e4a5SEric Biggers .result = { 0x5a, 0xdf, 0xaa, 0x25, 0x86, 0x8e, 0x32, 0x3d, 126afc4e4a5SEric Biggers 0xae, 0x49, 0x62, 0xc1, 0x01, 0x5c, 0xb3, 0x12, 127afc4e4a5SEric Biggers 0xe1, 0xc5, 0xc7, 0x9e, 0x95, 0x3f, 0x03, 0x99, 128afc4e4a5SEric Biggers 0xb0, 0xba, 0x16, 0x22, 0xf3, 0xb6, 0xf7, 0x0c }, 129afc4e4a5SEric Biggers .valid = true 130afc4e4a5SEric Biggers }, 131afc4e4a5SEric Biggers /* wycheproof - normal case */ 132afc4e4a5SEric Biggers { 133afc4e4a5SEric Biggers .private = { 0x48, 0x52, 0x83, 0x4d, 0x9d, 0x6b, 0x77, 0xda, 134afc4e4a5SEric Biggers 0xde, 0xab, 0xaa, 0xf2, 0xe1, 0x1d, 0xca, 0x66, 135afc4e4a5SEric Biggers 0xd1, 0x9f, 0xe7, 0x49, 0x93, 0xa7, 0xbe, 0xc3, 136afc4e4a5SEric Biggers 0x6c, 0x6e, 0x16, 0xa0, 0x98, 0x3f, 0xea, 0xba }, 137afc4e4a5SEric Biggers .public = { 0x9c, 0x64, 0x7d, 0x9a, 0xe5, 0x89, 0xb9, 0xf5, 138afc4e4a5SEric Biggers 0x8f, 0xdc, 0x3c, 0xa4, 0x94, 0x7e, 0xfb, 0xc9, 139afc4e4a5SEric Biggers 0x15, 0xc4, 0xb2, 0xe0, 0x8e, 0x74, 0x4a, 0x0e, 140afc4e4a5SEric Biggers 0xdf, 0x46, 0x9d, 0xac, 0x59, 0xc8, 0xf8, 0x5a }, 141afc4e4a5SEric Biggers .result = { 0x87, 0xb7, 0xf2, 0x12, 0xb6, 0x27, 0xf7, 0xa5, 142afc4e4a5SEric Biggers 0x4c, 0xa5, 0xe0, 0xbc, 0xda, 0xdd, 0xd5, 0x38, 143afc4e4a5SEric Biggers 0x9d, 0x9d, 0xe6, 0x15, 0x6c, 0xdb, 0xcf, 0x8e, 144afc4e4a5SEric Biggers 0xbe, 0x14, 0xff, 0xbc, 0xfb, 0x43, 0x65, 0x51 }, 145afc4e4a5SEric Biggers .valid = true 146afc4e4a5SEric Biggers }, 147afc4e4a5SEric Biggers /* wycheproof - public key on twist */ 148afc4e4a5SEric Biggers { 149afc4e4a5SEric Biggers .private = { 0x58, 0x8c, 0x06, 0x1a, 0x50, 0x80, 0x4a, 0xc4, 150afc4e4a5SEric Biggers 0x88, 0xad, 0x77, 0x4a, 0xc7, 0x16, 0xc3, 0xf5, 151afc4e4a5SEric Biggers 0xba, 0x71, 0x4b, 0x27, 0x12, 0xe0, 0x48, 0x49, 152afc4e4a5SEric Biggers 0x13, 0x79, 0xa5, 0x00, 0x21, 0x19, 0x98, 0xa8 }, 153afc4e4a5SEric Biggers .public = { 0x63, 0xaa, 0x40, 0xc6, 0xe3, 0x83, 0x46, 0xc5, 154afc4e4a5SEric Biggers 0xca, 0xf2, 0x3a, 0x6d, 0xf0, 0xa5, 0xe6, 0xc8, 155afc4e4a5SEric Biggers 0x08, 0x89, 0xa0, 0x86, 0x47, 0xe5, 0x51, 0xb3, 156afc4e4a5SEric Biggers 0x56, 0x34, 0x49, 0xbe, 0xfc, 0xfc, 0x97, 0x33 }, 157afc4e4a5SEric Biggers .result = { 0xb1, 0xa7, 0x07, 0x51, 0x94, 0x95, 0xff, 0xff, 158afc4e4a5SEric Biggers 0xb2, 0x98, 0xff, 0x94, 0x17, 0x16, 0xb0, 0x6d, 159afc4e4a5SEric Biggers 0xfa, 0xb8, 0x7c, 0xf8, 0xd9, 0x11, 0x23, 0xfe, 160afc4e4a5SEric Biggers 0x2b, 0xe9, 0xa2, 0x33, 0xdd, 0xa2, 0x22, 0x12 }, 161afc4e4a5SEric Biggers .valid = true 162afc4e4a5SEric Biggers }, 163afc4e4a5SEric Biggers /* wycheproof - public key on twist */ 164afc4e4a5SEric Biggers { 165afc4e4a5SEric Biggers .private = { 0xb0, 0x5b, 0xfd, 0x32, 0xe5, 0x53, 0x25, 0xd9, 166afc4e4a5SEric Biggers 0xfd, 0x64, 0x8c, 0xb3, 0x02, 0x84, 0x80, 0x39, 167afc4e4a5SEric Biggers 0x00, 0x0b, 0x39, 0x0e, 0x44, 0xd5, 0x21, 0xe5, 168afc4e4a5SEric Biggers 0x8a, 0xab, 0x3b, 0x29, 0xa6, 0x96, 0x0b, 0xa8 }, 169afc4e4a5SEric Biggers .public = { 0x0f, 0x83, 0xc3, 0x6f, 0xde, 0xd9, 0xd3, 0x2f, 170afc4e4a5SEric Biggers 0xad, 0xf4, 0xef, 0xa3, 0xae, 0x93, 0xa9, 0x0b, 171afc4e4a5SEric Biggers 0xb5, 0xcf, 0xa6, 0x68, 0x93, 0xbc, 0x41, 0x2c, 172afc4e4a5SEric Biggers 0x43, 0xfa, 0x72, 0x87, 0xdb, 0xb9, 0x97, 0x79 }, 173afc4e4a5SEric Biggers .result = { 0x67, 0xdd, 0x4a, 0x6e, 0x16, 0x55, 0x33, 0x53, 174afc4e4a5SEric Biggers 0x4c, 0x0e, 0x3f, 0x17, 0x2e, 0x4a, 0xb8, 0x57, 175afc4e4a5SEric Biggers 0x6b, 0xca, 0x92, 0x3a, 0x5f, 0x07, 0xb2, 0xc0, 176afc4e4a5SEric Biggers 0x69, 0xb4, 0xc3, 0x10, 0xff, 0x2e, 0x93, 0x5b }, 177afc4e4a5SEric Biggers .valid = true 178afc4e4a5SEric Biggers }, 179afc4e4a5SEric Biggers /* wycheproof - public key on twist */ 180afc4e4a5SEric Biggers { 181afc4e4a5SEric Biggers .private = { 0x70, 0xe3, 0x4b, 0xcb, 0xe1, 0xf4, 0x7f, 0xbc, 182afc4e4a5SEric Biggers 0x0f, 0xdd, 0xfd, 0x7c, 0x1e, 0x1a, 0xa5, 0x3d, 183afc4e4a5SEric Biggers 0x57, 0xbf, 0xe0, 0xf6, 0x6d, 0x24, 0x30, 0x67, 184afc4e4a5SEric Biggers 0xb4, 0x24, 0xbb, 0x62, 0x10, 0xbe, 0xd1, 0x9c }, 185afc4e4a5SEric Biggers .public = { 0x0b, 0x82, 0x11, 0xa2, 0xb6, 0x04, 0x90, 0x97, 186afc4e4a5SEric Biggers 0xf6, 0x87, 0x1c, 0x6c, 0x05, 0x2d, 0x3c, 0x5f, 187afc4e4a5SEric Biggers 0xc1, 0xba, 0x17, 0xda, 0x9e, 0x32, 0xae, 0x45, 188afc4e4a5SEric Biggers 0x84, 0x03, 0xb0, 0x5b, 0xb2, 0x83, 0x09, 0x2a }, 189afc4e4a5SEric Biggers .result = { 0x4a, 0x06, 0x38, 0xcf, 0xaa, 0x9e, 0xf1, 0x93, 190afc4e4a5SEric Biggers 0x3b, 0x47, 0xf8, 0x93, 0x92, 0x96, 0xa6, 0xb2, 191afc4e4a5SEric Biggers 0x5b, 0xe5, 0x41, 0xef, 0x7f, 0x70, 0xe8, 0x44, 192afc4e4a5SEric Biggers 0xc0, 0xbc, 0xc0, 0x0b, 0x13, 0x4d, 0xe6, 0x4a }, 193afc4e4a5SEric Biggers .valid = true 194afc4e4a5SEric Biggers }, 195afc4e4a5SEric Biggers /* wycheproof - public key on twist */ 196afc4e4a5SEric Biggers { 197afc4e4a5SEric Biggers .private = { 0x68, 0xc1, 0xf3, 0xa6, 0x53, 0xa4, 0xcd, 0xb1, 198afc4e4a5SEric Biggers 0xd3, 0x7b, 0xba, 0x94, 0x73, 0x8f, 0x8b, 0x95, 199afc4e4a5SEric Biggers 0x7a, 0x57, 0xbe, 0xb2, 0x4d, 0x64, 0x6e, 0x99, 200afc4e4a5SEric Biggers 0x4d, 0xc2, 0x9a, 0x27, 0x6a, 0xad, 0x45, 0x8d }, 201afc4e4a5SEric Biggers .public = { 0x34, 0x3a, 0xc2, 0x0a, 0x3b, 0x9c, 0x6a, 0x27, 202afc4e4a5SEric Biggers 0xb1, 0x00, 0x81, 0x76, 0x50, 0x9a, 0xd3, 0x07, 203afc4e4a5SEric Biggers 0x35, 0x85, 0x6e, 0xc1, 0xc8, 0xd8, 0xfc, 0xae, 204afc4e4a5SEric Biggers 0x13, 0x91, 0x2d, 0x08, 0xd1, 0x52, 0xf4, 0x6c }, 205afc4e4a5SEric Biggers .result = { 0x39, 0x94, 0x91, 0xfc, 0xe8, 0xdf, 0xab, 0x73, 206afc4e4a5SEric Biggers 0xb4, 0xf9, 0xf6, 0x11, 0xde, 0x8e, 0xa0, 0xb2, 207afc4e4a5SEric Biggers 0x7b, 0x28, 0xf8, 0x59, 0x94, 0x25, 0x0b, 0x0f, 208afc4e4a5SEric Biggers 0x47, 0x5d, 0x58, 0x5d, 0x04, 0x2a, 0xc2, 0x07 }, 209afc4e4a5SEric Biggers .valid = true 210afc4e4a5SEric Biggers }, 211afc4e4a5SEric Biggers /* wycheproof - public key on twist */ 212afc4e4a5SEric Biggers { 213afc4e4a5SEric Biggers .private = { 0xd8, 0x77, 0xb2, 0x6d, 0x06, 0xdf, 0xf9, 0xd9, 214afc4e4a5SEric Biggers 0xf7, 0xfd, 0x4c, 0x5b, 0x37, 0x69, 0xf8, 0xcd, 215afc4e4a5SEric Biggers 0xd5, 0xb3, 0x05, 0x16, 0xa5, 0xab, 0x80, 0x6b, 216afc4e4a5SEric Biggers 0xe3, 0x24, 0xff, 0x3e, 0xb6, 0x9e, 0xa0, 0xb2 }, 217afc4e4a5SEric Biggers .public = { 0xfa, 0x69, 0x5f, 0xc7, 0xbe, 0x8d, 0x1b, 0xe5, 218afc4e4a5SEric Biggers 0xbf, 0x70, 0x48, 0x98, 0xf3, 0x88, 0xc4, 0x52, 219afc4e4a5SEric Biggers 0xba, 0xfd, 0xd3, 0xb8, 0xea, 0xe8, 0x05, 0xf8, 220afc4e4a5SEric Biggers 0x68, 0x1a, 0x8d, 0x15, 0xc2, 0xd4, 0xe1, 0x42 }, 221afc4e4a5SEric Biggers .result = { 0x2c, 0x4f, 0xe1, 0x1d, 0x49, 0x0a, 0x53, 0x86, 222afc4e4a5SEric Biggers 0x17, 0x76, 0xb1, 0x3b, 0x43, 0x54, 0xab, 0xd4, 223afc4e4a5SEric Biggers 0xcf, 0x5a, 0x97, 0x69, 0x9d, 0xb6, 0xe6, 0xc6, 224afc4e4a5SEric Biggers 0x8c, 0x16, 0x26, 0xd0, 0x76, 0x62, 0xf7, 0x58 }, 225afc4e4a5SEric Biggers .valid = true 226afc4e4a5SEric Biggers }, 227afc4e4a5SEric Biggers /* wycheproof - public key = 0 */ 228afc4e4a5SEric Biggers { 229afc4e4a5SEric Biggers .private = { 0x20, 0x74, 0x94, 0x03, 0x8f, 0x2b, 0xb8, 0x11, 230afc4e4a5SEric Biggers 0xd4, 0x78, 0x05, 0xbc, 0xdf, 0x04, 0xa2, 0xac, 231afc4e4a5SEric Biggers 0x58, 0x5a, 0xda, 0x7f, 0x2f, 0x23, 0x38, 0x9b, 232afc4e4a5SEric Biggers 0xfd, 0x46, 0x58, 0xf9, 0xdd, 0xd4, 0xde, 0xbc }, 233afc4e4a5SEric Biggers .public = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 234afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 235afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 236afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 237afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 238afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 239afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 240afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 241afc4e4a5SEric Biggers .valid = false 242afc4e4a5SEric Biggers }, 243afc4e4a5SEric Biggers /* wycheproof - public key = 1 */ 244afc4e4a5SEric Biggers { 245afc4e4a5SEric Biggers .private = { 0x20, 0x2e, 0x89, 0x72, 0xb6, 0x1c, 0x7e, 0x61, 246afc4e4a5SEric Biggers 0x93, 0x0e, 0xb9, 0x45, 0x0b, 0x50, 0x70, 0xea, 247afc4e4a5SEric Biggers 0xe1, 0xc6, 0x70, 0x47, 0x56, 0x85, 0x54, 0x1f, 248afc4e4a5SEric Biggers 0x04, 0x76, 0x21, 0x7e, 0x48, 0x18, 0xcf, 0xab }, 249afc4e4a5SEric Biggers .public = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 250afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 251afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 252afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 253afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 254afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 255afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 256afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 257afc4e4a5SEric Biggers .valid = false 258afc4e4a5SEric Biggers }, 259afc4e4a5SEric Biggers /* wycheproof - edge case on twist */ 260afc4e4a5SEric Biggers { 261afc4e4a5SEric Biggers .private = { 0x38, 0xdd, 0xe9, 0xf3, 0xe7, 0xb7, 0x99, 0x04, 262afc4e4a5SEric Biggers 0x5f, 0x9a, 0xc3, 0x79, 0x3d, 0x4a, 0x92, 0x77, 263afc4e4a5SEric Biggers 0xda, 0xde, 0xad, 0xc4, 0x1b, 0xec, 0x02, 0x90, 264afc4e4a5SEric Biggers 0xf8, 0x1f, 0x74, 0x4f, 0x73, 0x77, 0x5f, 0x84 }, 265afc4e4a5SEric Biggers .public = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 266afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 267afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 268afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 269afc4e4a5SEric Biggers .result = { 0x9a, 0x2c, 0xfe, 0x84, 0xff, 0x9c, 0x4a, 0x97, 270afc4e4a5SEric Biggers 0x39, 0x62, 0x5c, 0xae, 0x4a, 0x3b, 0x82, 0xa9, 271afc4e4a5SEric Biggers 0x06, 0x87, 0x7a, 0x44, 0x19, 0x46, 0xf8, 0xd7, 272afc4e4a5SEric Biggers 0xb3, 0xd7, 0x95, 0xfe, 0x8f, 0x5d, 0x16, 0x39 }, 273afc4e4a5SEric Biggers .valid = true 274afc4e4a5SEric Biggers }, 275afc4e4a5SEric Biggers /* wycheproof - edge case on twist */ 276afc4e4a5SEric Biggers { 277afc4e4a5SEric Biggers .private = { 0x98, 0x57, 0xa9, 0x14, 0xe3, 0xc2, 0x90, 0x36, 278afc4e4a5SEric Biggers 0xfd, 0x9a, 0x44, 0x2b, 0xa5, 0x26, 0xb5, 0xcd, 279afc4e4a5SEric Biggers 0xcd, 0xf2, 0x82, 0x16, 0x15, 0x3e, 0x63, 0x6c, 280afc4e4a5SEric Biggers 0x10, 0x67, 0x7a, 0xca, 0xb6, 0xbd, 0x6a, 0xa5 }, 281afc4e4a5SEric Biggers .public = { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 282afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 283afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 284afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 285afc4e4a5SEric Biggers .result = { 0x4d, 0xa4, 0xe0, 0xaa, 0x07, 0x2c, 0x23, 0x2e, 286afc4e4a5SEric Biggers 0xe2, 0xf0, 0xfa, 0x4e, 0x51, 0x9a, 0xe5, 0x0b, 287afc4e4a5SEric Biggers 0x52, 0xc1, 0xed, 0xd0, 0x8a, 0x53, 0x4d, 0x4e, 288afc4e4a5SEric Biggers 0xf3, 0x46, 0xc2, 0xe1, 0x06, 0xd2, 0x1d, 0x60 }, 289afc4e4a5SEric Biggers .valid = true 290afc4e4a5SEric Biggers }, 291afc4e4a5SEric Biggers /* wycheproof - edge case on twist */ 292afc4e4a5SEric Biggers { 293afc4e4a5SEric Biggers .private = { 0x48, 0xe2, 0x13, 0x0d, 0x72, 0x33, 0x05, 0xed, 294afc4e4a5SEric Biggers 0x05, 0xe6, 0xe5, 0x89, 0x4d, 0x39, 0x8a, 0x5e, 295afc4e4a5SEric Biggers 0x33, 0x36, 0x7a, 0x8c, 0x6a, 0xac, 0x8f, 0xcd, 296afc4e4a5SEric Biggers 0xf0, 0xa8, 0x8e, 0x4b, 0x42, 0x82, 0x0d, 0xb7 }, 297afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0xff, 298afc4e4a5SEric Biggers 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 299afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0x00, 300afc4e4a5SEric Biggers 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00 }, 301afc4e4a5SEric Biggers .result = { 0x9e, 0xd1, 0x0c, 0x53, 0x74, 0x7f, 0x64, 0x7f, 302afc4e4a5SEric Biggers 0x82, 0xf4, 0x51, 0x25, 0xd3, 0xde, 0x15, 0xa1, 303afc4e4a5SEric Biggers 0xe6, 0xb8, 0x24, 0x49, 0x6a, 0xb4, 0x04, 0x10, 304afc4e4a5SEric Biggers 0xff, 0xcc, 0x3c, 0xfe, 0x95, 0x76, 0x0f, 0x3b }, 305afc4e4a5SEric Biggers .valid = true 306afc4e4a5SEric Biggers }, 307afc4e4a5SEric Biggers /* wycheproof - edge case on twist */ 308afc4e4a5SEric Biggers { 309afc4e4a5SEric Biggers .private = { 0x28, 0xf4, 0x10, 0x11, 0x69, 0x18, 0x51, 0xb3, 310afc4e4a5SEric Biggers 0xa6, 0x2b, 0x64, 0x15, 0x53, 0xb3, 0x0d, 0x0d, 311afc4e4a5SEric Biggers 0xfd, 0xdc, 0xb8, 0xff, 0xfc, 0xf5, 0x37, 0x00, 312afc4e4a5SEric Biggers 0xa7, 0xbe, 0x2f, 0x6a, 0x87, 0x2e, 0x9f, 0xb0 }, 313afc4e4a5SEric Biggers .public = { 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0x00, 314afc4e4a5SEric Biggers 0x00, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 315afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0xff, 316afc4e4a5SEric Biggers 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f }, 317afc4e4a5SEric Biggers .result = { 0xcf, 0x72, 0xb4, 0xaa, 0x6a, 0xa1, 0xc9, 0xf8, 318afc4e4a5SEric Biggers 0x94, 0xf4, 0x16, 0x5b, 0x86, 0x10, 0x9a, 0xa4, 319afc4e4a5SEric Biggers 0x68, 0x51, 0x76, 0x48, 0xe1, 0xf0, 0xcc, 0x70, 320afc4e4a5SEric Biggers 0xe1, 0xab, 0x08, 0x46, 0x01, 0x76, 0x50, 0x6b }, 321afc4e4a5SEric Biggers .valid = true 322afc4e4a5SEric Biggers }, 323afc4e4a5SEric Biggers /* wycheproof - edge case on twist */ 324afc4e4a5SEric Biggers { 325afc4e4a5SEric Biggers .private = { 0x18, 0xa9, 0x3b, 0x64, 0x99, 0xb9, 0xf6, 0xb3, 326afc4e4a5SEric Biggers 0x22, 0x5c, 0xa0, 0x2f, 0xef, 0x41, 0x0e, 0x0a, 327afc4e4a5SEric Biggers 0xde, 0xc2, 0x35, 0x32, 0x32, 0x1d, 0x2d, 0x8e, 328afc4e4a5SEric Biggers 0xf1, 0xa6, 0xd6, 0x02, 0xa8, 0xc6, 0x5b, 0x83 }, 329afc4e4a5SEric Biggers .public = { 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 330afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 331afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 332afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f }, 333afc4e4a5SEric Biggers .result = { 0x5d, 0x50, 0xb6, 0x28, 0x36, 0xbb, 0x69, 0x57, 334afc4e4a5SEric Biggers 0x94, 0x10, 0x38, 0x6c, 0xf7, 0xbb, 0x81, 0x1c, 335afc4e4a5SEric Biggers 0x14, 0xbf, 0x85, 0xb1, 0xc7, 0xb1, 0x7e, 0x59, 336afc4e4a5SEric Biggers 0x24, 0xc7, 0xff, 0xea, 0x91, 0xef, 0x9e, 0x12 }, 337afc4e4a5SEric Biggers .valid = true 338afc4e4a5SEric Biggers }, 339afc4e4a5SEric Biggers /* wycheproof - edge case on twist */ 340afc4e4a5SEric Biggers { 341afc4e4a5SEric Biggers .private = { 0xc0, 0x1d, 0x13, 0x05, 0xa1, 0x33, 0x8a, 0x1f, 342afc4e4a5SEric Biggers 0xca, 0xc2, 0xba, 0x7e, 0x2e, 0x03, 0x2b, 0x42, 343afc4e4a5SEric Biggers 0x7e, 0x0b, 0x04, 0x90, 0x31, 0x65, 0xac, 0xa9, 344afc4e4a5SEric Biggers 0x57, 0xd8, 0xd0, 0x55, 0x3d, 0x87, 0x17, 0xb0 }, 345afc4e4a5SEric Biggers .public = { 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 346afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 347afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 348afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 349afc4e4a5SEric Biggers .result = { 0x19, 0x23, 0x0e, 0xb1, 0x48, 0xd5, 0xd6, 0x7c, 350afc4e4a5SEric Biggers 0x3c, 0x22, 0xab, 0x1d, 0xae, 0xff, 0x80, 0xa5, 351afc4e4a5SEric Biggers 0x7e, 0xae, 0x42, 0x65, 0xce, 0x28, 0x72, 0x65, 352afc4e4a5SEric Biggers 0x7b, 0x2c, 0x80, 0x99, 0xfc, 0x69, 0x8e, 0x50 }, 353afc4e4a5SEric Biggers .valid = true 354afc4e4a5SEric Biggers }, 355afc4e4a5SEric Biggers /* wycheproof - edge case for public key */ 356afc4e4a5SEric Biggers { 357afc4e4a5SEric Biggers .private = { 0x38, 0x6f, 0x7f, 0x16, 0xc5, 0x07, 0x31, 0xd6, 358afc4e4a5SEric Biggers 0x4f, 0x82, 0xe6, 0xa1, 0x70, 0xb1, 0x42, 0xa4, 359afc4e4a5SEric Biggers 0xe3, 0x4f, 0x31, 0xfd, 0x77, 0x68, 0xfc, 0xb8, 360afc4e4a5SEric Biggers 0x90, 0x29, 0x25, 0xe7, 0xd1, 0xe2, 0x1a, 0xbe }, 361afc4e4a5SEric Biggers .public = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 362afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 363afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 364afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 365afc4e4a5SEric Biggers .result = { 0x0f, 0xca, 0xb5, 0xd8, 0x42, 0xa0, 0x78, 0xd7, 366afc4e4a5SEric Biggers 0xa7, 0x1f, 0xc5, 0x9b, 0x57, 0xbf, 0xb4, 0xca, 367afc4e4a5SEric Biggers 0x0b, 0xe6, 0x87, 0x3b, 0x49, 0xdc, 0xdb, 0x9f, 368afc4e4a5SEric Biggers 0x44, 0xe1, 0x4a, 0xe8, 0xfb, 0xdf, 0xa5, 0x42 }, 369afc4e4a5SEric Biggers .valid = true 370afc4e4a5SEric Biggers }, 371afc4e4a5SEric Biggers /* wycheproof - edge case for public key */ 372afc4e4a5SEric Biggers { 373afc4e4a5SEric Biggers .private = { 0xe0, 0x23, 0xa2, 0x89, 0xbd, 0x5e, 0x90, 0xfa, 374afc4e4a5SEric Biggers 0x28, 0x04, 0xdd, 0xc0, 0x19, 0xa0, 0x5e, 0xf3, 375afc4e4a5SEric Biggers 0xe7, 0x9d, 0x43, 0x4b, 0xb6, 0xea, 0x2f, 0x52, 376afc4e4a5SEric Biggers 0x2e, 0xcb, 0x64, 0x3a, 0x75, 0x29, 0x6e, 0x95 }, 377afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 378afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 379afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 380afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, 381afc4e4a5SEric Biggers .result = { 0x54, 0xce, 0x8f, 0x22, 0x75, 0xc0, 0x77, 0xe3, 382afc4e4a5SEric Biggers 0xb1, 0x30, 0x6a, 0x39, 0x39, 0xc5, 0xe0, 0x3e, 383afc4e4a5SEric Biggers 0xef, 0x6b, 0xbb, 0x88, 0x06, 0x05, 0x44, 0x75, 384afc4e4a5SEric Biggers 0x8d, 0x9f, 0xef, 0x59, 0xb0, 0xbc, 0x3e, 0x4f }, 385afc4e4a5SEric Biggers .valid = true 386afc4e4a5SEric Biggers }, 387afc4e4a5SEric Biggers /* wycheproof - edge case for public key */ 388afc4e4a5SEric Biggers { 389afc4e4a5SEric Biggers .private = { 0x68, 0xf0, 0x10, 0xd6, 0x2e, 0xe8, 0xd9, 0x26, 390afc4e4a5SEric Biggers 0x05, 0x3a, 0x36, 0x1c, 0x3a, 0x75, 0xc6, 0xea, 391afc4e4a5SEric Biggers 0x4e, 0xbd, 0xc8, 0x60, 0x6a, 0xb2, 0x85, 0x00, 392afc4e4a5SEric Biggers 0x3a, 0x6f, 0x8f, 0x40, 0x76, 0xb0, 0x1e, 0x83 }, 393afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 394afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 395afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 396afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03 }, 397afc4e4a5SEric Biggers .result = { 0xf1, 0x36, 0x77, 0x5c, 0x5b, 0xeb, 0x0a, 0xf8, 398afc4e4a5SEric Biggers 0x11, 0x0a, 0xf1, 0x0b, 0x20, 0x37, 0x23, 0x32, 399afc4e4a5SEric Biggers 0x04, 0x3c, 0xab, 0x75, 0x24, 0x19, 0x67, 0x87, 400afc4e4a5SEric Biggers 0x75, 0xa2, 0x23, 0xdf, 0x57, 0xc9, 0xd3, 0x0d }, 401afc4e4a5SEric Biggers .valid = true 402afc4e4a5SEric Biggers }, 403afc4e4a5SEric Biggers /* wycheproof - edge case for public key */ 404afc4e4a5SEric Biggers { 405afc4e4a5SEric Biggers .private = { 0x58, 0xeb, 0xcb, 0x35, 0xb0, 0xf8, 0x84, 0x5c, 406afc4e4a5SEric Biggers 0xaf, 0x1e, 0xc6, 0x30, 0xf9, 0x65, 0x76, 0xb6, 407afc4e4a5SEric Biggers 0x2c, 0x4b, 0x7b, 0x6c, 0x36, 0xb2, 0x9d, 0xeb, 408afc4e4a5SEric Biggers 0x2c, 0xb0, 0x08, 0x46, 0x51, 0x75, 0x5c, 0x96 }, 409afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xfb, 0xff, 410afc4e4a5SEric Biggers 0xff, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 411afc4e4a5SEric Biggers 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xf7, 0xff, 412afc4e4a5SEric Biggers 0xff, 0xf7, 0xff, 0xff, 0xbf, 0xff, 0xff, 0x3f }, 413afc4e4a5SEric Biggers .result = { 0xbf, 0x9a, 0xff, 0xd0, 0x6b, 0x84, 0x40, 0x85, 414afc4e4a5SEric Biggers 0x58, 0x64, 0x60, 0x96, 0x2e, 0xf2, 0x14, 0x6f, 415afc4e4a5SEric Biggers 0xf3, 0xd4, 0x53, 0x3d, 0x94, 0x44, 0xaa, 0xb0, 416afc4e4a5SEric Biggers 0x06, 0xeb, 0x88, 0xcc, 0x30, 0x54, 0x40, 0x7d }, 417afc4e4a5SEric Biggers .valid = true 418afc4e4a5SEric Biggers }, 419afc4e4a5SEric Biggers /* wycheproof - edge case for public key */ 420afc4e4a5SEric Biggers { 421afc4e4a5SEric Biggers .private = { 0x18, 0x8c, 0x4b, 0xc5, 0xb9, 0xc4, 0x4b, 0x38, 422afc4e4a5SEric Biggers 0xbb, 0x65, 0x8b, 0x9b, 0x2a, 0xe8, 0x2d, 0x5b, 423afc4e4a5SEric Biggers 0x01, 0x01, 0x5e, 0x09, 0x31, 0x84, 0xb1, 0x7c, 424afc4e4a5SEric Biggers 0xb7, 0x86, 0x35, 0x03, 0xa7, 0x83, 0xe1, 0xbb }, 425afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 426afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 427afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 428afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f }, 429afc4e4a5SEric Biggers .result = { 0xd4, 0x80, 0xde, 0x04, 0xf6, 0x99, 0xcb, 0x3b, 430afc4e4a5SEric Biggers 0xe0, 0x68, 0x4a, 0x9c, 0xc2, 0xe3, 0x12, 0x81, 431afc4e4a5SEric Biggers 0xea, 0x0b, 0xc5, 0xa9, 0xdc, 0xc1, 0x57, 0xd3, 432afc4e4a5SEric Biggers 0xd2, 0x01, 0x58, 0xd4, 0x6c, 0xa5, 0x24, 0x6d }, 433afc4e4a5SEric Biggers .valid = true 434afc4e4a5SEric Biggers }, 435afc4e4a5SEric Biggers /* wycheproof - edge case for public key */ 436afc4e4a5SEric Biggers { 437afc4e4a5SEric Biggers .private = { 0xe0, 0x6c, 0x11, 0xbb, 0x2e, 0x13, 0xce, 0x3d, 438afc4e4a5SEric Biggers 0xc7, 0x67, 0x3f, 0x67, 0xf5, 0x48, 0x22, 0x42, 439afc4e4a5SEric Biggers 0x90, 0x94, 0x23, 0xa9, 0xae, 0x95, 0xee, 0x98, 440afc4e4a5SEric Biggers 0x6a, 0x98, 0x8d, 0x98, 0xfa, 0xee, 0x23, 0xa2 }, 441afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, 442afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, 443afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, 444afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f }, 445afc4e4a5SEric Biggers .result = { 0x4c, 0x44, 0x01, 0xcc, 0xe6, 0xb5, 0x1e, 0x4c, 446afc4e4a5SEric Biggers 0xb1, 0x8f, 0x27, 0x90, 0x24, 0x6c, 0x9b, 0xf9, 447afc4e4a5SEric Biggers 0x14, 0xdb, 0x66, 0x77, 0x50, 0xa1, 0xcb, 0x89, 448afc4e4a5SEric Biggers 0x06, 0x90, 0x92, 0xaf, 0x07, 0x29, 0x22, 0x76 }, 449afc4e4a5SEric Biggers .valid = true 450afc4e4a5SEric Biggers }, 451afc4e4a5SEric Biggers /* wycheproof - edge case for public key */ 452afc4e4a5SEric Biggers { 453afc4e4a5SEric Biggers .private = { 0xc0, 0x65, 0x8c, 0x46, 0xdd, 0xe1, 0x81, 0x29, 454afc4e4a5SEric Biggers 0x29, 0x38, 0x77, 0x53, 0x5b, 0x11, 0x62, 0xb6, 455afc4e4a5SEric Biggers 0xf9, 0xf5, 0x41, 0x4a, 0x23, 0xcf, 0x4d, 0x2c, 456afc4e4a5SEric Biggers 0xbc, 0x14, 0x0a, 0x4d, 0x99, 0xda, 0x2b, 0x8f }, 457afc4e4a5SEric Biggers .public = { 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 458afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 459afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 460afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 461afc4e4a5SEric Biggers .result = { 0x57, 0x8b, 0xa8, 0xcc, 0x2d, 0xbd, 0xc5, 0x75, 462afc4e4a5SEric Biggers 0xaf, 0xcf, 0x9d, 0xf2, 0xb3, 0xee, 0x61, 0x89, 463afc4e4a5SEric Biggers 0xf5, 0x33, 0x7d, 0x68, 0x54, 0xc7, 0x9b, 0x4c, 464afc4e4a5SEric Biggers 0xe1, 0x65, 0xea, 0x12, 0x29, 0x3b, 0x3a, 0x0f }, 465afc4e4a5SEric Biggers .valid = true 466afc4e4a5SEric Biggers }, 467afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 468afc4e4a5SEric Biggers { 469afc4e4a5SEric Biggers .private = { 0x10, 0x25, 0x5c, 0x92, 0x30, 0xa9, 0x7a, 0x30, 470afc4e4a5SEric Biggers 0xa4, 0x58, 0xca, 0x28, 0x4a, 0x62, 0x96, 0x69, 471afc4e4a5SEric Biggers 0x29, 0x3a, 0x31, 0x89, 0x0c, 0xda, 0x9d, 0x14, 472afc4e4a5SEric Biggers 0x7f, 0xeb, 0xc7, 0xd1, 0xe2, 0x2d, 0x6b, 0xb1 }, 473afc4e4a5SEric Biggers .public = { 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 474afc4e4a5SEric Biggers 0x16, 0x56, 0xe3, 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 475afc4e4a5SEric Biggers 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, 0xb1, 0xfd, 476afc4e4a5SEric Biggers 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 }, 477afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 478afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 479afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 480afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 481afc4e4a5SEric Biggers .valid = false 482afc4e4a5SEric Biggers }, 483afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 484afc4e4a5SEric Biggers { 485afc4e4a5SEric Biggers .private = { 0x78, 0xf1, 0xe8, 0xed, 0xf1, 0x44, 0x81, 0xb3, 486afc4e4a5SEric Biggers 0x89, 0x44, 0x8d, 0xac, 0x8f, 0x59, 0xc7, 0x0b, 487afc4e4a5SEric Biggers 0x03, 0x8e, 0x7c, 0xf9, 0x2e, 0xf2, 0xc7, 0xef, 488afc4e4a5SEric Biggers 0xf5, 0x7a, 0x72, 0x46, 0x6e, 0x11, 0x52, 0x96 }, 489afc4e4a5SEric Biggers .public = { 0x5f, 0x9c, 0x95, 0xbc, 0xa3, 0x50, 0x8c, 0x24, 490afc4e4a5SEric Biggers 0xb1, 0xd0, 0xb1, 0x55, 0x9c, 0x83, 0xef, 0x5b, 491afc4e4a5SEric Biggers 0x04, 0x44, 0x5c, 0xc4, 0x58, 0x1c, 0x8e, 0x86, 492afc4e4a5SEric Biggers 0xd8, 0x22, 0x4e, 0xdd, 0xd0, 0x9f, 0x11, 0x57 }, 493afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 494afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 495afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 496afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 497afc4e4a5SEric Biggers .valid = false 498afc4e4a5SEric Biggers }, 499afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 500afc4e4a5SEric Biggers { 501afc4e4a5SEric Biggers .private = { 0xa0, 0xa0, 0x5a, 0x3e, 0x8f, 0x9f, 0x44, 0x20, 502afc4e4a5SEric Biggers 0x4d, 0x5f, 0x80, 0x59, 0xa9, 0x4a, 0xc7, 0xdf, 503afc4e4a5SEric Biggers 0xc3, 0x9a, 0x49, 0xac, 0x01, 0x6d, 0xd7, 0x43, 504afc4e4a5SEric Biggers 0xdb, 0xfa, 0x43, 0xc5, 0xd6, 0x71, 0xfd, 0x88 }, 505afc4e4a5SEric Biggers .public = { 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 506afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 507afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 508afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 509afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 510afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 511afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 512afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 513afc4e4a5SEric Biggers .valid = false 514afc4e4a5SEric Biggers }, 515afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 516afc4e4a5SEric Biggers { 517afc4e4a5SEric Biggers .private = { 0xd0, 0xdb, 0xb3, 0xed, 0x19, 0x06, 0x66, 0x3f, 518afc4e4a5SEric Biggers 0x15, 0x42, 0x0a, 0xf3, 0x1f, 0x4e, 0xaf, 0x65, 519afc4e4a5SEric Biggers 0x09, 0xd9, 0xa9, 0x94, 0x97, 0x23, 0x50, 0x06, 520afc4e4a5SEric Biggers 0x05, 0xad, 0x7c, 0x1c, 0x6e, 0x74, 0x50, 0xa9 }, 521afc4e4a5SEric Biggers .public = { 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 522afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 523afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 524afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 525afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 526afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 527afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 528afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 529afc4e4a5SEric Biggers .valid = false 530afc4e4a5SEric Biggers }, 531afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 532afc4e4a5SEric Biggers { 533afc4e4a5SEric Biggers .private = { 0xc0, 0xb1, 0xd0, 0xeb, 0x22, 0xb2, 0x44, 0xfe, 534afc4e4a5SEric Biggers 0x32, 0x91, 0x14, 0x00, 0x72, 0xcd, 0xd9, 0xd9, 535afc4e4a5SEric Biggers 0x89, 0xb5, 0xf0, 0xec, 0xd9, 0x6c, 0x10, 0x0f, 536afc4e4a5SEric Biggers 0xeb, 0x5b, 0xca, 0x24, 0x1c, 0x1d, 0x9f, 0x8f }, 537afc4e4a5SEric Biggers .public = { 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 538afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 539afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 540afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 541afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 542afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 543afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 544afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 545afc4e4a5SEric Biggers .valid = false 546afc4e4a5SEric Biggers }, 547afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 548afc4e4a5SEric Biggers { 549afc4e4a5SEric Biggers .private = { 0x48, 0x0b, 0xf4, 0x5f, 0x59, 0x49, 0x42, 0xa8, 550afc4e4a5SEric Biggers 0xbc, 0x0f, 0x33, 0x53, 0xc6, 0xe8, 0xb8, 0x85, 551afc4e4a5SEric Biggers 0x3d, 0x77, 0xf3, 0x51, 0xf1, 0xc2, 0xca, 0x6c, 552afc4e4a5SEric Biggers 0x2d, 0x1a, 0xbf, 0x8a, 0x00, 0xb4, 0x22, 0x9c }, 553afc4e4a5SEric Biggers .public = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 554afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 555afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 556afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, 557afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 558afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 559afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 560afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 561afc4e4a5SEric Biggers .valid = false 562afc4e4a5SEric Biggers }, 563afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 564afc4e4a5SEric Biggers { 565afc4e4a5SEric Biggers .private = { 0x30, 0xf9, 0x93, 0xfc, 0xf8, 0x51, 0x4f, 0xc8, 566afc4e4a5SEric Biggers 0x9b, 0xd8, 0xdb, 0x14, 0xcd, 0x43, 0xba, 0x0d, 567afc4e4a5SEric Biggers 0x4b, 0x25, 0x30, 0xe7, 0x3c, 0x42, 0x76, 0xa0, 568afc4e4a5SEric Biggers 0x5e, 0x1b, 0x14, 0x5d, 0x42, 0x0c, 0xed, 0xb4 }, 569afc4e4a5SEric Biggers .public = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 570afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 571afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 572afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, 573afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 574afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 575afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 576afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 577afc4e4a5SEric Biggers .valid = false 578afc4e4a5SEric Biggers }, 579afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 580afc4e4a5SEric Biggers { 581afc4e4a5SEric Biggers .private = { 0xc0, 0x49, 0x74, 0xb7, 0x58, 0x38, 0x0e, 0x2a, 582afc4e4a5SEric Biggers 0x5b, 0x5d, 0xf6, 0xeb, 0x09, 0xbb, 0x2f, 0x6b, 583afc4e4a5SEric Biggers 0x34, 0x34, 0xf9, 0x82, 0x72, 0x2a, 0x8e, 0x67, 584afc4e4a5SEric Biggers 0x6d, 0x3d, 0xa2, 0x51, 0xd1, 0xb3, 0xde, 0x83 }, 585afc4e4a5SEric Biggers .public = { 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 586afc4e4a5SEric Biggers 0x16, 0x56, 0xe3, 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 587afc4e4a5SEric Biggers 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, 0xb1, 0xfd, 588afc4e4a5SEric Biggers 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x80 }, 589afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 590afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 591afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 592afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 593afc4e4a5SEric Biggers .valid = false 594afc4e4a5SEric Biggers }, 595afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 596afc4e4a5SEric Biggers { 597afc4e4a5SEric Biggers .private = { 0x50, 0x2a, 0x31, 0x37, 0x3d, 0xb3, 0x24, 0x46, 598afc4e4a5SEric Biggers 0x84, 0x2f, 0xe5, 0xad, 0xd3, 0xe0, 0x24, 0x02, 599afc4e4a5SEric Biggers 0x2e, 0xa5, 0x4f, 0x27, 0x41, 0x82, 0xaf, 0xc3, 600afc4e4a5SEric Biggers 0xd9, 0xf1, 0xbb, 0x3d, 0x39, 0x53, 0x4e, 0xb5 }, 601afc4e4a5SEric Biggers .public = { 0x5f, 0x9c, 0x95, 0xbc, 0xa3, 0x50, 0x8c, 0x24, 602afc4e4a5SEric Biggers 0xb1, 0xd0, 0xb1, 0x55, 0x9c, 0x83, 0xef, 0x5b, 603afc4e4a5SEric Biggers 0x04, 0x44, 0x5c, 0xc4, 0x58, 0x1c, 0x8e, 0x86, 604afc4e4a5SEric Biggers 0xd8, 0x22, 0x4e, 0xdd, 0xd0, 0x9f, 0x11, 0xd7 }, 605afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 606afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 607afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 608afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 609afc4e4a5SEric Biggers .valid = false 610afc4e4a5SEric Biggers }, 611afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 612afc4e4a5SEric Biggers { 613afc4e4a5SEric Biggers .private = { 0x90, 0xfa, 0x64, 0x17, 0xb0, 0xe3, 0x70, 0x30, 614afc4e4a5SEric Biggers 0xfd, 0x6e, 0x43, 0xef, 0xf2, 0xab, 0xae, 0xf1, 615afc4e4a5SEric Biggers 0x4c, 0x67, 0x93, 0x11, 0x7a, 0x03, 0x9c, 0xf6, 616afc4e4a5SEric Biggers 0x21, 0x31, 0x8b, 0xa9, 0x0f, 0x4e, 0x98, 0xbe }, 617afc4e4a5SEric Biggers .public = { 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 618afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 619afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 620afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 621afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 622afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 623afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 624afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 625afc4e4a5SEric Biggers .valid = false 626afc4e4a5SEric Biggers }, 627afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 628afc4e4a5SEric Biggers { 629afc4e4a5SEric Biggers .private = { 0x78, 0xad, 0x3f, 0x26, 0x02, 0x7f, 0x1c, 0x9f, 630afc4e4a5SEric Biggers 0xdd, 0x97, 0x5a, 0x16, 0x13, 0xb9, 0x47, 0x77, 631afc4e4a5SEric Biggers 0x9b, 0xad, 0x2c, 0xf2, 0xb7, 0x41, 0xad, 0xe0, 632afc4e4a5SEric Biggers 0x18, 0x40, 0x88, 0x5a, 0x30, 0xbb, 0x97, 0x9c }, 633afc4e4a5SEric Biggers .public = { 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 634afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 635afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 636afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 637afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 638afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 639afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 640afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 641afc4e4a5SEric Biggers .valid = false 642afc4e4a5SEric Biggers }, 643afc4e4a5SEric Biggers /* wycheproof - public key with low order */ 644afc4e4a5SEric Biggers { 645afc4e4a5SEric Biggers .private = { 0x98, 0xe2, 0x3d, 0xe7, 0xb1, 0xe0, 0x92, 0x6e, 646afc4e4a5SEric Biggers 0xd9, 0xc8, 0x7e, 0x7b, 0x14, 0xba, 0xf5, 0x5f, 647afc4e4a5SEric Biggers 0x49, 0x7a, 0x1d, 0x70, 0x96, 0xf9, 0x39, 0x77, 648afc4e4a5SEric Biggers 0x68, 0x0e, 0x44, 0xdc, 0x1c, 0x7b, 0x7b, 0x8b }, 649afc4e4a5SEric Biggers .public = { 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 650afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 651afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 652afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 653afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 654afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 655afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 656afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 657afc4e4a5SEric Biggers .valid = false 658afc4e4a5SEric Biggers }, 659afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 660afc4e4a5SEric Biggers { 661afc4e4a5SEric Biggers .private = { 0xf0, 0x1e, 0x48, 0xda, 0xfa, 0xc9, 0xd7, 0xbc, 662afc4e4a5SEric Biggers 0xf5, 0x89, 0xcb, 0xc3, 0x82, 0xc8, 0x78, 0xd1, 663afc4e4a5SEric Biggers 0x8b, 0xda, 0x35, 0x50, 0x58, 0x9f, 0xfb, 0x5d, 664afc4e4a5SEric Biggers 0x50, 0xb5, 0x23, 0xbe, 0xbe, 0x32, 0x9d, 0xae }, 665afc4e4a5SEric Biggers .public = { 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 666afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 667afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 668afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 669afc4e4a5SEric Biggers .result = { 0xbd, 0x36, 0xa0, 0x79, 0x0e, 0xb8, 0x83, 0x09, 670afc4e4a5SEric Biggers 0x8c, 0x98, 0x8b, 0x21, 0x78, 0x67, 0x73, 0xde, 671afc4e4a5SEric Biggers 0x0b, 0x3a, 0x4d, 0xf1, 0x62, 0x28, 0x2c, 0xf1, 672afc4e4a5SEric Biggers 0x10, 0xde, 0x18, 0xdd, 0x48, 0x4c, 0xe7, 0x4b }, 673afc4e4a5SEric Biggers .valid = true 674afc4e4a5SEric Biggers }, 675afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 676afc4e4a5SEric Biggers { 677afc4e4a5SEric Biggers .private = { 0x28, 0x87, 0x96, 0xbc, 0x5a, 0xff, 0x4b, 0x81, 678afc4e4a5SEric Biggers 0xa3, 0x75, 0x01, 0x75, 0x7b, 0xc0, 0x75, 0x3a, 679afc4e4a5SEric Biggers 0x3c, 0x21, 0x96, 0x47, 0x90, 0xd3, 0x86, 0x99, 680afc4e4a5SEric Biggers 0x30, 0x8d, 0xeb, 0xc1, 0x7a, 0x6e, 0xaf, 0x8d }, 681afc4e4a5SEric Biggers .public = { 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 682afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 683afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 684afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 685afc4e4a5SEric Biggers .result = { 0xb4, 0xe0, 0xdd, 0x76, 0xda, 0x7b, 0x07, 0x17, 686afc4e4a5SEric Biggers 0x28, 0xb6, 0x1f, 0x85, 0x67, 0x71, 0xaa, 0x35, 687afc4e4a5SEric Biggers 0x6e, 0x57, 0xed, 0xa7, 0x8a, 0x5b, 0x16, 0x55, 688afc4e4a5SEric Biggers 0xcc, 0x38, 0x20, 0xfb, 0x5f, 0x85, 0x4c, 0x5c }, 689afc4e4a5SEric Biggers .valid = true 690afc4e4a5SEric Biggers }, 691afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 692afc4e4a5SEric Biggers { 693afc4e4a5SEric Biggers .private = { 0x98, 0xdf, 0x84, 0x5f, 0x66, 0x51, 0xbf, 0x11, 694afc4e4a5SEric Biggers 0x38, 0x22, 0x1f, 0x11, 0x90, 0x41, 0xf7, 0x2b, 695afc4e4a5SEric Biggers 0x6d, 0xbc, 0x3c, 0x4a, 0xce, 0x71, 0x43, 0xd9, 696afc4e4a5SEric Biggers 0x9f, 0xd5, 0x5a, 0xd8, 0x67, 0x48, 0x0d, 0xa8 }, 697afc4e4a5SEric Biggers .public = { 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 698afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 699afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 700afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 701afc4e4a5SEric Biggers .result = { 0x6f, 0xdf, 0x6c, 0x37, 0x61, 0x1d, 0xbd, 0x53, 702afc4e4a5SEric Biggers 0x04, 0xdc, 0x0f, 0x2e, 0xb7, 0xc9, 0x51, 0x7e, 703afc4e4a5SEric Biggers 0xb3, 0xc5, 0x0e, 0x12, 0xfd, 0x05, 0x0a, 0xc6, 704afc4e4a5SEric Biggers 0xde, 0xc2, 0x70, 0x71, 0xd4, 0xbf, 0xc0, 0x34 }, 705afc4e4a5SEric Biggers .valid = true 706afc4e4a5SEric Biggers }, 707afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 708afc4e4a5SEric Biggers { 709afc4e4a5SEric Biggers .private = { 0xf0, 0x94, 0x98, 0xe4, 0x6f, 0x02, 0xf8, 0x78, 710afc4e4a5SEric Biggers 0x82, 0x9e, 0x78, 0xb8, 0x03, 0xd3, 0x16, 0xa2, 711afc4e4a5SEric Biggers 0xed, 0x69, 0x5d, 0x04, 0x98, 0xa0, 0x8a, 0xbd, 712afc4e4a5SEric Biggers 0xf8, 0x27, 0x69, 0x30, 0xe2, 0x4e, 0xdc, 0xb0 }, 713afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 714afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 715afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 716afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 717afc4e4a5SEric Biggers .result = { 0x4c, 0x8f, 0xc4, 0xb1, 0xc6, 0xab, 0x88, 0xfb, 718afc4e4a5SEric Biggers 0x21, 0xf1, 0x8f, 0x6d, 0x4c, 0x81, 0x02, 0x40, 719afc4e4a5SEric Biggers 0xd4, 0xe9, 0x46, 0x51, 0xba, 0x44, 0xf7, 0xa2, 720afc4e4a5SEric Biggers 0xc8, 0x63, 0xce, 0xc7, 0xdc, 0x56, 0x60, 0x2d }, 721afc4e4a5SEric Biggers .valid = true 722afc4e4a5SEric Biggers }, 723afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 724afc4e4a5SEric Biggers { 725afc4e4a5SEric Biggers .private = { 0x18, 0x13, 0xc1, 0x0a, 0x5c, 0x7f, 0x21, 0xf9, 726afc4e4a5SEric Biggers 0x6e, 0x17, 0xf2, 0x88, 0xc0, 0xcc, 0x37, 0x60, 727afc4e4a5SEric Biggers 0x7c, 0x04, 0xc5, 0xf5, 0xae, 0xa2, 0xdb, 0x13, 728afc4e4a5SEric Biggers 0x4f, 0x9e, 0x2f, 0xfc, 0x66, 0xbd, 0x9d, 0xb8 }, 729afc4e4a5SEric Biggers .public = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 730afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 731afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 732afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, 733afc4e4a5SEric Biggers .result = { 0x1c, 0xd0, 0xb2, 0x82, 0x67, 0xdc, 0x54, 0x1c, 734afc4e4a5SEric Biggers 0x64, 0x2d, 0x6d, 0x7d, 0xca, 0x44, 0xa8, 0xb3, 735afc4e4a5SEric Biggers 0x8a, 0x63, 0x73, 0x6e, 0xef, 0x5c, 0x4e, 0x65, 736afc4e4a5SEric Biggers 0x01, 0xff, 0xbb, 0xb1, 0x78, 0x0c, 0x03, 0x3c }, 737afc4e4a5SEric Biggers .valid = true 738afc4e4a5SEric Biggers }, 739afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 740afc4e4a5SEric Biggers { 741afc4e4a5SEric Biggers .private = { 0x78, 0x57, 0xfb, 0x80, 0x86, 0x53, 0x64, 0x5a, 742afc4e4a5SEric Biggers 0x0b, 0xeb, 0x13, 0x8a, 0x64, 0xf5, 0xf4, 0xd7, 743afc4e4a5SEric Biggers 0x33, 0xa4, 0x5e, 0xa8, 0x4c, 0x3c, 0xda, 0x11, 744afc4e4a5SEric Biggers 0xa9, 0xc0, 0x6f, 0x7e, 0x71, 0x39, 0x14, 0x9e }, 745afc4e4a5SEric Biggers .public = { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 746afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 747afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 748afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, 749afc4e4a5SEric Biggers .result = { 0x87, 0x55, 0xbe, 0x01, 0xc6, 0x0a, 0x7e, 0x82, 750afc4e4a5SEric Biggers 0x5c, 0xff, 0x3e, 0x0e, 0x78, 0xcb, 0x3a, 0xa4, 751afc4e4a5SEric Biggers 0x33, 0x38, 0x61, 0x51, 0x6a, 0xa5, 0x9b, 0x1c, 752afc4e4a5SEric Biggers 0x51, 0xa8, 0xb2, 0xa5, 0x43, 0xdf, 0xa8, 0x22 }, 753afc4e4a5SEric Biggers .valid = true 754afc4e4a5SEric Biggers }, 755afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 756afc4e4a5SEric Biggers { 757afc4e4a5SEric Biggers .private = { 0xe0, 0x3a, 0xa8, 0x42, 0xe2, 0xab, 0xc5, 0x6e, 758afc4e4a5SEric Biggers 0x81, 0xe8, 0x7b, 0x8b, 0x9f, 0x41, 0x7b, 0x2a, 759afc4e4a5SEric Biggers 0x1e, 0x59, 0x13, 0xc7, 0x23, 0xee, 0xd2, 0x8d, 760afc4e4a5SEric Biggers 0x75, 0x2f, 0x8d, 0x47, 0xa5, 0x9f, 0x49, 0x8f }, 761afc4e4a5SEric Biggers .public = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 762afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 763afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 764afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, 765afc4e4a5SEric Biggers .result = { 0x54, 0xc9, 0xa1, 0xed, 0x95, 0xe5, 0x46, 0xd2, 766afc4e4a5SEric Biggers 0x78, 0x22, 0xa3, 0x60, 0x93, 0x1d, 0xda, 0x60, 767afc4e4a5SEric Biggers 0xa1, 0xdf, 0x04, 0x9d, 0xa6, 0xf9, 0x04, 0x25, 768afc4e4a5SEric Biggers 0x3c, 0x06, 0x12, 0xbb, 0xdc, 0x08, 0x74, 0x76 }, 769afc4e4a5SEric Biggers .valid = true 770afc4e4a5SEric Biggers }, 771afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 772afc4e4a5SEric Biggers { 773afc4e4a5SEric Biggers .private = { 0xf8, 0xf7, 0x07, 0xb7, 0x99, 0x9b, 0x18, 0xcb, 774afc4e4a5SEric Biggers 0x0d, 0x6b, 0x96, 0x12, 0x4f, 0x20, 0x45, 0x97, 775afc4e4a5SEric Biggers 0x2c, 0xa2, 0x74, 0xbf, 0xc1, 0x54, 0xad, 0x0c, 776afc4e4a5SEric Biggers 0x87, 0x03, 0x8c, 0x24, 0xc6, 0xd0, 0xd4, 0xb2 }, 777afc4e4a5SEric Biggers .public = { 0xda, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 778afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 779afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 780afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 781afc4e4a5SEric Biggers .result = { 0xcc, 0x1f, 0x40, 0xd7, 0x43, 0xcd, 0xc2, 0x23, 782afc4e4a5SEric Biggers 0x0e, 0x10, 0x43, 0xda, 0xba, 0x8b, 0x75, 0xe8, 783afc4e4a5SEric Biggers 0x10, 0xf1, 0xfb, 0xab, 0x7f, 0x25, 0x52, 0x69, 784afc4e4a5SEric Biggers 0xbd, 0x9e, 0xbb, 0x29, 0xe6, 0xbf, 0x49, 0x4f }, 785afc4e4a5SEric Biggers .valid = true 786afc4e4a5SEric Biggers }, 787afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 788afc4e4a5SEric Biggers { 789afc4e4a5SEric Biggers .private = { 0xa0, 0x34, 0xf6, 0x84, 0xfa, 0x63, 0x1e, 0x1a, 790afc4e4a5SEric Biggers 0x34, 0x81, 0x18, 0xc1, 0xce, 0x4c, 0x98, 0x23, 791afc4e4a5SEric Biggers 0x1f, 0x2d, 0x9e, 0xec, 0x9b, 0xa5, 0x36, 0x5b, 792afc4e4a5SEric Biggers 0x4a, 0x05, 0xd6, 0x9a, 0x78, 0x5b, 0x07, 0x96 }, 793afc4e4a5SEric Biggers .public = { 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 794afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 795afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 796afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 797afc4e4a5SEric Biggers .result = { 0x54, 0x99, 0x8e, 0xe4, 0x3a, 0x5b, 0x00, 0x7b, 798afc4e4a5SEric Biggers 0xf4, 0x99, 0xf0, 0x78, 0xe7, 0x36, 0x52, 0x44, 799afc4e4a5SEric Biggers 0x00, 0xa8, 0xb5, 0xc7, 0xe9, 0xb9, 0xb4, 0x37, 800afc4e4a5SEric Biggers 0x71, 0x74, 0x8c, 0x7c, 0xdf, 0x88, 0x04, 0x12 }, 801afc4e4a5SEric Biggers .valid = true 802afc4e4a5SEric Biggers }, 803afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 804afc4e4a5SEric Biggers { 805afc4e4a5SEric Biggers .private = { 0x30, 0xb6, 0xc6, 0xa0, 0xf2, 0xff, 0xa6, 0x80, 806afc4e4a5SEric Biggers 0x76, 0x8f, 0x99, 0x2b, 0xa8, 0x9e, 0x15, 0x2d, 807afc4e4a5SEric Biggers 0x5b, 0xc9, 0x89, 0x3d, 0x38, 0xc9, 0x11, 0x9b, 808afc4e4a5SEric Biggers 0xe4, 0xf7, 0x67, 0xbf, 0xab, 0x6e, 0x0c, 0xa5 }, 809afc4e4a5SEric Biggers .public = { 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 810afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 811afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 812afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 813afc4e4a5SEric Biggers .result = { 0xea, 0xd9, 0xb3, 0x8e, 0xfd, 0xd7, 0x23, 0x63, 814afc4e4a5SEric Biggers 0x79, 0x34, 0xe5, 0x5a, 0xb7, 0x17, 0xa7, 0xae, 815afc4e4a5SEric Biggers 0x09, 0xeb, 0x86, 0xa2, 0x1d, 0xc3, 0x6a, 0x3f, 816afc4e4a5SEric Biggers 0xee, 0xb8, 0x8b, 0x75, 0x9e, 0x39, 0x1e, 0x09 }, 817afc4e4a5SEric Biggers .valid = true 818afc4e4a5SEric Biggers }, 819afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 820afc4e4a5SEric Biggers { 821afc4e4a5SEric Biggers .private = { 0x90, 0x1b, 0x9d, 0xcf, 0x88, 0x1e, 0x01, 0xe0, 822afc4e4a5SEric Biggers 0x27, 0x57, 0x50, 0x35, 0xd4, 0x0b, 0x43, 0xbd, 823afc4e4a5SEric Biggers 0xc1, 0xc5, 0x24, 0x2e, 0x03, 0x08, 0x47, 0x49, 824afc4e4a5SEric Biggers 0x5b, 0x0c, 0x72, 0x86, 0x46, 0x9b, 0x65, 0x91 }, 825afc4e4a5SEric Biggers .public = { 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 826afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 827afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 828afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 829afc4e4a5SEric Biggers .result = { 0x60, 0x2f, 0xf4, 0x07, 0x89, 0xb5, 0x4b, 0x41, 830afc4e4a5SEric Biggers 0x80, 0x59, 0x15, 0xfe, 0x2a, 0x62, 0x21, 0xf0, 831afc4e4a5SEric Biggers 0x7a, 0x50, 0xff, 0xc2, 0xc3, 0xfc, 0x94, 0xcf, 832afc4e4a5SEric Biggers 0x61, 0xf1, 0x3d, 0x79, 0x04, 0xe8, 0x8e, 0x0e }, 833afc4e4a5SEric Biggers .valid = true 834afc4e4a5SEric Biggers }, 835afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 836afc4e4a5SEric Biggers { 837afc4e4a5SEric Biggers .private = { 0x80, 0x46, 0x67, 0x7c, 0x28, 0xfd, 0x82, 0xc9, 838afc4e4a5SEric Biggers 0xa1, 0xbd, 0xb7, 0x1a, 0x1a, 0x1a, 0x34, 0xfa, 839afc4e4a5SEric Biggers 0xba, 0x12, 0x25, 0xe2, 0x50, 0x7f, 0xe3, 0xf5, 840afc4e4a5SEric Biggers 0x4d, 0x10, 0xbd, 0x5b, 0x0d, 0x86, 0x5f, 0x8e }, 841afc4e4a5SEric Biggers .public = { 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 842afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 843afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 844afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 845afc4e4a5SEric Biggers .result = { 0xe0, 0x0a, 0xe8, 0xb1, 0x43, 0x47, 0x12, 0x47, 846afc4e4a5SEric Biggers 0xba, 0x24, 0xf1, 0x2c, 0x88, 0x55, 0x36, 0xc3, 847afc4e4a5SEric Biggers 0xcb, 0x98, 0x1b, 0x58, 0xe1, 0xe5, 0x6b, 0x2b, 848afc4e4a5SEric Biggers 0xaf, 0x35, 0xc1, 0x2a, 0xe1, 0xf7, 0x9c, 0x26 }, 849afc4e4a5SEric Biggers .valid = true 850afc4e4a5SEric Biggers }, 851afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 852afc4e4a5SEric Biggers { 853afc4e4a5SEric Biggers .private = { 0x60, 0x2f, 0x7e, 0x2f, 0x68, 0xa8, 0x46, 0xb8, 854afc4e4a5SEric Biggers 0x2c, 0xc2, 0x69, 0xb1, 0xd4, 0x8e, 0x93, 0x98, 855afc4e4a5SEric Biggers 0x86, 0xae, 0x54, 0xfd, 0x63, 0x6c, 0x1f, 0xe0, 856afc4e4a5SEric Biggers 0x74, 0xd7, 0x10, 0x12, 0x7d, 0x47, 0x24, 0x91 }, 857afc4e4a5SEric Biggers .public = { 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 858afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 859afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 860afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 861afc4e4a5SEric Biggers .result = { 0x98, 0xcb, 0x9b, 0x50, 0xdd, 0x3f, 0xc2, 0xb0, 862afc4e4a5SEric Biggers 0xd4, 0xf2, 0xd2, 0xbf, 0x7c, 0x5c, 0xfd, 0xd1, 863afc4e4a5SEric Biggers 0x0c, 0x8f, 0xcd, 0x31, 0xfc, 0x40, 0xaf, 0x1a, 864afc4e4a5SEric Biggers 0xd4, 0x4f, 0x47, 0xc1, 0x31, 0x37, 0x63, 0x62 }, 865afc4e4a5SEric Biggers .valid = true 866afc4e4a5SEric Biggers }, 867afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 868afc4e4a5SEric Biggers { 869afc4e4a5SEric Biggers .private = { 0x60, 0x88, 0x7b, 0x3d, 0xc7, 0x24, 0x43, 0x02, 870afc4e4a5SEric Biggers 0x6e, 0xbe, 0xdb, 0xbb, 0xb7, 0x06, 0x65, 0xf4, 871afc4e4a5SEric Biggers 0x2b, 0x87, 0xad, 0xd1, 0x44, 0x0e, 0x77, 0x68, 872afc4e4a5SEric Biggers 0xfb, 0xd7, 0xe8, 0xe2, 0xce, 0x5f, 0x63, 0x9d }, 873afc4e4a5SEric Biggers .public = { 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 874afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 875afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 876afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 877afc4e4a5SEric Biggers .result = { 0x38, 0xd6, 0x30, 0x4c, 0x4a, 0x7e, 0x6d, 0x9f, 878afc4e4a5SEric Biggers 0x79, 0x59, 0x33, 0x4f, 0xb5, 0x24, 0x5b, 0xd2, 879afc4e4a5SEric Biggers 0xc7, 0x54, 0x52, 0x5d, 0x4c, 0x91, 0xdb, 0x95, 880afc4e4a5SEric Biggers 0x02, 0x06, 0x92, 0x62, 0x34, 0xc1, 0xf6, 0x33 }, 881afc4e4a5SEric Biggers .valid = true 882afc4e4a5SEric Biggers }, 883afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 884afc4e4a5SEric Biggers { 885afc4e4a5SEric Biggers .private = { 0x78, 0xd3, 0x1d, 0xfa, 0x85, 0x44, 0x97, 0xd7, 886afc4e4a5SEric Biggers 0x2d, 0x8d, 0xef, 0x8a, 0x1b, 0x7f, 0xb0, 0x06, 887afc4e4a5SEric Biggers 0xce, 0xc2, 0xd8, 0xc4, 0x92, 0x46, 0x47, 0xc9, 888afc4e4a5SEric Biggers 0x38, 0x14, 0xae, 0x56, 0xfa, 0xed, 0xa4, 0x95 }, 889afc4e4a5SEric Biggers .public = { 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 890afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 891afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 892afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 893afc4e4a5SEric Biggers .result = { 0x78, 0x6c, 0xd5, 0x49, 0x96, 0xf0, 0x14, 0xa5, 894afc4e4a5SEric Biggers 0xa0, 0x31, 0xec, 0x14, 0xdb, 0x81, 0x2e, 0xd0, 895afc4e4a5SEric Biggers 0x83, 0x55, 0x06, 0x1f, 0xdb, 0x5d, 0xe6, 0x80, 896afc4e4a5SEric Biggers 0xa8, 0x00, 0xac, 0x52, 0x1f, 0x31, 0x8e, 0x23 }, 897afc4e4a5SEric Biggers .valid = true 898afc4e4a5SEric Biggers }, 899afc4e4a5SEric Biggers /* wycheproof - public key >= p */ 900afc4e4a5SEric Biggers { 901afc4e4a5SEric Biggers .private = { 0xc0, 0x4c, 0x5b, 0xae, 0xfa, 0x83, 0x02, 0xdd, 902afc4e4a5SEric Biggers 0xde, 0xd6, 0xa4, 0xbb, 0x95, 0x77, 0x61, 0xb4, 903afc4e4a5SEric Biggers 0xeb, 0x97, 0xae, 0xfa, 0x4f, 0xc3, 0xb8, 0x04, 904afc4e4a5SEric Biggers 0x30, 0x85, 0xf9, 0x6a, 0x56, 0x59, 0xb3, 0xa5 }, 905afc4e4a5SEric Biggers .public = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 906afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 907afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 908afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 909afc4e4a5SEric Biggers .result = { 0x29, 0xae, 0x8b, 0xc7, 0x3e, 0x9b, 0x10, 0xa0, 910afc4e4a5SEric Biggers 0x8b, 0x4f, 0x68, 0x1c, 0x43, 0xc3, 0xe0, 0xac, 911afc4e4a5SEric Biggers 0x1a, 0x17, 0x1d, 0x31, 0xb3, 0x8f, 0x1a, 0x48, 912afc4e4a5SEric Biggers 0xef, 0xba, 0x29, 0xae, 0x63, 0x9e, 0xa1, 0x34 }, 913afc4e4a5SEric Biggers .valid = true 914afc4e4a5SEric Biggers }, 915afc4e4a5SEric Biggers /* wycheproof - RFC 7748 */ 916afc4e4a5SEric Biggers { 917afc4e4a5SEric Biggers .private = { 0xa0, 0x46, 0xe3, 0x6b, 0xf0, 0x52, 0x7c, 0x9d, 918afc4e4a5SEric Biggers 0x3b, 0x16, 0x15, 0x4b, 0x82, 0x46, 0x5e, 0xdd, 919afc4e4a5SEric Biggers 0x62, 0x14, 0x4c, 0x0a, 0xc1, 0xfc, 0x5a, 0x18, 920afc4e4a5SEric Biggers 0x50, 0x6a, 0x22, 0x44, 0xba, 0x44, 0x9a, 0x44 }, 921afc4e4a5SEric Biggers .public = { 0xe6, 0xdb, 0x68, 0x67, 0x58, 0x30, 0x30, 0xdb, 922afc4e4a5SEric Biggers 0x35, 0x94, 0xc1, 0xa4, 0x24, 0xb1, 0x5f, 0x7c, 923afc4e4a5SEric Biggers 0x72, 0x66, 0x24, 0xec, 0x26, 0xb3, 0x35, 0x3b, 924afc4e4a5SEric Biggers 0x10, 0xa9, 0x03, 0xa6, 0xd0, 0xab, 0x1c, 0x4c }, 925afc4e4a5SEric Biggers .result = { 0xc3, 0xda, 0x55, 0x37, 0x9d, 0xe9, 0xc6, 0x90, 926afc4e4a5SEric Biggers 0x8e, 0x94, 0xea, 0x4d, 0xf2, 0x8d, 0x08, 0x4f, 927afc4e4a5SEric Biggers 0x32, 0xec, 0xcf, 0x03, 0x49, 0x1c, 0x71, 0xf7, 928afc4e4a5SEric Biggers 0x54, 0xb4, 0x07, 0x55, 0x77, 0xa2, 0x85, 0x52 }, 929afc4e4a5SEric Biggers .valid = true 930afc4e4a5SEric Biggers }, 931afc4e4a5SEric Biggers /* wycheproof - RFC 7748 */ 932afc4e4a5SEric Biggers { 933afc4e4a5SEric Biggers .private = { 0x48, 0x66, 0xe9, 0xd4, 0xd1, 0xb4, 0x67, 0x3c, 934afc4e4a5SEric Biggers 0x5a, 0xd2, 0x26, 0x91, 0x95, 0x7d, 0x6a, 0xf5, 935afc4e4a5SEric Biggers 0xc1, 0x1b, 0x64, 0x21, 0xe0, 0xea, 0x01, 0xd4, 936afc4e4a5SEric Biggers 0x2c, 0xa4, 0x16, 0x9e, 0x79, 0x18, 0xba, 0x4d }, 937afc4e4a5SEric Biggers .public = { 0xe5, 0x21, 0x0f, 0x12, 0x78, 0x68, 0x11, 0xd3, 938afc4e4a5SEric Biggers 0xf4, 0xb7, 0x95, 0x9d, 0x05, 0x38, 0xae, 0x2c, 939afc4e4a5SEric Biggers 0x31, 0xdb, 0xe7, 0x10, 0x6f, 0xc0, 0x3c, 0x3e, 940afc4e4a5SEric Biggers 0xfc, 0x4c, 0xd5, 0x49, 0xc7, 0x15, 0xa4, 0x13 }, 941afc4e4a5SEric Biggers .result = { 0x95, 0xcb, 0xde, 0x94, 0x76, 0xe8, 0x90, 0x7d, 942afc4e4a5SEric Biggers 0x7a, 0xad, 0xe4, 0x5c, 0xb4, 0xb8, 0x73, 0xf8, 943afc4e4a5SEric Biggers 0x8b, 0x59, 0x5a, 0x68, 0x79, 0x9f, 0xa1, 0x52, 944afc4e4a5SEric Biggers 0xe6, 0xf8, 0xf7, 0x64, 0x7a, 0xac, 0x79, 0x57 }, 945afc4e4a5SEric Biggers .valid = true 946afc4e4a5SEric Biggers }, 947afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 948afc4e4a5SEric Biggers { 949afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 950afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 951afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 952afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 953afc4e4a5SEric Biggers .public = { 0x0a, 0xb4, 0xe7, 0x63, 0x80, 0xd8, 0x4d, 0xde, 954afc4e4a5SEric Biggers 0x4f, 0x68, 0x33, 0xc5, 0x8f, 0x2a, 0x9f, 0xb8, 955afc4e4a5SEric Biggers 0xf8, 0x3b, 0xb0, 0x16, 0x9b, 0x17, 0x2b, 0xe4, 956afc4e4a5SEric Biggers 0xb6, 0xe0, 0x59, 0x28, 0x87, 0x74, 0x1a, 0x36 }, 957afc4e4a5SEric Biggers .result = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 958afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 959afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 960afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 961afc4e4a5SEric Biggers .valid = true 962afc4e4a5SEric Biggers }, 963afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 964afc4e4a5SEric Biggers { 965afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 966afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 967afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 968afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 969afc4e4a5SEric Biggers .public = { 0x89, 0xe1, 0x0d, 0x57, 0x01, 0xb4, 0x33, 0x7d, 970afc4e4a5SEric Biggers 0x2d, 0x03, 0x21, 0x81, 0x53, 0x8b, 0x10, 0x64, 971afc4e4a5SEric Biggers 0xbd, 0x40, 0x84, 0x40, 0x1c, 0xec, 0xa1, 0xfd, 972afc4e4a5SEric Biggers 0x12, 0x66, 0x3a, 0x19, 0x59, 0x38, 0x80, 0x00 }, 973afc4e4a5SEric Biggers .result = { 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 974afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 975afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 976afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 977afc4e4a5SEric Biggers .valid = true 978afc4e4a5SEric Biggers }, 979afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 980afc4e4a5SEric Biggers { 981afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 982afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 983afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 984afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 985afc4e4a5SEric Biggers .public = { 0x2b, 0x55, 0xd3, 0xaa, 0x4a, 0x8f, 0x80, 0xc8, 986afc4e4a5SEric Biggers 0xc0, 0xb2, 0xae, 0x5f, 0x93, 0x3e, 0x85, 0xaf, 987afc4e4a5SEric Biggers 0x49, 0xbe, 0xac, 0x36, 0xc2, 0xfa, 0x73, 0x94, 988afc4e4a5SEric Biggers 0xba, 0xb7, 0x6c, 0x89, 0x33, 0xf8, 0xf8, 0x1d }, 989afc4e4a5SEric Biggers .result = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 990afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 991afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 992afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 993afc4e4a5SEric Biggers .valid = true 994afc4e4a5SEric Biggers }, 995afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 996afc4e4a5SEric Biggers { 997afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 998afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 999afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1000afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1001afc4e4a5SEric Biggers .public = { 0x63, 0xe5, 0xb1, 0xfe, 0x96, 0x01, 0xfe, 0x84, 1002afc4e4a5SEric Biggers 0x38, 0x5d, 0x88, 0x66, 0xb0, 0x42, 0x12, 0x62, 1003afc4e4a5SEric Biggers 0xf7, 0x8f, 0xbf, 0xa5, 0xaf, 0xf9, 0x58, 0x5e, 1004afc4e4a5SEric Biggers 0x62, 0x66, 0x79, 0xb1, 0x85, 0x47, 0xd9, 0x59 }, 1005afc4e4a5SEric Biggers .result = { 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1006afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1007afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1008afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f }, 1009afc4e4a5SEric Biggers .valid = true 1010afc4e4a5SEric Biggers }, 1011afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1012afc4e4a5SEric Biggers { 1013afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1014afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1015afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1016afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1017afc4e4a5SEric Biggers .public = { 0xe4, 0x28, 0xf3, 0xda, 0xc1, 0x78, 0x09, 0xf8, 1018afc4e4a5SEric Biggers 0x27, 0xa5, 0x22, 0xce, 0x32, 0x35, 0x50, 0x58, 1019afc4e4a5SEric Biggers 0xd0, 0x73, 0x69, 0x36, 0x4a, 0xa7, 0x89, 0x02, 1020afc4e4a5SEric Biggers 0xee, 0x10, 0x13, 0x9b, 0x9f, 0x9d, 0xd6, 0x53 }, 1021afc4e4a5SEric Biggers .result = { 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1022afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1023afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1024afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f }, 1025afc4e4a5SEric Biggers .valid = true 1026afc4e4a5SEric Biggers }, 1027afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1028afc4e4a5SEric Biggers { 1029afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1030afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1031afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1032afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1033afc4e4a5SEric Biggers .public = { 0xb3, 0xb5, 0x0e, 0x3e, 0xd3, 0xa4, 0x07, 0xb9, 1034afc4e4a5SEric Biggers 0x5d, 0xe9, 0x42, 0xef, 0x74, 0x57, 0x5b, 0x5a, 1035afc4e4a5SEric Biggers 0xb8, 0xa1, 0x0c, 0x09, 0xee, 0x10, 0x35, 0x44, 1036afc4e4a5SEric Biggers 0xd6, 0x0b, 0xdf, 0xed, 0x81, 0x38, 0xab, 0x2b }, 1037afc4e4a5SEric Biggers .result = { 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1038afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1039afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1040afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f }, 1041afc4e4a5SEric Biggers .valid = true 1042afc4e4a5SEric Biggers }, 1043afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1044afc4e4a5SEric Biggers { 1045afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1046afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1047afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1048afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1049afc4e4a5SEric Biggers .public = { 0x21, 0x3f, 0xff, 0xe9, 0x3d, 0x5e, 0xa8, 0xcd, 1050afc4e4a5SEric Biggers 0x24, 0x2e, 0x46, 0x28, 0x44, 0x02, 0x99, 0x22, 1051afc4e4a5SEric Biggers 0xc4, 0x3c, 0x77, 0xc9, 0xe3, 0xe4, 0x2f, 0x56, 1052afc4e4a5SEric Biggers 0x2f, 0x48, 0x5d, 0x24, 0xc5, 0x01, 0xa2, 0x0b }, 1053afc4e4a5SEric Biggers .result = { 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1054afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1055afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1056afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f }, 1057afc4e4a5SEric Biggers .valid = true 1058afc4e4a5SEric Biggers }, 1059afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1060afc4e4a5SEric Biggers { 1061afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1062afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1063afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1064afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1065afc4e4a5SEric Biggers .public = { 0x91, 0xb2, 0x32, 0xa1, 0x78, 0xb3, 0xcd, 0x53, 1066afc4e4a5SEric Biggers 0x09, 0x32, 0x44, 0x1e, 0x61, 0x39, 0x41, 0x8f, 1067afc4e4a5SEric Biggers 0x72, 0x17, 0x22, 0x92, 0xf1, 0xda, 0x4c, 0x18, 1068afc4e4a5SEric Biggers 0x34, 0xfc, 0x5e, 0xbf, 0xef, 0xb5, 0x1e, 0x3f }, 1069afc4e4a5SEric Biggers .result = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1070afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1071afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1072afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03 }, 1073afc4e4a5SEric Biggers .valid = true 1074afc4e4a5SEric Biggers }, 1075afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1076afc4e4a5SEric Biggers { 1077afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1078afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1079afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1080afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1081afc4e4a5SEric Biggers .public = { 0x04, 0x5c, 0x6e, 0x11, 0xc5, 0xd3, 0x32, 0x55, 1082afc4e4a5SEric Biggers 0x6c, 0x78, 0x22, 0xfe, 0x94, 0xeb, 0xf8, 0x9b, 1083afc4e4a5SEric Biggers 0x56, 0xa3, 0x87, 0x8d, 0xc2, 0x7c, 0xa0, 0x79, 1084afc4e4a5SEric Biggers 0x10, 0x30, 0x58, 0x84, 0x9f, 0xab, 0xcb, 0x4f }, 1085afc4e4a5SEric Biggers .result = { 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1086afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1087afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1088afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 1089afc4e4a5SEric Biggers .valid = true 1090afc4e4a5SEric Biggers }, 1091afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1092afc4e4a5SEric Biggers { 1093afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1094afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1095afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1096afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1097afc4e4a5SEric Biggers .public = { 0x1c, 0xa2, 0x19, 0x0b, 0x71, 0x16, 0x35, 0x39, 1098afc4e4a5SEric Biggers 0x06, 0x3c, 0x35, 0x77, 0x3b, 0xda, 0x0c, 0x9c, 1099afc4e4a5SEric Biggers 0x92, 0x8e, 0x91, 0x36, 0xf0, 0x62, 0x0a, 0xeb, 1100afc4e4a5SEric Biggers 0x09, 0x3f, 0x09, 0x91, 0x97, 0xb7, 0xf7, 0x4e }, 1101afc4e4a5SEric Biggers .result = { 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1102afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1103afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1104afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 1105afc4e4a5SEric Biggers .valid = true 1106afc4e4a5SEric Biggers }, 1107afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1108afc4e4a5SEric Biggers { 1109afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1110afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1111afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1112afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1113afc4e4a5SEric Biggers .public = { 0xf7, 0x6e, 0x90, 0x10, 0xac, 0x33, 0xc5, 0x04, 1114afc4e4a5SEric Biggers 0x3b, 0x2d, 0x3b, 0x76, 0xa8, 0x42, 0x17, 0x10, 1115afc4e4a5SEric Biggers 0x00, 0xc4, 0x91, 0x62, 0x22, 0xe9, 0xe8, 0x58, 1116afc4e4a5SEric Biggers 0x97, 0xa0, 0xae, 0xc7, 0xf6, 0x35, 0x0b, 0x3c }, 1117afc4e4a5SEric Biggers .result = { 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1118afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1119afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1120afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 1121afc4e4a5SEric Biggers .valid = true 1122afc4e4a5SEric Biggers }, 1123afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1124afc4e4a5SEric Biggers { 1125afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1126afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1127afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1128afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1129afc4e4a5SEric Biggers .public = { 0xbb, 0x72, 0x68, 0x8d, 0x8f, 0x8a, 0xa7, 0xa3, 1130afc4e4a5SEric Biggers 0x9c, 0xd6, 0x06, 0x0c, 0xd5, 0xc8, 0x09, 0x3c, 1131afc4e4a5SEric Biggers 0xde, 0xc6, 0xfe, 0x34, 0x19, 0x37, 0xc3, 0x88, 1132afc4e4a5SEric Biggers 0x6a, 0x99, 0x34, 0x6c, 0xd0, 0x7f, 0xaa, 0x55 }, 1133afc4e4a5SEric Biggers .result = { 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1134afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1135afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1136afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 1137afc4e4a5SEric Biggers .valid = true 1138afc4e4a5SEric Biggers }, 1139afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1140afc4e4a5SEric Biggers { 1141afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1142afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1143afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1144afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1145afc4e4a5SEric Biggers .public = { 0x88, 0xfd, 0xde, 0xa1, 0x93, 0x39, 0x1c, 0x6a, 1146afc4e4a5SEric Biggers 0x59, 0x33, 0xef, 0x9b, 0x71, 0x90, 0x15, 0x49, 1147afc4e4a5SEric Biggers 0x44, 0x72, 0x05, 0xaa, 0xe9, 0xda, 0x92, 0x8a, 1148afc4e4a5SEric Biggers 0x6b, 0x91, 0xa3, 0x52, 0xba, 0x10, 0xf4, 0x1f }, 1149afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1150afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1151afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1152afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, 1153afc4e4a5SEric Biggers .valid = true 1154afc4e4a5SEric Biggers }, 1155afc4e4a5SEric Biggers /* wycheproof - edge case for shared secret */ 1156afc4e4a5SEric Biggers { 1157afc4e4a5SEric Biggers .private = { 0xa0, 0xa4, 0xf1, 0x30, 0xb9, 0x8a, 0x5b, 0xe4, 1158afc4e4a5SEric Biggers 0xb1, 0xce, 0xdb, 0x7c, 0xb8, 0x55, 0x84, 0xa3, 1159afc4e4a5SEric Biggers 0x52, 0x0e, 0x14, 0x2d, 0x47, 0x4d, 0xc9, 0xcc, 1160afc4e4a5SEric Biggers 0xb9, 0x09, 0xa0, 0x73, 0xa9, 0x76, 0xbf, 0x63 }, 1161afc4e4a5SEric Biggers .public = { 0x30, 0x3b, 0x39, 0x2f, 0x15, 0x31, 0x16, 0xca, 1162afc4e4a5SEric Biggers 0xd9, 0xcc, 0x68, 0x2a, 0x00, 0xcc, 0xc4, 0x4c, 1163afc4e4a5SEric Biggers 0x95, 0xff, 0x0d, 0x3b, 0xbe, 0x56, 0x8b, 0xeb, 1164afc4e4a5SEric Biggers 0x6c, 0x4e, 0x73, 0x9b, 0xaf, 0xdc, 0x2c, 0x68 }, 1165afc4e4a5SEric Biggers .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1166afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1167afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1168afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00 }, 1169afc4e4a5SEric Biggers .valid = true 1170afc4e4a5SEric Biggers }, 1171afc4e4a5SEric Biggers /* wycheproof - checking for overflow */ 1172afc4e4a5SEric Biggers { 1173afc4e4a5SEric Biggers .private = { 0xc8, 0x17, 0x24, 0x70, 0x40, 0x00, 0xb2, 0x6d, 1174afc4e4a5SEric Biggers 0x31, 0x70, 0x3c, 0xc9, 0x7e, 0x3a, 0x37, 0x8d, 1175afc4e4a5SEric Biggers 0x56, 0xfa, 0xd8, 0x21, 0x93, 0x61, 0xc8, 0x8c, 1176afc4e4a5SEric Biggers 0xca, 0x8b, 0xd7, 0xc5, 0x71, 0x9b, 0x12, 0xb2 }, 1177afc4e4a5SEric Biggers .public = { 0xfd, 0x30, 0x0a, 0xeb, 0x40, 0xe1, 0xfa, 0x58, 1178afc4e4a5SEric Biggers 0x25, 0x18, 0x41, 0x2b, 0x49, 0xb2, 0x08, 0xa7, 1179afc4e4a5SEric Biggers 0x84, 0x2b, 0x1e, 0x1f, 0x05, 0x6a, 0x04, 0x01, 1180afc4e4a5SEric Biggers 0x78, 0xea, 0x41, 0x41, 0x53, 0x4f, 0x65, 0x2d }, 1181afc4e4a5SEric Biggers .result = { 0xb7, 0x34, 0x10, 0x5d, 0xc2, 0x57, 0x58, 0x5d, 1182afc4e4a5SEric Biggers 0x73, 0xb5, 0x66, 0xcc, 0xb7, 0x6f, 0x06, 0x27, 1183afc4e4a5SEric Biggers 0x95, 0xcc, 0xbe, 0xc8, 0x91, 0x28, 0xe5, 0x2b, 1184afc4e4a5SEric Biggers 0x02, 0xf3, 0xe5, 0x96, 0x39, 0xf1, 0x3c, 0x46 }, 1185afc4e4a5SEric Biggers .valid = true 1186afc4e4a5SEric Biggers }, 1187afc4e4a5SEric Biggers /* wycheproof - checking for overflow */ 1188afc4e4a5SEric Biggers { 1189afc4e4a5SEric Biggers .private = { 0xc8, 0x17, 0x24, 0x70, 0x40, 0x00, 0xb2, 0x6d, 1190afc4e4a5SEric Biggers 0x31, 0x70, 0x3c, 0xc9, 0x7e, 0x3a, 0x37, 0x8d, 1191afc4e4a5SEric Biggers 0x56, 0xfa, 0xd8, 0x21, 0x93, 0x61, 0xc8, 0x8c, 1192afc4e4a5SEric Biggers 0xca, 0x8b, 0xd7, 0xc5, 0x71, 0x9b, 0x12, 0xb2 }, 1193afc4e4a5SEric Biggers .public = { 0xc8, 0xef, 0x79, 0xb5, 0x14, 0xd7, 0x68, 0x26, 1194afc4e4a5SEric Biggers 0x77, 0xbc, 0x79, 0x31, 0xe0, 0x6e, 0xe5, 0xc2, 1195afc4e4a5SEric Biggers 0x7c, 0x9b, 0x39, 0x2b, 0x4a, 0xe9, 0x48, 0x44, 1196afc4e4a5SEric Biggers 0x73, 0xf5, 0x54, 0xe6, 0x67, 0x8e, 0xcc, 0x2e }, 1197afc4e4a5SEric Biggers .result = { 0x64, 0x7a, 0x46, 0xb6, 0xfc, 0x3f, 0x40, 0xd6, 1198afc4e4a5SEric Biggers 0x21, 0x41, 0xee, 0x3c, 0xee, 0x70, 0x6b, 0x4d, 1199afc4e4a5SEric Biggers 0x7a, 0x92, 0x71, 0x59, 0x3a, 0x7b, 0x14, 0x3e, 1200afc4e4a5SEric Biggers 0x8e, 0x2e, 0x22, 0x79, 0x88, 0x3e, 0x45, 0x50 }, 1201afc4e4a5SEric Biggers .valid = true 1202afc4e4a5SEric Biggers }, 1203afc4e4a5SEric Biggers /* wycheproof - checking for overflow */ 1204afc4e4a5SEric Biggers { 1205afc4e4a5SEric Biggers .private = { 0xc8, 0x17, 0x24, 0x70, 0x40, 0x00, 0xb2, 0x6d, 1206afc4e4a5SEric Biggers 0x31, 0x70, 0x3c, 0xc9, 0x7e, 0x3a, 0x37, 0x8d, 1207afc4e4a5SEric Biggers 0x56, 0xfa, 0xd8, 0x21, 0x93, 0x61, 0xc8, 0x8c, 1208afc4e4a5SEric Biggers 0xca, 0x8b, 0xd7, 0xc5, 0x71, 0x9b, 0x12, 0xb2 }, 1209afc4e4a5SEric Biggers .public = { 0x64, 0xae, 0xac, 0x25, 0x04, 0x14, 0x48, 0x61, 1210afc4e4a5SEric Biggers 0x53, 0x2b, 0x7b, 0xbc, 0xb6, 0xc8, 0x7d, 0x67, 1211afc4e4a5SEric Biggers 0xdd, 0x4c, 0x1f, 0x07, 0xeb, 0xc2, 0xe0, 0x6e, 1212afc4e4a5SEric Biggers 0xff, 0xb9, 0x5a, 0xec, 0xc6, 0x17, 0x0b, 0x2c }, 1213afc4e4a5SEric Biggers .result = { 0x4f, 0xf0, 0x3d, 0x5f, 0xb4, 0x3c, 0xd8, 0x65, 1214afc4e4a5SEric Biggers 0x7a, 0x3c, 0xf3, 0x7c, 0x13, 0x8c, 0xad, 0xce, 1215afc4e4a5SEric Biggers 0xcc, 0xe5, 0x09, 0xe4, 0xeb, 0xa0, 0x89, 0xd0, 1216afc4e4a5SEric Biggers 0xef, 0x40, 0xb4, 0xe4, 0xfb, 0x94, 0x61, 0x55 }, 1217afc4e4a5SEric Biggers .valid = true 1218afc4e4a5SEric Biggers }, 1219afc4e4a5SEric Biggers /* wycheproof - checking for overflow */ 1220afc4e4a5SEric Biggers { 1221afc4e4a5SEric Biggers .private = { 0xc8, 0x17, 0x24, 0x70, 0x40, 0x00, 0xb2, 0x6d, 1222afc4e4a5SEric Biggers 0x31, 0x70, 0x3c, 0xc9, 0x7e, 0x3a, 0x37, 0x8d, 1223afc4e4a5SEric Biggers 0x56, 0xfa, 0xd8, 0x21, 0x93, 0x61, 0xc8, 0x8c, 1224afc4e4a5SEric Biggers 0xca, 0x8b, 0xd7, 0xc5, 0x71, 0x9b, 0x12, 0xb2 }, 1225afc4e4a5SEric Biggers .public = { 0xbf, 0x68, 0xe3, 0x5e, 0x9b, 0xdb, 0x7e, 0xee, 1226afc4e4a5SEric Biggers 0x1b, 0x50, 0x57, 0x02, 0x21, 0x86, 0x0f, 0x5d, 1227afc4e4a5SEric Biggers 0xcd, 0xad, 0x8a, 0xcb, 0xab, 0x03, 0x1b, 0x14, 1228afc4e4a5SEric Biggers 0x97, 0x4c, 0xc4, 0x90, 0x13, 0xc4, 0x98, 0x31 }, 1229afc4e4a5SEric Biggers .result = { 0x21, 0xce, 0xe5, 0x2e, 0xfd, 0xbc, 0x81, 0x2e, 1230afc4e4a5SEric Biggers 0x1d, 0x02, 0x1a, 0x4a, 0xf1, 0xe1, 0xd8, 0xbc, 1231afc4e4a5SEric Biggers 0x4d, 0xb3, 0xc4, 0x00, 0xe4, 0xd2, 0xa2, 0xc5, 1232afc4e4a5SEric Biggers 0x6a, 0x39, 0x26, 0xdb, 0x4d, 0x99, 0xc6, 0x5b }, 1233afc4e4a5SEric Biggers .valid = true 1234afc4e4a5SEric Biggers }, 1235afc4e4a5SEric Biggers /* wycheproof - checking for overflow */ 1236afc4e4a5SEric Biggers { 1237afc4e4a5SEric Biggers .private = { 0xc8, 0x17, 0x24, 0x70, 0x40, 0x00, 0xb2, 0x6d, 1238afc4e4a5SEric Biggers 0x31, 0x70, 0x3c, 0xc9, 0x7e, 0x3a, 0x37, 0x8d, 1239afc4e4a5SEric Biggers 0x56, 0xfa, 0xd8, 0x21, 0x93, 0x61, 0xc8, 0x8c, 1240afc4e4a5SEric Biggers 0xca, 0x8b, 0xd7, 0xc5, 0x71, 0x9b, 0x12, 0xb2 }, 1241afc4e4a5SEric Biggers .public = { 0x53, 0x47, 0xc4, 0x91, 0x33, 0x1a, 0x64, 0xb4, 1242afc4e4a5SEric Biggers 0x3d, 0xdc, 0x68, 0x30, 0x34, 0xe6, 0x77, 0xf5, 1243afc4e4a5SEric Biggers 0x3d, 0xc3, 0x2b, 0x52, 0xa5, 0x2a, 0x57, 0x7c, 1244afc4e4a5SEric Biggers 0x15, 0xa8, 0x3b, 0xf2, 0x98, 0xe9, 0x9f, 0x19 }, 1245afc4e4a5SEric Biggers .result = { 0x18, 0xcb, 0x89, 0xe4, 0xe2, 0x0c, 0x0c, 0x2b, 1246afc4e4a5SEric Biggers 0xd3, 0x24, 0x30, 0x52, 0x45, 0x26, 0x6c, 0x93, 1247afc4e4a5SEric Biggers 0x27, 0x69, 0x0b, 0xbe, 0x79, 0xac, 0xb8, 0x8f, 1248afc4e4a5SEric Biggers 0x5b, 0x8f, 0xb3, 0xf7, 0x4e, 0xca, 0x3e, 0x52 }, 1249afc4e4a5SEric Biggers .valid = true 1250afc4e4a5SEric Biggers }, 1251afc4e4a5SEric Biggers /* wycheproof - private key == -1 (mod order) */ 1252afc4e4a5SEric Biggers { 1253afc4e4a5SEric Biggers .private = { 0xa0, 0x23, 0xcd, 0xd0, 0x83, 0xef, 0x5b, 0xb8, 1254afc4e4a5SEric Biggers 0x2f, 0x10, 0xd6, 0x2e, 0x59, 0xe1, 0x5a, 0x68, 1255afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1256afc4e4a5SEric Biggers 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50 }, 1257afc4e4a5SEric Biggers .public = { 0x25, 0x8e, 0x04, 0x52, 0x3b, 0x8d, 0x25, 0x3e, 1258afc4e4a5SEric Biggers 0xe6, 0x57, 0x19, 0xfc, 0x69, 0x06, 0xc6, 0x57, 1259afc4e4a5SEric Biggers 0x19, 0x2d, 0x80, 0x71, 0x7e, 0xdc, 0x82, 0x8f, 1260afc4e4a5SEric Biggers 0xa0, 0xaf, 0x21, 0x68, 0x6e, 0x2f, 0xaa, 0x75 }, 1261afc4e4a5SEric Biggers .result = { 0x25, 0x8e, 0x04, 0x52, 0x3b, 0x8d, 0x25, 0x3e, 1262afc4e4a5SEric Biggers 0xe6, 0x57, 0x19, 0xfc, 0x69, 0x06, 0xc6, 0x57, 1263afc4e4a5SEric Biggers 0x19, 0x2d, 0x80, 0x71, 0x7e, 0xdc, 0x82, 0x8f, 1264afc4e4a5SEric Biggers 0xa0, 0xaf, 0x21, 0x68, 0x6e, 0x2f, 0xaa, 0x75 }, 1265afc4e4a5SEric Biggers .valid = true 1266afc4e4a5SEric Biggers }, 1267afc4e4a5SEric Biggers /* wycheproof - private key == 1 (mod order) on twist */ 1268afc4e4a5SEric Biggers { 1269afc4e4a5SEric Biggers .private = { 0x58, 0x08, 0x3d, 0xd2, 0x61, 0xad, 0x91, 0xef, 1270afc4e4a5SEric Biggers 0xf9, 0x52, 0x32, 0x2e, 0xc8, 0x24, 0xc6, 0x82, 1271afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1272afc4e4a5SEric Biggers 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f }, 1273afc4e4a5SEric Biggers .public = { 0x2e, 0xae, 0x5e, 0xc3, 0xdd, 0x49, 0x4e, 0x9f, 1274afc4e4a5SEric Biggers 0x2d, 0x37, 0xd2, 0x58, 0xf8, 0x73, 0xa8, 0xe6, 1275afc4e4a5SEric Biggers 0xe9, 0xd0, 0xdb, 0xd1, 0xe3, 0x83, 0xef, 0x64, 1276afc4e4a5SEric Biggers 0xd9, 0x8b, 0xb9, 0x1b, 0x3e, 0x0b, 0xe0, 0x35 }, 1277afc4e4a5SEric Biggers .result = { 0x2e, 0xae, 0x5e, 0xc3, 0xdd, 0x49, 0x4e, 0x9f, 1278afc4e4a5SEric Biggers 0x2d, 0x37, 0xd2, 0x58, 0xf8, 0x73, 0xa8, 0xe6, 1279afc4e4a5SEric Biggers 0xe9, 0xd0, 0xdb, 0xd1, 0xe3, 0x83, 0xef, 0x64, 1280afc4e4a5SEric Biggers 0xd9, 0x8b, 0xb9, 0x1b, 0x3e, 0x0b, 0xe0, 0x35 }, 1281afc4e4a5SEric Biggers .valid = true 1282afc4e4a5SEric Biggers } 1283afc4e4a5SEric Biggers }; 1284afc4e4a5SEric Biggers 1285afc4e4a5SEric Biggers static void test_curve25519(struct kunit *test) 1286afc4e4a5SEric Biggers { 1287afc4e4a5SEric Biggers for (size_t i = 0; i < ARRAY_SIZE(curve25519_test_vectors); ++i) { 1288afc4e4a5SEric Biggers const struct curve25519_test_vector *vec = 1289afc4e4a5SEric Biggers &curve25519_test_vectors[i]; 1290afc4e4a5SEric Biggers u8 out[CURVE25519_KEY_SIZE] = {}; 1291afc4e4a5SEric Biggers bool ret; 1292afc4e4a5SEric Biggers 1293afc4e4a5SEric Biggers ret = curve25519(out, vec->private, vec->public); 1294afc4e4a5SEric Biggers KUNIT_EXPECT_EQ_MSG(test, ret, vec->valid, 1295afc4e4a5SEric Biggers "Wrong return value with test vector %zu", 1296afc4e4a5SEric Biggers i); 1297afc4e4a5SEric Biggers KUNIT_EXPECT_MEMEQ_MSG(test, out, vec->result, sizeof(out), 1298afc4e4a5SEric Biggers "Wrong output with test vector %zu", i); 1299afc4e4a5SEric Biggers } 1300afc4e4a5SEric Biggers } 1301afc4e4a5SEric Biggers 1302afc4e4a5SEric Biggers static void test_curve25519_basepoint(struct kunit *test) 1303afc4e4a5SEric Biggers { 1304afc4e4a5SEric Biggers for (size_t i = 0; i < 5; ++i) { 1305afc4e4a5SEric Biggers u8 in[CURVE25519_KEY_SIZE]; 1306afc4e4a5SEric Biggers u8 out[CURVE25519_KEY_SIZE]; 1307afc4e4a5SEric Biggers u8 out2[CURVE25519_KEY_SIZE]; 1308afc4e4a5SEric Biggers bool ret, ret2; 1309afc4e4a5SEric Biggers 1310afc4e4a5SEric Biggers get_random_bytes(in, sizeof(in)); 1311afc4e4a5SEric Biggers ret = curve25519_generate_public(out, in); 1312afc4e4a5SEric Biggers ret2 = curve25519(out2, in, (u8[CURVE25519_KEY_SIZE]){ 9 }); 1313afc4e4a5SEric Biggers KUNIT_EXPECT_EQ_MSG(test, ret, ret2, 1314afc4e4a5SEric Biggers "in=%*phN", CURVE25519_KEY_SIZE, in); 1315afc4e4a5SEric Biggers KUNIT_EXPECT_MEMEQ_MSG(test, out, out2, CURVE25519_KEY_SIZE, 1316afc4e4a5SEric Biggers "in=%*phN", CURVE25519_KEY_SIZE, in); 1317afc4e4a5SEric Biggers } 1318afc4e4a5SEric Biggers } 1319afc4e4a5SEric Biggers 1320*643d79e5SEric Biggers static void benchmark_curve25519(struct kunit *test) 1321*643d79e5SEric Biggers { 1322*643d79e5SEric Biggers const u8 *private = curve25519_test_vectors[0].private; 1323*643d79e5SEric Biggers const u8 *public = curve25519_test_vectors[0].public; 1324*643d79e5SEric Biggers const size_t warmup_niter = 5000; 1325*643d79e5SEric Biggers const size_t benchmark_niter = 1024; 1326*643d79e5SEric Biggers u8 out[CURVE25519_KEY_SIZE]; 1327*643d79e5SEric Biggers bool ok = true; 1328*643d79e5SEric Biggers u64 t; 1329*643d79e5SEric Biggers 1330*643d79e5SEric Biggers if (!IS_ENABLED(CONFIG_CRYPTO_LIB_BENCHMARK)) 1331*643d79e5SEric Biggers kunit_skip(test, "not enabled"); 1332*643d79e5SEric Biggers 1333*643d79e5SEric Biggers /* Warm-up */ 1334*643d79e5SEric Biggers for (size_t i = 0; i < warmup_niter; i++) 1335*643d79e5SEric Biggers ok &= curve25519(out, private, public); 1336*643d79e5SEric Biggers 1337*643d79e5SEric Biggers /* Benchmark */ 1338*643d79e5SEric Biggers preempt_disable(); 1339*643d79e5SEric Biggers t = ktime_get_ns(); 1340*643d79e5SEric Biggers for (size_t i = 0; i < benchmark_niter; i++) 1341*643d79e5SEric Biggers ok &= curve25519(out, private, public); 1342*643d79e5SEric Biggers t = ktime_get_ns() - t; 1343*643d79e5SEric Biggers preempt_enable(); 1344*643d79e5SEric Biggers KUNIT_EXPECT_TRUE(test, ok); 1345*643d79e5SEric Biggers kunit_info(test, "%llu ops/s", 1346*643d79e5SEric Biggers div64_u64((u64)benchmark_niter * NSEC_PER_SEC, t ?: 1)); 1347*643d79e5SEric Biggers } 1348*643d79e5SEric Biggers 1349afc4e4a5SEric Biggers static struct kunit_case curve25519_test_cases[] = { 1350afc4e4a5SEric Biggers KUNIT_CASE(test_curve25519), 1351afc4e4a5SEric Biggers KUNIT_CASE(test_curve25519_basepoint), 1352*643d79e5SEric Biggers KUNIT_CASE(benchmark_curve25519), 1353afc4e4a5SEric Biggers {}, 1354afc4e4a5SEric Biggers }; 1355afc4e4a5SEric Biggers 1356afc4e4a5SEric Biggers static struct kunit_suite curve25519_test_suite = { 1357afc4e4a5SEric Biggers .name = "curve25519", 1358afc4e4a5SEric Biggers .test_cases = curve25519_test_cases, 1359afc4e4a5SEric Biggers }; 1360afc4e4a5SEric Biggers kunit_test_suite(curve25519_test_suite); 1361afc4e4a5SEric Biggers 1362*643d79e5SEric Biggers MODULE_DESCRIPTION("KUnit tests and benchmark for Curve25519"); 1363afc4e4a5SEric Biggers MODULE_LICENSE("GPL"); 1364