-rw-r--r-- 25593 lib25519-20240928/doc/speed.md raw
In the following speed table, smaller numbers are better.
The numbers are median single-core cycle counts on various microarchitectures.
Overclocking is disabled.
The table reports cycle counts from lib25519 and, for comparison,
OpenSSL and s2n-bignum.
For comparability to OpenSSL's speed-testing utility,
the OpenSSL cycle counts omit various OpenSSL overheads; see below for details.
The s2n-bignum and lib25519 cycle counts include all overheads.
There is also a lib25519+s2n line showing separate measurements of lib25519
after an optional pre-configuration `./use-s2n-bignum` step
(which is a supported option for lib25519);
a lib25519+exp line showing separate measurements of lib25519
after an experimental pre-configuration `mv skipcompilers/* compilers` step
(which is not supported because it uses instructions not supported by `valgrind`);
and a lib25519+s2n+exp line.
| μarch | software | X key | X dh | X batch | Ed key | Ed sign | Ed verif | Ed MSM |
| :---- | :------- | ----: | ---: | ------: | -----: | ------: | -------: | -----: |
| Golden Cove (2021) | <span class=openssl>OpenSSL</span> | <span class=openssl>99570</span> | <span class=openssl>103325</span> | | <span class=openssl>101362</span> | <span class=openssl>96222</span> | <span class=openssl>320673</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>23782</span> | <span class=lib25519>68511</span> | <span class=lib25519>51744</span> | <span class=lib25519>24757</span> | <span class=lib25519>28039</span> | <span class=lib25519>96607</span> | <span class=lib25519>30088
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>25266</span> | <span class=lib25519>68304</span> | <span class=lib25519>49799</span> | <span class=lib25519>24745</span> | <span class=lib25519>28676</span> | <span class=lib25519>93508</span> | <span class=lib25519>30620
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>24740</span> | <span class=lib25519>67850</span> | <span class=lib25519>49945</span> | <span class=lib25519>24800</span> | <span class=lib25519>28794</span> | <span class=lib25519>95780</span> | <span class=lib25519>30223
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>24290</span> | <span class=lib25519>68063</span> | <span class=lib25519>51735</span> | <span class=lib25519>25286</span> | <span class=lib25519>28948</span> | <span class=lib25519>94614</span> | <span class=lib25519>30367
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>24257</span> | <span class=s2n>75395</span> | | | | | |
| Zen 3 (2020) | <span class=openssl>OpenSSL</span> | <span class=openssl>116119</span> | <span class=openssl>112550</span> | | <span class=openssl>118697</span> | <span class=openssl>111383</span> | <span class=openssl>371930</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>28212</span> | <span class=lib25519>96632</span> | <span class=lib25519>71142</span> | <span class=lib25519>29031</span> | <span class=lib25519>32497</span> | <span class=lib25519>128179</span> | <span class=lib25519>40784
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>25626</span> | <span class=lib25519>73060</span> | <span class=lib25519>47915</span> | <span class=lib25519>26407</span> | <span class=lib25519>29771</span> | <span class=lib25519>113420</span> | <span class=lib25519>35826
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>25718</span> | <span class=lib25519>73005</span> | <span class=lib25519>48216</span> | <span class=lib25519>26376</span> | <span class=lib25519>29771</span> | <span class=lib25519>112841</span> | <span class=lib25519>35657
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>28378</span> | <span class=lib25519>96214</span> | <span class=lib25519>50510</span> | <span class=lib25519>29241</span> | <span class=lib25519>32596</span> | <span class=lib25519>129089</span> | <span class=lib25519>40643
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>26238</span> | <span class=s2n>89699</span> | | | | | |
| Tiger Lake (2020) | <span class=openssl>OpenSSL</span> | <span class=openssl>113314</span> | <span class=openssl>119132</span> | | <span class=openssl>116048</span> | <span class=openssl>111383</span> | <span class=openssl>369181</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>28303</span> | <span class=lib25519>86103</span> | <span class=lib25519>61087</span> | <span class=lib25519>29193</span> | <span class=lib25519>32873</span> | <span class=lib25519>114671</span> | <span class=lib25519>35021
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>26534</span> | <span class=lib25519>64591</span> | <span class=lib25519>21647</span> | <span class=lib25519>27423</span> | <span class=lib25519>31078</span> | <span class=lib25519>107330</span> | <span class=lib25519>32849
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>26582</span> | <span class=lib25519>64634</span> | <span class=lib25519>21657</span> | <span class=lib25519>27419</span> | <span class=lib25519>31072</span> | <span class=lib25519>107951</span> | <span class=lib25519>32682
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>28499</span> | <span class=lib25519>86021</span> | <span class=lib25519>62111</span> | <span class=lib25519>29107</span> | <span class=lib25519>32774</span> | <span class=lib25519>111938</span> | <span class=lib25519>35388
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>26474</span> | <span class=s2n>83168</span> | | | | | |
| Zen 2 (2019) | <span class=openssl>OpenSSL</span> | <span class=openssl>127047</span> | <span class=openssl>118791</span> | | <span class=openssl>129676</span> | <span class=openssl>121302</span> | <span class=openssl>395245</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>27664</span> | <span class=lib25519>109306</span> | <span class=lib25519>74116</span> | <span class=lib25519>28683</span> | <span class=lib25519>31853</span> | <span class=lib25519>128656</span> | <span class=lib25519>38028
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>27645</span> | <span class=lib25519>101031</span> | <span class=lib25519>73809</span> | <span class=lib25519>28456</span> | <span class=lib25519>31584</span> | <span class=lib25519>129403</span> | <span class=lib25519>37934
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>27592</span> | <span class=lib25519>93340</span> | <span class=lib25519>73833</span> | <span class=lib25519>28334</span> | <span class=lib25519>31676</span> | <span class=lib25519>127228</span> | <span class=lib25519>38191
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>27624</span> | <span class=lib25519>109307</span> | <span class=lib25519>74457</span> | <span class=lib25519>28410</span> | <span class=lib25519>31608</span> | <span class=lib25519>128845</span> | <span class=lib25519>38363
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>27058</span> | <span class=s2n>92075</span> | | | | | |
| Ares (2019) | <span class=openssl>OpenSSL</span> | <span class=openssl>124704</span> | <span class=openssl>469056</span> | | <span class=openssl>210912</span> | <span class=openssl>181248</span> | <span class=openssl>630432</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>80550</span> | <span class=lib25519>246336</span> | <span class=lib25519>248292</span> | <span class=lib25519>81600</span> | <span class=lib25519>85572</span> | <span class=lib25519>285540</span> | <span class=lib25519>82479
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>80526</span> | <span class=lib25519>245454</span> | <span class=lib25519>272732</span> | <span class=lib25519>81456</span> | <span class=lib25519>85506</span> | <span class=lib25519>280002</span> | <span class=lib25519>81794
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>80418</span> | <span class=lib25519>95616</span> | <span class=lib25519>95627</span> | <span class=lib25519>81432</span> | <span class=lib25519>85956</span> | <span class=lib25519>281484</span> | <span class=lib25519>82900
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>80688</span> | <span class=lib25519>95616</span> | <span class=lib25519>95670</span> | <span class=lib25519>81240</span> | <span class=lib25519>85902</span> | <span class=lib25519>282276</span> | <span class=lib25519>82598
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>115392</span> | <span class=s2n>254976</span> | | | | | |
| Goldmont (2016) | <span class=openssl>OpenSSL</span> | <span class=openssl>247078</span> | <span class=openssl>273628</span> | | <span class=openssl>258924</span> | <span class=openssl>228182</span> | <span class=openssl>753852</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>93747</span> | <span class=lib25519>281776</span> | <span class=lib25519>295259</span> | <span class=lib25519>96235</span> | <span class=lib25519>106167</span> | <span class=lib25519>338370</span> | <span class=lib25519>96798
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>93640</span> | <span class=lib25519>282472</span> | <span class=lib25519>282975</span> | <span class=lib25519>96694</span> | <span class=lib25519>106438</span> | <span class=lib25519>347507</span> | <span class=lib25519>97205
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>93581</span> | <span class=lib25519>255341</span> | <span class=lib25519>258170</span> | <span class=lib25519>96235</span> | <span class=lib25519>106085</span> | <span class=lib25519>343949</span> | <span class=lib25519>97197
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>93623</span> | <span class=lib25519>255308</span> | <span class=lib25519>257031</span> | <span class=lib25519>96114</span> | <span class=lib25519>106224</span> | <span class=lib25519>341928</span> | <span class=lib25519>96369
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>77436</span> | <span class=s2n>255312</span> | | | | | |
| Cortex-A72 (2016) | <span class=openssl>OpenSSL</span> | <span class=openssl>156925</span> | <span class=openssl>424557</span> | | <span class=openssl>163459</span> | <span class=openssl>134998</span> | <span class=openssl>425152</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>106344</span> | <span class=lib25519>330111</span> | <span class=lib25519>330312</span> | <span class=lib25519>107879</span> | <span class=lib25519>114955</span> | <span class=lib25519>389349</span> | <span class=lib25519>116928
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>106307</span> | <span class=lib25519>329851</span> | <span class=lib25519>330943</span> | <span class=lib25519>107802</span> | <span class=lib25519>114915</span> | <span class=lib25519>384273</span> | <span class=lib25519>116616
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>107041</span> | <span class=lib25519>136513</span> | <span class=lib25519>136610</span> | <span class=lib25519>108536</span> | <span class=lib25519>115674</span> | <span class=lib25519>389278</span> | <span class=lib25519>116234
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>107376</span> | <span class=lib25519>136513</span> | <span class=lib25519>136653</span> | <span class=lib25519>108857</span> | <span class=lib25519>116103</span> | <span class=lib25519>389088</span> | <span class=lib25519>117090
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>67271</span> | <span class=s2n>136516</span> | | | | | |
| Skylake (2015) | <span class=openssl>OpenSSL</span> | <span class=openssl>130113</span> | <span class=openssl>118411</span> | | <span class=openssl>133656</span> | <span class=openssl>125076</span> | <span class=openssl>410342</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>29774</span> | <span class=lib25519>87971</span> | <span class=lib25519>62755</span> | <span class=lib25519>30550</span> | <span class=lib25519>34193</span> | <span class=lib25519>116991</span> | <span class=lib25519>38727
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>27729</span> | <span class=lib25519>83396</span> | <span class=lib25519>62311</span> | <span class=lib25519>28469</span> | <span class=lib25519>32212</span> | <span class=lib25519>104229</span> | <span class=lib25519>34226
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>27835</span> | <span class=lib25519>83311</span> | <span class=lib25519>62409</span> | <span class=lib25519>28581</span> | <span class=lib25519>32040</span> | <span class=lib25519>105749</span> | <span class=lib25519>33645
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>29692</span> | <span class=lib25519>88037</span> | <span class=lib25519>62758</span> | <span class=lib25519>30465</span> | <span class=lib25519>34140</span> | <span class=lib25519>115452</span> | <span class=lib25519>38353
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>28806</span> | <span class=s2n>84561</span> | | | | | |
| Airmont (2015) | <span class=openssl>OpenSSL</span> | <span class=openssl>294239</span> | <span class=openssl>619002</span> | | <span class=openssl>307282</span> | <span class=openssl>276812</span> | <span class=openssl>853664</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>143556</span> | <span class=lib25519>449573</span> | <span class=lib25519>449669</span> | <span class=lib25519>147077</span> | <span class=lib25519>162570</span> | <span class=lib25519>542220</span> | <span class=lib25519>155193
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>143690</span> | <span class=lib25519>449577</span> | <span class=lib25519>449759</span> | <span class=lib25519>147559</span> | <span class=lib25519>163466</span> | <span class=lib25519>543578</span> | <span class=lib25519>157011
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>143577</span> | <span class=lib25519>431947</span> | <span class=lib25519>432389</span> | <span class=lib25519>147515</span> | <span class=lib25519>163011</span> | <span class=lib25519>535507</span> | <span class=lib25519>154742
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>143574</span> | <span class=lib25519>432101</span> | <span class=lib25519>432428</span> | <span class=lib25519>147600</span> | <span class=lib25519>163312</span> | <span class=lib25519>548012</span> | <span class=lib25519>154217
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>116864</span> | <span class=s2n>432414</span> | | | | | |
| Broadwell (2014) | <span class=openssl>OpenSSL</span> | <span class=openssl>160005</span> | <span class=openssl>121255</span> | | <span class=openssl>164427</span> | <span class=openssl>120150</span> | <span class=openssl>392515</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>31489</span> | <span class=lib25519>93339</span> | <span class=lib25519>75648</span> | <span class=lib25519>33817</span> | <span class=lib25519>36660</span> | <span class=lib25519>121583</span> | <span class=lib25519>41126
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>29045</span> | <span class=lib25519>84991</span> | <span class=lib25519>73245</span> | <span class=lib25519>29855</span> | <span class=lib25519>33706</span> | <span class=lib25519>107476</span> | <span class=lib25519>34567
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>28952</span> | <span class=lib25519>84915</span> | <span class=lib25519>72056</span> | <span class=lib25519>29741</span> | <span class=lib25519>34362</span> | <span class=lib25519>107526</span> | <span class=lib25519>33849
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>31826</span> | <span class=lib25519>95068</span> | <span class=lib25519>74803</span> | <span class=lib25519>32255</span> | <span class=lib25519>35937</span> | <span class=lib25519>126280</span> | <span class=lib25519>40088
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>31396</span> | <span class=s2n>87934</span> | | | | | |
| Haswell (2013) | <span class=openssl>OpenSSL</span> | <span class=openssl>129719</span> | <span class=openssl>163429</span> | | <span class=openssl>133869</span> | <span class=openssl>126120</span> | <span class=openssl>409113</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>43627</span> | <span class=lib25519>118326</span> | <span class=lib25519>78662</span> | <span class=lib25519>44597</span> | <span class=lib25519>48406</span> | <span class=lib25519>153211</span> | <span class=lib25519>49929
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>41369</span> | <span class=lib25519>115219</span> | <span class=lib25519>77087</span> | <span class=lib25519>42490</span> | <span class=lib25519>46522</span> | <span class=lib25519>153486</span> | <span class=lib25519>51755
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>41567</span> | <span class=lib25519>115115</span> | <span class=lib25519>76679</span> | <span class=lib25519>42414</span> | <span class=lib25519>46467</span> | <span class=lib25519>150762</span> | <span class=lib25519>51108
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>43637</span> | <span class=lib25519>118327</span> | <span class=lib25519>78579</span> | <span class=lib25519>44500</span> | <span class=lib25519>48368</span> | <span class=lib25519>151548</span> | <span class=lib25519>50688
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>45860</span> | <span class=s2n>160318</span> | | | | | |
| Cortex-A53 (2012) | <span class=openssl>OpenSSL</span> | <span class=openssl>220649</span> | <span class=openssl>513705</span> | | <span class=openssl>228344</span> | <span class=openssl>194443</span> | <span class=openssl>537285</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>149030</span> | <span class=lib25519>463869</span> | <span class=lib25519>464098</span> | <span class=lib25519>151808</span> | <span class=lib25519>160892</span> | <span class=lib25519>520120</span> | <span class=lib25519>154072
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>149449</span> | <span class=lib25519>464134</span> | <span class=lib25519>464208</span> | <span class=lib25519>152091</span> | <span class=lib25519>161586</span> | <span class=lib25519>517634</span> | <span class=lib25519>153442
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>149814</span> | <span class=lib25519>163680</span> | <span class=lib25519>164640</span> | <span class=lib25519>151726</span> | <span class=lib25519>160924</span> | <span class=lib25519>523501</span> | <span class=lib25519>154787
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>149992</span> | <span class=lib25519>163661</span> | <span class=lib25519>164625</span> | <span class=lib25519>151849</span> | <span class=lib25519>160395</span> | <span class=lib25519>514915</span> | <span class=lib25519>154407
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>120158</span> | <span class=s2n>163155</span> | | | | | |
| Core 2 (2006) | <span class=openssl>OpenSSL</span> | <span class=openssl>260681</span> | <span class=openssl>337177</span> | | <span class=openssl>267882</span> | <span class=openssl>241408</span> | <span class=openssl>741945</span> | |
| | <span class=lib25519>lib25519</span> | <span class=lib25519>93212</span> | <span class=lib25519>298639</span> | <span class=lib25519>304039</span> | <span class=lib25519>96710</span> | <span class=lib25519>106278</span> | <span class=lib25519>354754</span> | <span class=lib25519>102007
| | <span class=lib25519>lib25519+exp</span> | <span class=lib25519>93670</span> | <span class=lib25519>298781</span> | <span class=lib25519>299398</span> | <span class=lib25519>97202</span> | <span class=lib25519>106574</span> | <span class=lib25519>355622</span> | <span class=lib25519>102093
| | <span class=lib25519>lib25519+s2n+exp</span> | <span class=lib25519>93628</span> | <span class=lib25519>262775</span> | <span class=lib25519>262519</span> | <span class=lib25519>96884</span> | <span class=lib25519>106284</span> | <span class=lib25519>354495</span> | <span class=lib25519>102237
| | <span class=lib25519>lib25519+s2n</span> | <span class=lib25519>93270</span> | <span class=lib25519>262946</span> | <span class=lib25519>262832</span> | <span class=lib25519>96706</span> | <span class=lib25519>106564</span> | <span class=lib25519>349492</span> | <span class=lib25519>103118
| | <span class=s2n>s2n-bignum</span> | <span class=s2n>78529</span> | <span class=s2n>262932</span> | | | | | |
Microarchitectures are listed in reverse chronological order of when they were introduced.
Each library is assigned one foreground color in the table.
In the lib25519 distribution,
`command/lib25519-speed.c` measures lib25519;
`benchmarks/*-*` is the output of `lib25519-speed` on various machines;
`speedcomparison/openssl/*` has code to measure OpenSSL, and measurements from various machines;
`speedcomparison/s2n/*` has code to measure s2n-bignum, and measurements from various machines;
and `autogen/md-speed` extracts the table from those measurements.
OpenSSL benchmarks use version 3.3.2 (2024.09.03);
s2n-bignum benchmarks use commit acbb18e6343f12a7944de72c1ec0991739600f8c (2024.03.18).
The table reports only median cycle counts;
see the full output files
for differences between multiple measurements and the median.
The table reports the following major operations:
* "X key": Generating an X25519 public key and secret key.
This is `dh_x25519_keypair selected 32` in the `lib25519-speed` output
(`lib25519_dh_keypair` in the stable API).
For s2n-bignum,
this is `x25519-keygen` in the `s2n25519speed` output,
measuring the cost of `curve25519_x25519base_byte_alt`,
or `curve25519_x25519base_byte` on machines where that works and is faster.
For OpenSSL,
this is `x25519-keygen-main` in the `openssl25519speed` output,
measuring the cost of `EVP_PKEY_Q_keygen(0,0,"X25519")`.
This does not include small OpenSSL overheads for converting the public key and secret key to storage format.
* "X dh":
Generating an X25519 shared secret.
This is `dh_x25519 selected 32` in the `lib25519-speed` output
(`lib25519_dh` in the stable API).
For s2n-bignum,
this is `x25519-dh` in the `s2n25519speed` output,
measuring the cost of `curve25519_x25519_byte_alt`,
or `curve25519_x25519_byte` on machines where that works and is faster.
For OpenSSL,
this is `x25519-dh-main` in the `openssl25519speed` output,
measuring the cost of `EVP_PKEY_derive`
(as in OpenSSL's speed-testing utility).
This does not include the cost of `EVP_PKEY_new_raw_public_key`
to decode the public key (`x25519-dh-pkdecode`, 6836 cycles on Tiger Lake),
`EVP_PKEY_CTX_new` and `EVP_PKEY_derive_init` and `EVP_PKEY_derive_set_peer` for initialization
(together `x25519-dh-init`, 2423 cycles on Tiger Lake),
and
`EVP_PKEY_new_raw_private_key` to decode the secret key if it is not decoded already
(`x25519-dh-skdecode`, 112114 cycles on Tiger Lake).
* "X batch":
Cost _per secret_ of generating 16 separate shared secrets.
This is `nPbatch_montgomery25519 selected 16` in the `lib25519-speed` output _divided by 16_.
* "Ed key": Generating an Ed25519 public key and secret key.
This is `sign_ed25519_keypair selected 32` in the `lib25519-speed` output
(`lib25519_sign_keypair` in the stable API).
For OpenSSL,
this is `ed25519-keygen-main` in the `openssl25519speed` output,
measuring the cost of `EVP_PKEY_Q_keygen(0,0,"ED25519")`.
This does not include small OpenSSL overheads for converting the public key and secret key to storage format.
* "Ed sign": Generating an Ed25519 signature of a 59-byte message.
This is `sign_ed25519 selected 59` in the `lib25519-speed` output
(`lib25519_sign` in the stable API).
For OpenSSL,
this is `ed25519-sign-main` in the `openssl25519speed` output,
measuring the cost of `EVP_DigestSign`
(as in OpenSSL's speed-testing utility).
This does not include the cost of
`EVP_MD_CTX_new` and
`EVP_DigestSignInit`
(`ed25519-sign-init`, 2808 cycles on Tiger Lake),
and `EVP_PKEY_new_raw_private_key` to decode the secret key if it is not decoded already
(`ed25519-sign-skdecode`, 114894 cycles on Tiger Lake).
* "Ed verif": Verifying an Ed25519 signature and recovering a 59-byte message.
This is `sign_ed25519_open selected 59` in the `lib25519-speed` output
(`lib25519_sign_open` in the stable API).
For OpenSSL,
this is `ed25519-verify-main` in the `openssl25519speed` output,
measuring the cost of `EVP_DigestVerify`
(as in OpenSSL's speed-testing utility).
This does not include the cost of
`EVP_MD_CTX_new` and
`EVP_DigestVerifyInit`
(together `ed25519-verify-init`, 2579 cycles on Tiger Lake),
and `EVP_PKEY_new_raw_public_key`
to decode the public key being used for verification
(`ed25519-verify-pkdecode`, 7401 cycles on Tiger Lake).
* "Ed MSM": Cost _per point_ of multi-scalar multiplication with 16 points and 16 full-size scalars.
This is `multiscalar_ed25519 selected 16` in the `lib25519-speed` output _divided by 16_.