@@ -53,31 +53,34 @@ On an Intel Core i7 4790K @ 4.0GHz I'm getting the following performance:
5353
5454```
5555 siglen keygen keygen/s sign sign/s verify verify/s
56- NIST192p: 48 0.01534s 65.18 0.00833s 120.05 0.01601s 62.48
57- NIST224p: 56 0.02107s 47.46 0.01153s 86.74 0.02220s 45.05
58- NIST256p: 64 0.02824s 35.40 0.01523s 65.66 0.02965s 33.73
59- NIST384p: 96 0.06640s 15.06 0.03572s 27.99 0.06973s 14.34
60- NIST521p: 132 0.13150s 7.60 0.07094s 14.10 0.13869s 7.21
61- SECP256k1: 64 0.02807s 35.63 0.01525s 65.58 0.02964s 33.74
62- BRAINPOOLP160r1: 40 0.01100s 90.88 0.00564s 177.45 0.01053s 94.92
63- BRAINPOOLP192r1: 48 0.01633s 61.25 0.00833s 120.05 0.01591s 62.84
64- BRAINPOOLP224r1: 56 0.02261s 44.23 0.01153s 86.76 0.02234s 44.77
65- BRAINPOOLP256r1: 64 0.02997s 33.36 0.01532s 65.29 0.03084s 32.42
66- BRAINPOOLP320r1: 80 0.04774s 20.95 0.02447s 40.86 0.04717s 21.20
67- BRAINPOOLP384r1: 96 0.07007s 14.27 0.03566s 28.04 0.07056s 14.17
68- BRAINPOOLP512r1: 128 0.13390s 7.47 0.06766s 14.78 0.13425s 7.45
56+ NIST192p: 48 0.00033s 3062.43 0.00036s 2748.08 0.00062s 1605.66
57+ NIST224p: 56 0.00041s 2424.07 0.00046s 2196.71 0.00083s 1205.81
58+ NIST256p: 64 0.00053s 1892.05 0.00058s 1735.23 0.00106s 944.82
59+ NIST384p: 96 0.00110s 904.98 0.00118s 847.82 0.00217s 460.26
60+ NIST521p: 132 0.00234s 428.24 0.00245s 408.54 0.00443s 225.95
61+ SECP256k1: 64 0.00053s 1891.93 0.00058s 1734.46 0.00109s 913.35
62+ BRAINPOOLP160r1: 40 0.00025s 3982.49 0.00029s 3490.15 0.00053s 1878.51
63+ BRAINPOOLP192r1: 48 0.00032s 3086.07 0.00036s 2761.68 0.00063s 1578.22
64+ BRAINPOOLP224r1: 56 0.00041s 2412.41 0.00046s 2185.52 0.00076s 1311.65
65+ BRAINPOOLP256r1: 64 0.00054s 1866.84 0.00058s 1719.45 0.00110s 906.85
66+ BRAINPOOLP320r1: 80 0.00077s 1306.97 0.00083s 1201.59 0.00158s 632.82
67+ BRAINPOOLP384r1: 96 0.00112s 892.44 0.00119s 841.48 0.00229s 436.71
68+ BRAINPOOLP512r1: 128 0.00214s 467.05 0.00226s 441.64 0.00422s 237.13
6969```
7070
7171For comparison, a highly optimised implementation (including curve-specific
72- assemply ) like OpenSSL provides following performance numbers on the same
73- machine. Run ` openssl speed ` to reproduce it:
72+ assembly ) like OpenSSL provides following performance numbers on the same
73+ machine. Run ` openssl speed ecdsa ` to reproduce it:
7474```
7575 sign verify sign/s verify/s
7676 192 bits ecdsa (nistp192) 0.0002s 0.0002s 4785.6 5380.7
7777 224 bits ecdsa (nistp224) 0.0000s 0.0001s 22475.6 9822.0
7878 256 bits ecdsa (nistp256) 0.0000s 0.0001s 45069.6 14166.6
7979 384 bits ecdsa (nistp384) 0.0008s 0.0006s 1265.6 1648.1
8080 521 bits ecdsa (nistp521) 0.0003s 0.0005s 3753.1 1819.5
81+ 256 bits ecdsa (brainpoolP256r1) 0.0003s 0.0003s 2983.5 3333.2
82+ 384 bits ecdsa (brainpoolP384r1) 0.0008s 0.0007s 1258.8 1528.1
83+ 512 bits ecdsa (brainpoolP512r1) 0.0015s 0.0012s 675.1 860.1
8184```
8285
8386Keys and signature can be serialized in different ways (see Usage, below).
@@ -94,7 +97,9 @@ following lengths (in bytes):
9497In 2006, Peter Pearson announced his pure-python implementation of ECDSA in a
9598[ message to sci.crypt] [ 1 ] , available from his [ download site] [ 2 ] . In 2010,
9699Brian Warner wrote a wrapper around this code, to make it a bit easier and
97- safer to use. You are looking at the README for this wrapper.
100+ safer to use. Hubert Kario then included an implementation of elliptic curve
101+ cryptography that uses Jacobian coordinates internally, improving performance
102+ about 20-fold. You are looking at the README for this wrapper.
98103
99104[ 1 ] : http://www.derkeiler.com/Newsgroups/sci.crypt/2006-01/msg00651.html
100105[ 2 ] : http://webpages.charter.net/curryfans/peter/downloads.html
@@ -105,7 +110,7 @@ To run the full test suite, do this:
105110
106111 tox -e coverage
107112
108- On an Intel Core i7 4790K @ 4.0GHz, the tests take about 150 seconds to execute.
113+ On an Intel Core i7 4790K @ 4.0GHz, the tests take about 16 seconds to execute.
109114The test suite uses
110115[ ` hypothesis ` ] ( https://github.com/HypothesisWorks/hypothesis ) so there is some
111116inherent variability in the test suite execution time.
0 commit comments