~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/lib/crypto/curve25519-selftest.c

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /lib/crypto/curve25519-selftest.c (Version linux-6.11-rc3) and /lib/crypto/curve25519-selftest.c (Version linux-5.13.19)


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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php