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