~ [ 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-3.10.108)


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