• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Imported from Wycheproof's x25519_test.json.
2# This file is generated by convert_wycheproof.go. Do not edit by hand.
3#
4# Algorithm: X25519
5# Generator version: 0.4.12
6
7[curve = curve25519]
8
9# tcId = 1
10# normal case
11curve = curve25519
12private = 4852834d9d6b77dadeabaaf2e11dca66d19fe74993a7bec36c6e16a0983feaba
13public = 9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a
14result = valid
15shared = 87b7f212b627f7a54ca5e0bcdaddd5389d9de6156cdbcf8ebe14ffbcfb436551
16
17# tcId = 2
18# normal case
19curve = curve25519
20private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
21public = 9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a
22result = valid
23shared = 4b82bd8650ea9b81a42181840926a4ffa16434d1bf298de1db87efb5b0a9e34e
24# Curve25519 or its twist contains some points of low order. This test vector
25# contains a public key with such a point. While many libraries reject such
26# public keys, doing so is not a strict requirement according to RFC 7748.
27
28# tcId = 3
29# public key on twist
30curve = curve25519
31private = 588c061a50804ac488ad774ac716c3f5ba714b2712e048491379a500211998a8
32public = 63aa40c6e38346c5caf23a6df0a5e6c80889a08647e551b3563449befcfc9733
33result = acceptable
34shared = b1a707519495ffffb298ff941716b06dfab87cf8d91123fe2be9a233dda22212
35# Public keys are either points on curve25519 or points on its twist.
36# Implementations may either reject such keys or compute X25519 using the twist.
37# If a point multiplication is performed then it is important that the result is
38# correct, since otherwise attacks with invalid keys are possible.
39
40# tcId = 4
41# public key on twist
42curve = curve25519
43private = b05bfd32e55325d9fd648cb302848039000b390e44d521e58aab3b29a6960ba8
44public = 0f83c36fded9d32fadf4efa3ae93a90bb5cfa66893bc412c43fa7287dbb99779
45result = acceptable
46shared = 67dd4a6e165533534c0e3f172e4ab8576bca923a5f07b2c069b4c310ff2e935b
47# Public keys are either points on curve25519 or points on its twist.
48# Implementations may either reject such keys or compute X25519 using the twist.
49# If a point multiplication is performed then it is important that the result is
50# correct, since otherwise attacks with invalid keys are possible.
51
52# tcId = 5
53# public key on twist
54curve = curve25519
55private = 70e34bcbe1f47fbc0fddfd7c1e1aa53d57bfe0f66d243067b424bb6210bed19c
56public = 0b8211a2b6049097f6871c6c052d3c5fc1ba17da9e32ae458403b05bb283092a
57result = acceptable
58shared = 4a0638cfaa9ef1933b47f8939296a6b25be541ef7f70e844c0bcc00b134de64a
59# Public keys are either points on curve25519 or points on its twist.
60# Implementations may either reject such keys or compute X25519 using the twist.
61# If a point multiplication is performed then it is important that the result is
62# correct, since otherwise attacks with invalid keys are possible.
63
64# tcId = 6
65# public key on twist
66curve = curve25519
67private = 68c1f3a653a4cdb1d37bba94738f8b957a57beb24d646e994dc29a276aad458d
68public = 343ac20a3b9c6a27b1008176509ad30735856ec1c8d8fcae13912d08d152f46c
69result = acceptable
70shared = 399491fce8dfab73b4f9f611de8ea0b27b28f85994250b0f475d585d042ac207
71# Public keys are either points on curve25519 or points on its twist.
72# Implementations may either reject such keys or compute X25519 using the twist.
73# If a point multiplication is performed then it is important that the result is
74# correct, since otherwise attacks with invalid keys are possible.
75
76# tcId = 7
77# public key on twist
78curve = curve25519
79private = d877b26d06dff9d9f7fd4c5b3769f8cdd5b30516a5ab806be324ff3eb69ea0b2
80public = fa695fc7be8d1be5bf704898f388c452bafdd3b8eae805f8681a8d15c2d4e142
81result = acceptable
82shared = 2c4fe11d490a53861776b13b4354abd4cf5a97699db6e6c68c1626d07662f758
83# Public keys are either points on curve25519 or points on its twist.
84# Implementations may either reject such keys or compute X25519 using the twist.
85# If a point multiplication is performed then it is important that the result is
86# correct, since otherwise attacks with invalid keys are possible.
87
88# tcId = 8
89# public key = 0
90curve = curve25519
91private = 207494038f2bb811d47805bcdf04a2ac585ada7f2f23389bfd4658f9ddd4debc
92public = 0000000000000000000000000000000000000000000000000000000000000000
93result = acceptable
94shared = 0000000000000000000000000000000000000000000000000000000000000000
95# The public key is insecure and does not belong to a valid private key. Some
96# libraries reject such keys.
97
98# tcId = 9
99# public key = 1
100curve = curve25519
101private = 202e8972b61c7e61930eb9450b5070eae1c670475685541f0476217e4818cfab
102public = 0100000000000000000000000000000000000000000000000000000000000000
103result = acceptable
104shared = 0000000000000000000000000000000000000000000000000000000000000000
105# The public key is insecure and does not belong to a valid private key. Some
106# libraries reject such keys.
107
108# tcId = 10
109# edge case on twist
110curve = curve25519
111private = 38dde9f3e7b799045f9ac3793d4a9277dadeadc41bec0290f81f744f73775f84
112public = 0200000000000000000000000000000000000000000000000000000000000000
113result = acceptable
114shared = 9a2cfe84ff9c4a9739625cae4a3b82a906877a441946f8d7b3d795fe8f5d1639
115# Public keys are either points on curve25519 or points on its twist.
116# Implementations may either reject such keys or compute X25519 using the twist.
117# If a point multiplication is performed then it is important that the result is
118# correct, since otherwise attacks with invalid keys are possible.
119
120# tcId = 11
121# edge case on twist
122curve = curve25519
123private = 9857a914e3c29036fd9a442ba526b5cdcdf28216153e636c10677acab6bd6aa5
124public = 0300000000000000000000000000000000000000000000000000000000000000
125result = acceptable
126shared = 4da4e0aa072c232ee2f0fa4e519ae50b52c1edd08a534d4ef346c2e106d21d60
127# Public keys are either points on curve25519 or points on its twist.
128# Implementations may either reject such keys or compute X25519 using the twist.
129# If a point multiplication is performed then it is important that the result is
130# correct, since otherwise attacks with invalid keys are possible.
131
132# tcId = 12
133# edge case on twist
134curve = curve25519
135private = 48e2130d723305ed05e6e5894d398a5e33367a8c6aac8fcdf0a88e4b42820db7
136public = ffffff030000f8ffff1f0000c0ffffff000000feffff070000f0ffff3f000000
137result = acceptable
138shared = 9ed10c53747f647f82f45125d3de15a1e6b824496ab40410ffcc3cfe95760f3b
139# Public keys are either points on curve25519 or points on its twist.
140# Implementations may either reject such keys or compute X25519 using the twist.
141# If a point multiplication is performed then it is important that the result is
142# correct, since otherwise attacks with invalid keys are possible.
143
144# tcId = 13
145# edge case on twist
146curve = curve25519
147private = 28f41011691851b3a62b641553b30d0dfddcb8fffcf53700a7be2f6a872e9fb0
148public = 000000fcffff070000e0ffff3f000000ffffff010000f8ffff0f0000c0ffff7f
149result = acceptable
150shared = cf72b4aa6aa1c9f894f4165b86109aa468517648e1f0cc70e1ab08460176506b
151# Public keys are either points on curve25519 or points on its twist.
152# Implementations may either reject such keys or compute X25519 using the twist.
153# If a point multiplication is performed then it is important that the result is
154# correct, since otherwise attacks with invalid keys are possible.
155
156# tcId = 14
157# edge case on twist
158curve = curve25519
159private = 18a93b6499b9f6b3225ca02fef410e0adec23532321d2d8ef1a6d602a8c65b83
160public = 00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffff7f
161result = acceptable
162shared = 5d50b62836bb69579410386cf7bb811c14bf85b1c7b17e5924c7ffea91ef9e12
163# Public keys are either points on curve25519 or points on its twist.
164# Implementations may either reject such keys or compute X25519 using the twist.
165# If a point multiplication is performed then it is important that the result is
166# correct, since otherwise attacks with invalid keys are possible.
167
168# tcId = 15
169# edge case on twist
170curve = curve25519
171private = c01d1305a1338a1fcac2ba7e2e032b427e0b04903165aca957d8d0553d8717b0
172public = eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
173result = acceptable
174shared = 19230eb148d5d67c3c22ab1daeff80a57eae4265ce2872657b2c8099fc698e50
175# Public keys are either points on curve25519 or points on its twist.
176# Implementations may either reject such keys or compute X25519 using the twist.
177# If a point multiplication is performed then it is important that the result is
178# correct, since otherwise attacks with invalid keys are possible.
179
180# tcId = 16
181# edge case for public key
182curve = curve25519
183private = 386f7f16c50731d64f82e6a170b142a4e34f31fd7768fcb8902925e7d1e21abe
184public = 0400000000000000000000000000000000000000000000000000000000000000
185result = valid
186shared = 0fcab5d842a078d7a71fc59b57bfb4ca0be6873b49dcdb9f44e14ae8fbdfa542
187
188# tcId = 17
189# edge case for public key
190curve = curve25519
191private = e023a289bd5e90fa2804ddc019a05ef3e79d434bb6ea2f522ecb643a75296e95
192public = ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000
193result = valid
194shared = 54ce8f2275c077e3b1306a3939c5e03eef6bbb88060544758d9fef59b0bc3e4f
195
196# tcId = 18
197# edge case for public key
198curve = curve25519
199private = 68f010d62ee8d926053a361c3a75c6ea4ebdc8606ab285003a6f8f4076b01e83
200public = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
201result = valid
202shared = f136775c5beb0af8110af10b20372332043cab752419678775a223df57c9d30d
203
204# tcId = 19
205# edge case for public key
206curve = curve25519
207private = 58ebcb35b0f8845caf1ec630f96576b62c4b7b6c36b29deb2cb0084651755c96
208public = fffffffbfffffbffffdfffffdffffffffefffffefffff7fffff7ffffbfffff3f
209result = valid
210shared = bf9affd06b844085586460962ef2146ff3d4533d9444aab006eb88cc3054407d
211
212# tcId = 20
213# edge case for public key
214curve = curve25519
215private = 188c4bc5b9c44b38bb658b9b2ae82d5b01015e093184b17cb7863503a783e1bb
216public = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f
217result = valid
218shared = d480de04f699cb3be0684a9cc2e31281ea0bc5a9dcc157d3d20158d46ca5246d
219
220# tcId = 21
221# edge case for public key
222curve = curve25519
223private = e06c11bb2e13ce3dc7673f67f5482242909423a9ae95ee986a988d98faee23a2
224public = fffffffffeffff7ffffffffffeffff7ffffffffffeffff7ffffffffffeffff7f
225result = valid
226shared = 4c4401cce6b51e4cb18f2790246c9bf914db667750a1cb89069092af07292276
227
228# tcId = 22
229# edge case for public key
230curve = curve25519
231private = c0658c46dde18129293877535b1162b6f9f5414a23cf4d2cbc140a4d99da2b8f
232public = ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
233result = valid
234shared = 578ba8cc2dbdc575afcf9df2b3ee6189f5337d6854c79b4ce165ea12293b3a0f
235
236# tcId = 23
237# public key with low order
238curve = curve25519
239private = 10255c9230a97a30a458ca284a629669293a31890cda9d147febc7d1e22d6bb1
240public = e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800
241result = acceptable
242shared = 0000000000000000000000000000000000000000000000000000000000000000
243# Curve25519 or its twist contains some points of low order. This test vector
244# contains a public key with such a point. While many libraries reject such
245# public keys, doing so is not a strict requirement according to RFC 7748.
246
247# tcId = 24
248# public key with low order
249curve = curve25519
250private = 78f1e8edf14481b389448dac8f59c70b038e7cf92ef2c7eff57a72466e115296
251public = 5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157
252result = acceptable
253shared = 0000000000000000000000000000000000000000000000000000000000000000
254# Curve25519 or its twist contains some points of low order. This test vector
255# contains a public key with such a point. While many libraries reject such
256# public keys, doing so is not a strict requirement according to RFC 7748.
257
258# tcId = 25
259# public key with low order
260curve = curve25519
261private = a0a05a3e8f9f44204d5f8059a94ac7dfc39a49ac016dd743dbfa43c5d671fd88
262public = ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
263result = acceptable
264shared = 0000000000000000000000000000000000000000000000000000000000000000
265# Curve25519 or its twist contains some points of low order. This test vector
266# contains a public key with such a point. While many libraries reject such
267# public keys, doing so is not a strict requirement according to RFC 7748.
268
269# tcId = 26
270# public key with low order
271curve = curve25519
272private = d0dbb3ed1906663f15420af31f4eaf6509d9a9949723500605ad7c1c6e7450a9
273public = edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
274result = acceptable
275shared = 0000000000000000000000000000000000000000000000000000000000000000
276# Curve25519 or its twist contains some points of low order. This test vector
277# contains a public key with such a point. While many libraries reject such
278# public keys, doing so is not a strict requirement according to RFC 7748.
279
280# tcId = 27
281# public key with low order
282curve = curve25519
283private = c0b1d0eb22b244fe3291140072cdd9d989b5f0ecd96c100feb5bca241c1d9f8f
284public = eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
285result = acceptable
286shared = 0000000000000000000000000000000000000000000000000000000000000000
287# Curve25519 or its twist contains some points of low order. This test vector
288# contains a public key with such a point. While many libraries reject such
289# public keys, doing so is not a strict requirement according to RFC 7748.
290
291# tcId = 28
292# public key with low order
293curve = curve25519
294private = 480bf45f594942a8bc0f3353c6e8b8853d77f351f1c2ca6c2d1abf8a00b4229c
295public = 0000000000000000000000000000000000000000000000000000000000000080
296result = acceptable
297shared = 0000000000000000000000000000000000000000000000000000000000000000
298# Curve25519 or its twist contains some points of low order. This test vector
299# contains a public key with such a point. While many libraries reject such
300# public keys, doing so is not a strict requirement according to RFC 7748.
301
302# tcId = 29
303# public key with low order
304curve = curve25519
305private = 30f993fcf8514fc89bd8db14cd43ba0d4b2530e73c4276a05e1b145d420cedb4
306public = 0100000000000000000000000000000000000000000000000000000000000080
307result = acceptable
308shared = 0000000000000000000000000000000000000000000000000000000000000000
309# Curve25519 or its twist contains some points of low order. This test vector
310# contains a public key with such a point. While many libraries reject such
311# public keys, doing so is not a strict requirement according to RFC 7748.
312
313# tcId = 30
314# public key with low order
315curve = curve25519
316private = c04974b758380e2a5b5df6eb09bb2f6b3434f982722a8e676d3da251d1b3de83
317public = e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880
318result = acceptable
319shared = 0000000000000000000000000000000000000000000000000000000000000000
320# Curve25519 or its twist contains some points of low order. This test vector
321# contains a public key with such a point. While many libraries reject such
322# public keys, doing so is not a strict requirement according to RFC 7748.
323
324# tcId = 31
325# public key with low order
326curve = curve25519
327private = 502a31373db32446842fe5add3e024022ea54f274182afc3d9f1bb3d39534eb5
328public = 5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7
329result = acceptable
330shared = 0000000000000000000000000000000000000000000000000000000000000000
331# Curve25519 or its twist contains some points of low order. This test vector
332# contains a public key with such a point. While many libraries reject such
333# public keys, doing so is not a strict requirement according to RFC 7748.
334
335# tcId = 32
336# public key with low order
337curve = curve25519
338private = 90fa6417b0e37030fd6e43eff2abaef14c6793117a039cf621318ba90f4e98be
339public = ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
340result = acceptable
341shared = 0000000000000000000000000000000000000000000000000000000000000000
342# Curve25519 or its twist contains some points of low order. This test vector
343# contains a public key with such a point. While many libraries reject such
344# public keys, doing so is not a strict requirement according to RFC 7748.
345
346# tcId = 33
347# public key with low order
348curve = curve25519
349private = 78ad3f26027f1c9fdd975a1613b947779bad2cf2b741ade01840885a30bb979c
350public = edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
351result = acceptable
352shared = 0000000000000000000000000000000000000000000000000000000000000000
353# Curve25519 or its twist contains some points of low order. This test vector
354# contains a public key with such a point. While many libraries reject such
355# public keys, doing so is not a strict requirement according to RFC 7748.
356
357# tcId = 34
358# public key with low order
359curve = curve25519
360private = 98e23de7b1e0926ed9c87e7b14baf55f497a1d7096f93977680e44dc1c7b7b8b
361public = eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
362result = acceptable
363shared = 0000000000000000000000000000000000000000000000000000000000000000
364# Curve25519 or its twist contains some points of low order. This test vector
365# contains a public key with such a point. While many libraries reject such
366# public keys, doing so is not a strict requirement according to RFC 7748.
367
368# tcId = 35
369# public key with low order
370curve = curve25519
371private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
372public = 0000000000000000000000000000000000000000000000000000000000000000
373result = acceptable
374shared = 0000000000000000000000000000000000000000000000000000000000000000
375
376# tcId = 36
377# public key with low order
378curve = curve25519
379private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
380public = 0100000000000000000000000000000000000000000000000000000000000000
381result = acceptable
382shared = 0000000000000000000000000000000000000000000000000000000000000000
383
384# tcId = 37
385# public key with low order
386curve = curve25519
387private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
388public = ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
389result = acceptable
390shared = 0000000000000000000000000000000000000000000000000000000000000000
391
392# tcId = 38
393# public key with low order
394curve = curve25519
395private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
396public = 5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157
397result = acceptable
398shared = 0000000000000000000000000000000000000000000000000000000000000000
399
400# tcId = 39
401# public key with low order
402curve = curve25519
403private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
404public = e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800
405result = acceptable
406shared = 0000000000000000000000000000000000000000000000000000000000000000
407
408# tcId = 40
409# public key with low order
410curve = curve25519
411private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
412public = edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
413result = acceptable
414shared = 0000000000000000000000000000000000000000000000000000000000000000
415
416# tcId = 41
417# public key with low order
418curve = curve25519
419private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
420public = eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
421result = acceptable
422shared = 0000000000000000000000000000000000000000000000000000000000000000
423
424# tcId = 42
425# public key with low order
426curve = curve25519
427private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
428public = 0000000000000000000000000000000000000000000000000000000000000080
429result = acceptable
430shared = 0000000000000000000000000000000000000000000000000000000000000000
431
432# tcId = 43
433# public key with low order
434curve = curve25519
435private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
436public = 0100000000000000000000000000000000000000000000000000000000000080
437result = acceptable
438shared = 0000000000000000000000000000000000000000000000000000000000000000
439
440# tcId = 44
441# public key with low order
442curve = curve25519
443private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
444public = ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
445result = acceptable
446shared = 0000000000000000000000000000000000000000000000000000000000000000
447
448# tcId = 45
449# public key with low order
450curve = curve25519
451private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
452public = 5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7
453result = acceptable
454shared = 0000000000000000000000000000000000000000000000000000000000000000
455
456# tcId = 46
457# public key with low order
458curve = curve25519
459private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
460public = e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880
461result = acceptable
462shared = 0000000000000000000000000000000000000000000000000000000000000000
463
464# tcId = 47
465# public key with low order
466curve = curve25519
467private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
468public = edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
469result = acceptable
470shared = 0000000000000000000000000000000000000000000000000000000000000000
471
472# tcId = 48
473# public key with low order
474curve = curve25519
475private = 1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae
476public = eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
477result = acceptable
478shared = 0000000000000000000000000000000000000000000000000000000000000000
479
480# tcId = 49
481# public key >= p
482curve = curve25519
483private = f01e48dafac9d7bcf589cbc382c878d18bda3550589ffb5d50b523bebe329dae
484public = efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
485result = acceptable
486shared = bd36a0790eb883098c988b21786773de0b3a4df162282cf110de18dd484ce74b
487
488# tcId = 50
489# public key >= p
490curve = curve25519
491private = 288796bc5aff4b81a37501757bc0753a3c21964790d38699308debc17a6eaf8d
492public = f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
493result = acceptable
494shared = b4e0dd76da7b071728b61f856771aa356e57eda78a5b1655cc3820fb5f854c5c
495
496# tcId = 51
497# public key >= p
498curve = curve25519
499private = 98df845f6651bf1138221f119041f72b6dbc3c4ace7143d99fd55ad867480da8
500public = f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
501result = acceptable
502shared = 6fdf6c37611dbd5304dc0f2eb7c9517eb3c50e12fd050ac6dec27071d4bfc034
503
504# tcId = 52
505# public key >= p
506curve = curve25519
507private = f09498e46f02f878829e78b803d316a2ed695d0498a08abdf8276930e24edcb0
508public = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
509result = acceptable
510shared = 4c8fc4b1c6ab88fb21f18f6d4c810240d4e94651ba44f7a2c863cec7dc56602d
511
512# tcId = 53
513# public key >= p
514curve = curve25519
515private = 1813c10a5c7f21f96e17f288c0cc37607c04c5f5aea2db134f9e2ffc66bd9db8
516public = 0200000000000000000000000000000000000000000000000000000000000080
517result = acceptable
518shared = 1cd0b28267dc541c642d6d7dca44a8b38a63736eef5c4e6501ffbbb1780c033c
519
520# tcId = 54
521# public key >= p
522curve = curve25519
523private = 7857fb808653645a0beb138a64f5f4d733a45ea84c3cda11a9c06f7e7139149e
524public = 0300000000000000000000000000000000000000000000000000000000000080
525result = acceptable
526shared = 8755be01c60a7e825cff3e0e78cb3aa4333861516aa59b1c51a8b2a543dfa822
527
528# tcId = 55
529# public key >= p
530curve = curve25519
531private = e03aa842e2abc56e81e87b8b9f417b2a1e5913c723eed28d752f8d47a59f498f
532public = 0400000000000000000000000000000000000000000000000000000000000080
533result = acceptable
534shared = 54c9a1ed95e546d27822a360931dda60a1df049da6f904253c0612bbdc087476
535
536# tcId = 56
537# public key >= p
538curve = curve25519
539private = f8f707b7999b18cb0d6b96124f2045972ca274bfc154ad0c87038c24c6d0d4b2
540public = daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
541result = acceptable
542shared = cc1f40d743cdc2230e1043daba8b75e810f1fbab7f255269bd9ebb29e6bf494f
543
544# tcId = 57
545# public key >= p
546curve = curve25519
547private = a034f684fa631e1a348118c1ce4c98231f2d9eec9ba5365b4a05d69a785b0796
548public = dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
549result = acceptable
550shared = 54998ee43a5b007bf499f078e736524400a8b5c7e9b9b43771748c7cdf880412
551
552# tcId = 58
553# public key >= p
554curve = curve25519
555private = 30b6c6a0f2ffa680768f992ba89e152d5bc9893d38c9119be4f767bfab6e0ca5
556public = dcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
557result = acceptable
558shared = ead9b38efdd723637934e55ab717a7ae09eb86a21dc36a3feeb88b759e391e09
559
560# tcId = 59
561# public key >= p
562curve = curve25519
563private = 901b9dcf881e01e027575035d40b43bdc1c5242e030847495b0c7286469b6591
564public = eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
565result = acceptable
566shared = 602ff40789b54b41805915fe2a6221f07a50ffc2c3fc94cf61f13d7904e88e0e
567
568# tcId = 60
569# public key >= p
570curve = curve25519
571private = 8046677c28fd82c9a1bdb71a1a1a34faba1225e2507fe3f54d10bd5b0d865f8e
572public = ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
573result = acceptable
574shared = e00ae8b143471247ba24f12c885536c3cb981b58e1e56b2baf35c12ae1f79c26
575
576# tcId = 61
577# public key >= p
578curve = curve25519
579private = 602f7e2f68a846b82cc269b1d48e939886ae54fd636c1fe074d710127d472491
580public = efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
581result = acceptable
582shared = 98cb9b50dd3fc2b0d4f2d2bf7c5cfdd10c8fcd31fc40af1ad44f47c131376362
583
584# tcId = 62
585# public key >= p
586curve = curve25519
587private = 60887b3dc72443026ebedbbbb70665f42b87add1440e7768fbd7e8e2ce5f639d
588public = f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
589result = acceptable
590shared = 38d6304c4a7e6d9f7959334fb5245bd2c754525d4c91db950206926234c1f633
591
592# tcId = 63
593# public key >= p
594curve = curve25519
595private = 78d31dfa854497d72d8def8a1b7fb006cec2d8c4924647c93814ae56faeda495
596public = f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
597result = acceptable
598shared = 786cd54996f014a5a031ec14db812ed08355061fdb5de680a800ac521f318e23
599
600# tcId = 64
601# public key >= p
602curve = curve25519
603private = c04c5baefa8302ddded6a4bb957761b4eb97aefa4fc3b8043085f96a5659b3a5
604public = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
605result = acceptable
606shared = 29ae8bc73e9b10a08b4f681c43c3e0ac1a171d31b38f1a48efba29ae639ea134
607
608# tcId = 65
609# RFC 7748
610curve = curve25519
611private = a046e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449a44
612public = e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c
613result = valid
614shared = c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552
615
616# tcId = 66
617# RFC 7748
618curve = curve25519
619private = 4866e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba4d
620public = e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a413
621result = valid
622shared = 95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957
623
624# tcId = 67
625# edge case for shared secret
626curve = curve25519
627private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
628public = 0ab4e76380d84dde4f6833c58f2a9fb8f83bb0169b172be4b6e0592887741a36
629result = acceptable
630shared = 0200000000000000000000000000000000000000000000000000000000000000
631# Public keys are either points on curve25519 or points on its twist.
632# Implementations may either reject such keys or compute X25519 using the twist.
633# If a point multiplication is performed then it is important that the result is
634# correct, since otherwise attacks with invalid keys are possible.
635
636# tcId = 68
637# edge case for shared secret
638curve = curve25519
639private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
640public = 89e10d5701b4337d2d032181538b1064bd4084401ceca1fd12663a1959388000
641result = valid
642shared = 0900000000000000000000000000000000000000000000000000000000000000
643
644# tcId = 69
645# edge case for shared secret
646curve = curve25519
647private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
648public = 2b55d3aa4a8f80c8c0b2ae5f933e85af49beac36c2fa7394bab76c8933f8f81d
649result = valid
650shared = 1000000000000000000000000000000000000000000000000000000000000000
651
652# tcId = 70
653# edge case for shared secret
654curve = curve25519
655private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
656public = 63e5b1fe9601fe84385d8866b0421262f78fbfa5aff9585e626679b18547d959
657result = acceptable
658shared = feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f
659# Public keys are either points on curve25519 or points on its twist.
660# Implementations may either reject such keys or compute X25519 using the twist.
661# If a point multiplication is performed then it is important that the result is
662# correct, since otherwise attacks with invalid keys are possible.
663
664# tcId = 71
665# edge case for shared secret
666curve = curve25519
667private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
668public = e428f3dac17809f827a522ce32355058d07369364aa78902ee10139b9f9dd653
669result = valid
670shared = fcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f
671
672# tcId = 72
673# edge case for shared secret
674curve = curve25519
675private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
676public = b3b50e3ed3a407b95de942ef74575b5ab8a10c09ee103544d60bdfed8138ab2b
677result = acceptable
678shared = f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f
679# Public keys are either points on curve25519 or points on its twist.
680# Implementations may either reject such keys or compute X25519 using the twist.
681# If a point multiplication is performed then it is important that the result is
682# correct, since otherwise attacks with invalid keys are possible.
683
684# tcId = 73
685# edge case for shared secret
686curve = curve25519
687private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
688public = 213fffe93d5ea8cd242e462844029922c43c77c9e3e42f562f485d24c501a20b
689result = valid
690shared = f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f
691
692# tcId = 74
693# edge case for shared secret
694curve = curve25519
695private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
696public = 91b232a178b3cd530932441e6139418f72172292f1da4c1834fc5ebfefb51e3f
697result = valid
698shared = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
699
700# tcId = 75
701# edge case for shared secret
702curve = curve25519
703private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
704public = 045c6e11c5d332556c7822fe94ebf89b56a3878dc27ca079103058849fabcb4f
705result = acceptable
706shared = e5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
707# Public keys are either points on curve25519 or points on its twist.
708# Implementations may either reject such keys or compute X25519 using the twist.
709# If a point multiplication is performed then it is important that the result is
710# correct, since otherwise attacks with invalid keys are possible.
711
712# tcId = 76
713# edge case for shared secret
714curve = curve25519
715private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
716public = 1ca2190b71163539063c35773bda0c9c928e9136f0620aeb093f099197b7f74e
717result = acceptable
718shared = e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
719# Public keys are either points on curve25519 or points on its twist.
720# Implementations may either reject such keys or compute X25519 using the twist.
721# If a point multiplication is performed then it is important that the result is
722# correct, since otherwise attacks with invalid keys are possible.
723
724# tcId = 77
725# edge case for shared secret
726curve = curve25519
727private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
728public = f76e9010ac33c5043b2d3b76a842171000c4916222e9e85897a0aec7f6350b3c
729result = valid
730shared = ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
731
732# tcId = 78
733# edge case for shared secret
734curve = curve25519
735private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
736public = bb72688d8f8aa7a39cd6060cd5c8093cdec6fe341937c3886a99346cd07faa55
737result = acceptable
738shared = dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
739# Public keys are either points on curve25519 or points on its twist.
740# Implementations may either reject such keys or compute X25519 using the twist.
741# If a point multiplication is performed then it is important that the result is
742# correct, since otherwise attacks with invalid keys are possible.
743
744# tcId = 79
745# edge case for shared secret
746curve = curve25519
747private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
748public = 88fddea193391c6a5933ef9b71901549447205aae9da928a6b91a352ba10f41f
749result = acceptable
750shared = 0000000000000000000000000000000000000000000000000000000000000002
751# Public keys are either points on curve25519 or points on its twist.
752# Implementations may either reject such keys or compute X25519 using the twist.
753# If a point multiplication is performed then it is important that the result is
754# correct, since otherwise attacks with invalid keys are possible.
755
756# tcId = 80
757# edge case for shared secret
758curve = curve25519
759private = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63
760public = 303b392f153116cad9cc682a00ccc44c95ff0d3bbe568beb6c4e739bafdc2c68
761result = acceptable
762shared = 0000000000000000000000000000000000000000000000000000000000008000
763# Public keys are either points on curve25519 or points on its twist.
764# Implementations may either reject such keys or compute X25519 using the twist.
765# If a point multiplication is performed then it is important that the result is
766# correct, since otherwise attacks with invalid keys are possible.
767
768# tcId = 81
769# checking for overflow
770curve = curve25519
771private = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2
772public = fd300aeb40e1fa582518412b49b208a7842b1e1f056a040178ea4141534f652d
773result = valid
774shared = b734105dc257585d73b566ccb76f062795ccbec89128e52b02f3e59639f13c46
775
776# tcId = 82
777# checking for overflow
778curve = curve25519
779private = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2
780public = c8ef79b514d7682677bc7931e06ee5c27c9b392b4ae9484473f554e6678ecc2e
781result = valid
782shared = 647a46b6fc3f40d62141ee3cee706b4d7a9271593a7b143e8e2e2279883e4550
783
784# tcId = 83
785# checking for overflow
786curve = curve25519
787private = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2
788public = 64aeac2504144861532b7bbcb6c87d67dd4c1f07ebc2e06effb95aecc6170b2c
789result = valid
790shared = 4ff03d5fb43cd8657a3cf37c138cadcecce509e4eba089d0ef40b4e4fb946155
791
792# tcId = 84
793# checking for overflow
794curve = curve25519
795private = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2
796public = bf68e35e9bdb7eee1b50570221860f5dcdad8acbab031b14974cc49013c49831
797result = valid
798shared = 21cee52efdbc812e1d021a4af1e1d8bc4db3c400e4d2a2c56a3926db4d99c65b
799
800# tcId = 85
801# checking for overflow
802curve = curve25519
803private = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2
804public = 5347c491331a64b43ddc683034e677f53dc32b52a52a577c15a83bf298e99f19
805result = valid
806shared = 18cb89e4e20c0c2bd324305245266c9327690bbe79acb88f5b8fb3f74eca3e52
807
808# tcId = 86
809# private key == -1 (mod order)
810curve = curve25519
811private = a023cdd083ef5bb82f10d62e59e15a6800000000000000000000000000000050
812public = 258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75
813result = valid
814shared = 258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75
815
816# tcId = 87
817# private key == 1 (mod order) on twist
818curve = curve25519
819private = 58083dd261ad91eff952322ec824c682ffffffffffffffffffffffffffffff5f
820public = 2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035
821result = acceptable
822shared = 2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035
823
824