quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

scalarmult8.c (24959B)


      1 
      2 #define TEST_NAME "scalarmult8"
      3 #include "cmptest.h"
      4 
      5 typedef struct TestData_ {
      6     const char  pk_hex[crypto_scalarmult_BYTES * 2 + 1];
      7     const char  sk_hex[crypto_scalarmult_SCALARBYTES * 2 + 1];
      8     const char  shared_hex[crypto_scalarmult_BYTES * 2 + 1];
      9     const char *outcome;
     10 } TestData;
     11 
     12 static TestData test_data[] = {
     13     {
     14         "9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a",
     15         "4852834d9d6b77dadeabaaf2e11dca66d19fe74993a7bec36c6e16a0983feaba",
     16         "87b7f212b627f7a54ca5e0bcdaddd5389d9de6156cdbcf8ebe14ffbcfb436551",
     17         "valid"
     18     },
     19     {
     20         "9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a",
     21         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
     22         "4b82bd8650ea9b81a42181840926a4ffa16434d1bf298de1db87efb5b0a9e34e",
     23         "valid"
     24     },
     25     {
     26         "63aa40c6e38346c5caf23a6df0a5e6c80889a08647e551b3563449befcfc9733",
     27         "588c061a50804ac488ad774ac716c3f5ba714b2712e048491379a500211998a8",
     28         "b1a707519495ffffb298ff941716b06dfab87cf8d91123fe2be9a233dda22212",
     29         "acceptable"
     30     },
     31     {
     32         "0f83c36fded9d32fadf4efa3ae93a90bb5cfa66893bc412c43fa7287dbb99779",
     33         "b05bfd32e55325d9fd648cb302848039000b390e44d521e58aab3b29a6960ba8",
     34         "67dd4a6e165533534c0e3f172e4ab8576bca923a5f07b2c069b4c310ff2e935b",
     35         "acceptable"
     36     },
     37     {
     38         "0b8211a2b6049097f6871c6c052d3c5fc1ba17da9e32ae458403b05bb283092a",
     39         "70e34bcbe1f47fbc0fddfd7c1e1aa53d57bfe0f66d243067b424bb6210bed19c",
     40         "4a0638cfaa9ef1933b47f8939296a6b25be541ef7f70e844c0bcc00b134de64a",
     41         "acceptable"
     42     },
     43     {
     44         "343ac20a3b9c6a27b1008176509ad30735856ec1c8d8fcae13912d08d152f46c",
     45         "68c1f3a653a4cdb1d37bba94738f8b957a57beb24d646e994dc29a276aad458d",
     46         "399491fce8dfab73b4f9f611de8ea0b27b28f85994250b0f475d585d042ac207",
     47         "acceptable"
     48     },
     49     {
     50         "fa695fc7be8d1be5bf704898f388c452bafdd3b8eae805f8681a8d15c2d4e142",
     51         "d877b26d06dff9d9f7fd4c5b3769f8cdd5b30516a5ab806be324ff3eb69ea0b2",
     52         "2c4fe11d490a53861776b13b4354abd4cf5a97699db6e6c68c1626d07662f758",
     53         "acceptable"
     54     },
     55     {
     56         "0000000000000000000000000000000000000000000000000000000000000000",
     57         "207494038f2bb811d47805bcdf04a2ac585ada7f2f23389bfd4658f9ddd4debc",
     58         "0000000000000000000000000000000000000000000000000000000000000000",
     59         "acceptable"
     60     },
     61     {
     62         "0100000000000000000000000000000000000000000000000000000000000000",
     63         "202e8972b61c7e61930eb9450b5070eae1c670475685541f0476217e4818cfab",
     64         "0000000000000000000000000000000000000000000000000000000000000000",
     65         "acceptable"
     66     },
     67     {
     68         "0200000000000000000000000000000000000000000000000000000000000000",
     69         "38dde9f3e7b799045f9ac3793d4a9277dadeadc41bec0290f81f744f73775f84",
     70         "9a2cfe84ff9c4a9739625cae4a3b82a906877a441946f8d7b3d795fe8f5d1639",
     71         "acceptable"
     72     },
     73     {
     74         "0300000000000000000000000000000000000000000000000000000000000000",
     75         "9857a914e3c29036fd9a442ba526b5cdcdf28216153e636c10677acab6bd6aa5",
     76         "4da4e0aa072c232ee2f0fa4e519ae50b52c1edd08a534d4ef346c2e106d21d60",
     77         "acceptable"
     78     },
     79     {
     80         "ffffff030000f8ffff1f0000c0ffffff000000feffff070000f0ffff3f000000",
     81         "48e2130d723305ed05e6e5894d398a5e33367a8c6aac8fcdf0a88e4b42820db7",
     82         "9ed10c53747f647f82f45125d3de15a1e6b824496ab40410ffcc3cfe95760f3b",
     83         "acceptable"
     84     },
     85     {
     86         "000000fcffff070000e0ffff3f000000ffffff010000f8ffff0f0000c0ffff7f",
     87         "28f41011691851b3a62b641553b30d0dfddcb8fffcf53700a7be2f6a872e9fb0",
     88         "cf72b4aa6aa1c9f894f4165b86109aa468517648e1f0cc70e1ab08460176506b",
     89         "acceptable"
     90     },
     91     {
     92         "00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffff7f",
     93         "18a93b6499b9f6b3225ca02fef410e0adec23532321d2d8ef1a6d602a8c65b83",
     94         "5d50b62836bb69579410386cf7bb811c14bf85b1c7b17e5924c7ffea91ef9e12",
     95         "acceptable"
     96     },
     97     {
     98         "eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
     99         "c01d1305a1338a1fcac2ba7e2e032b427e0b04903165aca957d8d0553d8717b0",
    100         "19230eb148d5d67c3c22ab1daeff80a57eae4265ce2872657b2c8099fc698e50",
    101         "acceptable"
    102     },
    103     {
    104         "0400000000000000000000000000000000000000000000000000000000000000",
    105         "386f7f16c50731d64f82e6a170b142a4e34f31fd7768fcb8902925e7d1e21abe",
    106         "0fcab5d842a078d7a71fc59b57bfb4ca0be6873b49dcdb9f44e14ae8fbdfa542",
    107         "valid"
    108     },
    109     {
    110         "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000",
    111         "e023a289bd5e90fa2804ddc019a05ef3e79d434bb6ea2f522ecb643a75296e95",
    112         "54ce8f2275c077e3b1306a3939c5e03eef6bbb88060544758d9fef59b0bc3e4f",
    113         "valid"
    114     },
    115     {
    116         "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03",
    117         "68f010d62ee8d926053a361c3a75c6ea4ebdc8606ab285003a6f8f4076b01e83",
    118         "f136775c5beb0af8110af10b20372332043cab752419678775a223df57c9d30d",
    119         "valid"
    120     },
    121     {
    122         "fffffffbfffffbffffdfffffdffffffffefffffefffff7fffff7ffffbfffff3f",
    123         "58ebcb35b0f8845caf1ec630f96576b62c4b7b6c36b29deb2cb0084651755c96",
    124         "bf9affd06b844085586460962ef2146ff3d4533d9444aab006eb88cc3054407d",
    125         "valid"
    126     },
    127     {
    128         "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
    129         "188c4bc5b9c44b38bb658b9b2ae82d5b01015e093184b17cb7863503a783e1bb",
    130         "d480de04f699cb3be0684a9cc2e31281ea0bc5a9dcc157d3d20158d46ca5246d",
    131         "valid"
    132     },
    133     {
    134         "fffffffffeffff7ffffffffffeffff7ffffffffffeffff7ffffffffffeffff7f",
    135         "e06c11bb2e13ce3dc7673f67f5482242909423a9ae95ee986a988d98faee23a2",
    136         "4c4401cce6b51e4cb18f2790246c9bf914db667750a1cb89069092af07292276",
    137         "valid"
    138     },
    139     {
    140         "ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    141         "c0658c46dde18129293877535b1162b6f9f5414a23cf4d2cbc140a4d99da2b8f",
    142         "578ba8cc2dbdc575afcf9df2b3ee6189f5337d6854c79b4ce165ea12293b3a0f",
    143         "valid"
    144     },
    145     {
    146         "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800",
    147         "10255c9230a97a30a458ca284a629669293a31890cda9d147febc7d1e22d6bb1",
    148         "0000000000000000000000000000000000000000000000000000000000000000",
    149         "acceptable"
    150     },
    151     {
    152         "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157",
    153         "78f1e8edf14481b389448dac8f59c70b038e7cf92ef2c7eff57a72466e115296",
    154         "0000000000000000000000000000000000000000000000000000000000000000",
    155         "acceptable"
    156     },
    157     {
    158         "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    159         "a0a05a3e8f9f44204d5f8059a94ac7dfc39a49ac016dd743dbfa43c5d671fd88",
    160         "0000000000000000000000000000000000000000000000000000000000000000",
    161         "acceptable"
    162     },
    163     {
    164         "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    165         "d0dbb3ed1906663f15420af31f4eaf6509d9a9949723500605ad7c1c6e7450a9",
    166         "0000000000000000000000000000000000000000000000000000000000000000",
    167         "acceptable"
    168     },
    169     {
    170         "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    171         "c0b1d0eb22b244fe3291140072cdd9d989b5f0ecd96c100feb5bca241c1d9f8f",
    172         "0000000000000000000000000000000000000000000000000000000000000000",
    173         "acceptable"
    174     },
    175     {
    176         "0000000000000000000000000000000000000000000000000000000000000080",
    177         "480bf45f594942a8bc0f3353c6e8b8853d77f351f1c2ca6c2d1abf8a00b4229c",
    178         "0000000000000000000000000000000000000000000000000000000000000000",
    179         "acceptable"
    180     },
    181     {
    182         "0100000000000000000000000000000000000000000000000000000000000080",
    183         "30f993fcf8514fc89bd8db14cd43ba0d4b2530e73c4276a05e1b145d420cedb4",
    184         "0000000000000000000000000000000000000000000000000000000000000000",
    185         "acceptable"
    186     },
    187     {
    188         "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880",
    189         "c04974b758380e2a5b5df6eb09bb2f6b3434f982722a8e676d3da251d1b3de83",
    190         "0000000000000000000000000000000000000000000000000000000000000000",
    191         "acceptable"
    192     },
    193     {
    194         "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7",
    195         "502a31373db32446842fe5add3e024022ea54f274182afc3d9f1bb3d39534eb5",
    196         "0000000000000000000000000000000000000000000000000000000000000000",
    197         "acceptable"
    198     },
    199     {
    200         "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    201         "90fa6417b0e37030fd6e43eff2abaef14c6793117a039cf621318ba90f4e98be",
    202         "0000000000000000000000000000000000000000000000000000000000000000",
    203         "acceptable"
    204     },
    205     {
    206         "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    207         "78ad3f26027f1c9fdd975a1613b947779bad2cf2b741ade01840885a30bb979c",
    208         "0000000000000000000000000000000000000000000000000000000000000000",
    209         "acceptable"
    210     },
    211     {
    212         "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    213         "98e23de7b1e0926ed9c87e7b14baf55f497a1d7096f93977680e44dc1c7b7b8b",
    214         "0000000000000000000000000000000000000000000000000000000000000000",
    215         "acceptable"
    216     },
    217     {
    218         "0000000000000000000000000000000000000000000000000000000000000000",
    219         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    220         "0000000000000000000000000000000000000000000000000000000000000000",
    221         "acceptable"
    222     },
    223     {
    224         "0100000000000000000000000000000000000000000000000000000000000000",
    225         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    226         "0000000000000000000000000000000000000000000000000000000000000000",
    227         "acceptable"
    228     },
    229     {
    230         "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    231         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    232         "0000000000000000000000000000000000000000000000000000000000000000",
    233         "acceptable"
    234     },
    235     {
    236         "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157",
    237         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    238         "0000000000000000000000000000000000000000000000000000000000000000",
    239         "acceptable"
    240     },
    241     {
    242         "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800",
    243         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    244         "0000000000000000000000000000000000000000000000000000000000000000",
    245         "acceptable"
    246     },
    247     {
    248         "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    249         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    250         "0000000000000000000000000000000000000000000000000000000000000000",
    251         "acceptable"
    252     },
    253     {
    254         "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    255         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    256         "0000000000000000000000000000000000000000000000000000000000000000",
    257         "acceptable"
    258     },
    259     {
    260         "0000000000000000000000000000000000000000000000000000000000000080",
    261         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    262         "0000000000000000000000000000000000000000000000000000000000000000",
    263         "acceptable"
    264     },
    265     {
    266         "0100000000000000000000000000000000000000000000000000000000000080",
    267         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    268         "0000000000000000000000000000000000000000000000000000000000000000",
    269         "acceptable"
    270     },
    271     {
    272         "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    273         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    274         "0000000000000000000000000000000000000000000000000000000000000000",
    275         "acceptable"
    276     },
    277     {
    278         "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7",
    279         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    280         "0000000000000000000000000000000000000000000000000000000000000000",
    281         "acceptable"
    282     },
    283     {
    284         "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880",
    285         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    286         "0000000000000000000000000000000000000000000000000000000000000000",
    287         "acceptable"
    288     },
    289     {
    290         "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    291         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    292         "0000000000000000000000000000000000000000000000000000000000000000",
    293         "acceptable"
    294     },
    295     {
    296         "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    297         "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
    298         "0000000000000000000000000000000000000000000000000000000000000000",
    299         "acceptable"
    300     },
    301     {
    302         "efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    303         "f01e48dafac9d7bcf589cbc382c878d18bda3550589ffb5d50b523bebe329dae",
    304         "bd36a0790eb883098c988b21786773de0b3a4df162282cf110de18dd484ce74b",
    305         "acceptable"
    306     },
    307     {
    308         "f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    309         "288796bc5aff4b81a37501757bc0753a3c21964790d38699308debc17a6eaf8d",
    310         "b4e0dd76da7b071728b61f856771aa356e57eda78a5b1655cc3820fb5f854c5c",
    311         "acceptable"
    312     },
    313     {
    314         "f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    315         "98df845f6651bf1138221f119041f72b6dbc3c4ace7143d99fd55ad867480da8",
    316         "6fdf6c37611dbd5304dc0f2eb7c9517eb3c50e12fd050ac6dec27071d4bfc034",
    317         "acceptable"
    318     },
    319     {
    320         "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    321         "f09498e46f02f878829e78b803d316a2ed695d0498a08abdf8276930e24edcb0",
    322         "4c8fc4b1c6ab88fb21f18f6d4c810240d4e94651ba44f7a2c863cec7dc56602d",
    323         "acceptable"
    324     },
    325     {
    326         "0200000000000000000000000000000000000000000000000000000000000080",
    327         "1813c10a5c7f21f96e17f288c0cc37607c04c5f5aea2db134f9e2ffc66bd9db8",
    328         "1cd0b28267dc541c642d6d7dca44a8b38a63736eef5c4e6501ffbbb1780c033c",
    329         "acceptable"
    330     },
    331     {
    332         "0300000000000000000000000000000000000000000000000000000000000080",
    333         "7857fb808653645a0beb138a64f5f4d733a45ea84c3cda11a9c06f7e7139149e",
    334         "8755be01c60a7e825cff3e0e78cb3aa4333861516aa59b1c51a8b2a543dfa822",
    335         "acceptable"
    336     },
    337     {
    338         "0400000000000000000000000000000000000000000000000000000000000080",
    339         "e03aa842e2abc56e81e87b8b9f417b2a1e5913c723eed28d752f8d47a59f498f",
    340         "54c9a1ed95e546d27822a360931dda60a1df049da6f904253c0612bbdc087476",
    341         "acceptable"
    342     },
    343     {
    344         "daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    345         "f8f707b7999b18cb0d6b96124f2045972ca274bfc154ad0c87038c24c6d0d4b2",
    346         "cc1f40d743cdc2230e1043daba8b75e810f1fbab7f255269bd9ebb29e6bf494f",
    347         "acceptable"
    348     },
    349     {
    350         "dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    351         "a034f684fa631e1a348118c1ce4c98231f2d9eec9ba5365b4a05d69a785b0796",
    352         "54998ee43a5b007bf499f078e736524400a8b5c7e9b9b43771748c7cdf880412",
    353         "acceptable"
    354     },
    355     {
    356         "dcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    357         "30b6c6a0f2ffa680768f992ba89e152d5bc9893d38c9119be4f767bfab6e0ca5",
    358         "ead9b38efdd723637934e55ab717a7ae09eb86a21dc36a3feeb88b759e391e09",
    359         "acceptable"
    360     },
    361     {
    362         "eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    363         "901b9dcf881e01e027575035d40b43bdc1c5242e030847495b0c7286469b6591",
    364         "602ff40789b54b41805915fe2a6221f07a50ffc2c3fc94cf61f13d7904e88e0e",
    365         "acceptable"
    366     },
    367     {
    368         "ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    369         "8046677c28fd82c9a1bdb71a1a1a34faba1225e2507fe3f54d10bd5b0d865f8e",
    370         "e00ae8b143471247ba24f12c885536c3cb981b58e1e56b2baf35c12ae1f79c26",
    371         "acceptable"
    372     },
    373     {
    374         "efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    375         "602f7e2f68a846b82cc269b1d48e939886ae54fd636c1fe074d710127d472491",
    376         "98cb9b50dd3fc2b0d4f2d2bf7c5cfdd10c8fcd31fc40af1ad44f47c131376362",
    377         "acceptable"
    378     },
    379     {
    380         "f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    381         "60887b3dc72443026ebedbbbb70665f42b87add1440e7768fbd7e8e2ce5f639d",
    382         "38d6304c4a7e6d9f7959334fb5245bd2c754525d4c91db950206926234c1f633",
    383         "acceptable"
    384     },
    385     {
    386         "f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    387         "78d31dfa854497d72d8def8a1b7fb006cec2d8c4924647c93814ae56faeda495",
    388         "786cd54996f014a5a031ec14db812ed08355061fdb5de680a800ac521f318e23",
    389         "acceptable"
    390     },
    391     {
    392         "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    393         "c04c5baefa8302ddded6a4bb957761b4eb97aefa4fc3b8043085f96a5659b3a5",
    394         "29ae8bc73e9b10a08b4f681c43c3e0ac1a171d31b38f1a48efba29ae639ea134",
    395         "acceptable"
    396     },
    397     {
    398         "e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c",
    399         "a046e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449a44",
    400         "c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552",
    401         "valid"
    402     },
    403     {
    404         "e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a413",
    405         "4866e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba4d",
    406         "95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957",
    407         "valid"
    408     },
    409     {
    410         "0ab4e76380d84dde4f6833c58f2a9fb8f83bb0169b172be4b6e0592887741a36",
    411         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    412         "0200000000000000000000000000000000000000000000000000000000000000",
    413         "acceptable"
    414     },
    415     {
    416         "89e10d5701b4337d2d032181538b1064bd4084401ceca1fd12663a1959388000",
    417         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    418         "0900000000000000000000000000000000000000000000000000000000000000",
    419         "valid"
    420     },
    421     {
    422         "2b55d3aa4a8f80c8c0b2ae5f933e85af49beac36c2fa7394bab76c8933f8f81d",
    423         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    424         "1000000000000000000000000000000000000000000000000000000000000000",
    425         "valid"
    426     },
    427     {
    428         "63e5b1fe9601fe84385d8866b0421262f78fbfa5aff9585e626679b18547d959",
    429         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    430         "feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
    431         "acceptable"
    432     },
    433     {
    434         "e428f3dac17809f827a522ce32355058d07369364aa78902ee10139b9f9dd653",
    435         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    436         "fcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
    437         "valid"
    438     },
    439     {
    440         "b3b50e3ed3a407b95de942ef74575b5ab8a10c09ee103544d60bdfed8138ab2b",
    441         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    442         "f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
    443         "acceptable"
    444     },
    445     {
    446         "213fffe93d5ea8cd242e462844029922c43c77c9e3e42f562f485d24c501a20b",
    447         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    448         "f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
    449         "valid"
    450     },
    451     {
    452         "91b232a178b3cd530932441e6139418f72172292f1da4c1834fc5ebfefb51e3f",
    453         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    454         "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03",
    455         "valid"
    456     },
    457     {
    458         "045c6e11c5d332556c7822fe94ebf89b56a3878dc27ca079103058849fabcb4f",
    459         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    460         "e5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    461         "acceptable"
    462     },
    463     {
    464         "1ca2190b71163539063c35773bda0c9c928e9136f0620aeb093f099197b7f74e",
    465         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    466         "e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    467         "acceptable"
    468     },
    469     {
    470         "f76e9010ac33c5043b2d3b76a842171000c4916222e9e85897a0aec7f6350b3c",
    471         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    472         "ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    473         "valid"
    474     },
    475     {
    476         "bb72688d8f8aa7a39cd6060cd5c8093cdec6fe341937c3886a99346cd07faa55",
    477         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    478         "dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
    479         "acceptable"
    480     },
    481     {
    482         "88fddea193391c6a5933ef9b71901549447205aae9da928a6b91a352ba10f41f",
    483         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    484         "0000000000000000000000000000000000000000000000000000000000000002",
    485         "acceptable"
    486     },
    487     {
    488         "303b392f153116cad9cc682a00ccc44c95ff0d3bbe568beb6c4e739bafdc2c68",
    489         "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
    490         "0000000000000000000000000000000000000000000000000000000000008000",
    491         "acceptable"
    492     },
    493     {
    494         "fd300aeb40e1fa582518412b49b208a7842b1e1f056a040178ea4141534f652d",
    495         "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
    496         "b734105dc257585d73b566ccb76f062795ccbec89128e52b02f3e59639f13c46",
    497         "valid"
    498     },
    499     {
    500         "c8ef79b514d7682677bc7931e06ee5c27c9b392b4ae9484473f554e6678ecc2e",
    501         "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
    502         "647a46b6fc3f40d62141ee3cee706b4d7a9271593a7b143e8e2e2279883e4550",
    503         "valid"
    504     },
    505     {
    506         "64aeac2504144861532b7bbcb6c87d67dd4c1f07ebc2e06effb95aecc6170b2c",
    507         "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
    508         "4ff03d5fb43cd8657a3cf37c138cadcecce509e4eba089d0ef40b4e4fb946155",
    509         "valid"
    510     },
    511     {
    512         "bf68e35e9bdb7eee1b50570221860f5dcdad8acbab031b14974cc49013c49831",
    513         "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
    514         "21cee52efdbc812e1d021a4af1e1d8bc4db3c400e4d2a2c56a3926db4d99c65b",
    515         "valid"
    516     },
    517     {
    518         "5347c491331a64b43ddc683034e677f53dc32b52a52a577c15a83bf298e99f19",
    519         "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
    520         "18cb89e4e20c0c2bd324305245266c9327690bbe79acb88f5b8fb3f74eca3e52",
    521         "valid"
    522     },
    523     {
    524         "258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75",
    525         "a023cdd083ef5bb82f10d62e59e15a6800000000000000000000000000000050",
    526         "258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75",
    527         "valid"
    528     },
    529     {
    530         "2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035",
    531         "58083dd261ad91eff952322ec824c682ffffffffffffffffffffffffffffff5f",
    532         "2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035",
    533         "acceptable"
    534     }
    535 };
    536 
    537 int
    538 main(void)
    539 {
    540     unsigned char sk[crypto_scalarmult_SCALARBYTES];
    541     unsigned char pk[crypto_scalarmult_BYTES];
    542     unsigned char shared[crypto_scalarmult_BYTES];
    543     unsigned char shared2[crypto_scalarmult_BYTES];
    544     unsigned int  i;
    545     int           res;
    546 
    547     for (i = 0U; i < (sizeof test_data) / (sizeof test_data[0]); i++) {
    548         sodium_hex2bin(sk, crypto_scalarmult_SCALARBYTES, test_data[i].sk_hex,
    549                        crypto_scalarmult_SCALARBYTES * 2, NULL, NULL, NULL);
    550         sodium_hex2bin(pk, crypto_scalarmult_BYTES, test_data[i].pk_hex,
    551                        crypto_scalarmult_BYTES * 2, NULL, NULL, NULL);
    552         sodium_hex2bin(shared, crypto_scalarmult_BYTES, test_data[i].shared_hex,
    553                        crypto_scalarmult_BYTES * 2, NULL, NULL, NULL);
    554         randombytes_buf(shared2, crypto_scalarmult_BYTES);
    555         res = crypto_scalarmult(shared2, sk, pk);
    556         if (res == 0) {
    557             if (strcmp(test_data[i].outcome, "acceptable") == 0) {
    558                 printf("test case %u succeeded (%s)\n", i,
    559                        test_data[i].outcome);
    560             } else if (strcmp(test_data[i].outcome, "valid") != 0) {
    561                 printf("*** test case %u succeeded, was supposed to be %s\n", i,
    562                        test_data[i].outcome);
    563             }
    564             if (memcmp(shared, shared2, crypto_scalarmult_BYTES) != 0) {
    565                 printf("*** test case %u succeeded, but shared key is not %s\n",
    566                        i, test_data[i].outcome);
    567             }
    568         } else {
    569             if (strcmp(test_data[i].outcome, "acceptable") == 0) {
    570                 printf("test case %u failed (%s)\n", i, test_data[i].outcome);
    571             } else if (strcmp(test_data[i].outcome, "valid") == 0) {
    572                 printf("*** test case %u failed, was supposed to be %s\n", i,
    573                        test_data[i].outcome);
    574             }
    575         }
    576     }
    577     printf("OK\n");
    578 
    579     return 0;
    580 }