v0.11.3 (2024-02-26)

Performance differences between v0.11.2 and v0.11.3 and OpenSSL

The overall result is promising: P-256 sign operation improved 9.4 times, but is still a 4.9 times slower than OpenSSL.

Numbers in operations per second (apart from speedup, which is a factor v0.11.3 / v0.11.2), gathered on a Intel i7-5600U CPU 2.60GHz using FreeBSD 14.0, OCaml 4.14.1, and OpenSSL 3.0.12.

P224

op

v0.11.2

v0.11.3

speedup

OpenSSL

gen

1160

20609

17.8

sign

931

8169

8.8

21319

verify

328

1606

4.9

10719

dh-sec

1011

12595

12.5

dh-kex

992

2021

2.0

16691

P256

op

v0.11.2

v0.11.3

speedup

OpenSSL

gen

990

19365

19.6

sign

792

7436

9.4

36182

verify

303

1488

4.9

13383

dh-sec

875

11508

13.2

dh-kex

895

1861

2.1

17742

P384

op

v0.11.2

v0.11.3

speedup

OpenSSL

gen

474

6703

14.1

sign

349

3061

8.8

900

verify

147

544

3.7

1062

dh-sec

378

4405

11.7

dh-kex

433

673

1.6

973

P521

op

v0.11.2

v0.11.3

speedup

OpenSSL

gen

185

1996

10.8

sign

137

438

3.2

2737

verify

66

211

3.2

1354

dh-sec

180

1535

8.5

dh-kex

201

268

1.3

2207

25519

op

v0.11.2

v0.11.3

speedup

OpenSSL

gen

23271

22345

1.0

sign

11228

10985

1.0

21794

verify

8149

8029

1.0

7729

dh-sec

14075

13968

1.0

dh-kex

13487

14079

1.0

24824

v0.11.2 (2023-09-18)

v0.11.1 (2023-03-09)

v0.11.0 (2023-02-09)

v0.10.7 (2022-09-13)

v0.10.6 (2022-03-29)

v0.10.5 (2021-11-22)

v0.10.4 (2021-10-25)

v0.10.3 (2021-07-24)

v0.10.2 (2021-06-07)

v0.10.1 (2021-04-25)

v0.10.0 (2021-04-20)

v0.9.2 (2021-04-08)

v0.9.1 (2021-04-04)

v0.9.0 (2021-03-31)

v0.8.10 (2021-01-21)

v0.8.9 (2021-01-20)

v0.8.8 (2021-01-04)

v0.8.7 (2020-11-03)

v0.8.6 (2020-10-21)

v0.8.5 (2020-08-30)

v0.8.4 (2020-08-22)

v0.8.3 (2020-07-27)

v0.8.2 (2020-07-25)

v0.8.1 (2020-07-02)

v0.8.0 (2020-06-18)

v0.7.0 (2020-05-18)

v0.6.2 (2020-03-19)

v0.6.1 (2020-03-15)

v0.6.0 (2020-03-11)

Initial release as mirage-crypto, based on nocrypto 0.5.4 (from January 2017), written by David Kaloper, and mirage-entropy 0.5.1 (February 2020). The goal is to maintain mirage-crypto collaboratively with required reviews for all pull requests, and a CI setup for multiple platforms, thus issues are caught early. The minimum targeted OCaml version is 4.07.0. Mirage-crypto and nocrypto can be installed in the same opam switch, and also linked into the same binary.

The major difference is a split into four opam packages:

Only mirage-crypto-pk depends on zarith and gmp, the dependency cone of the other packages is small.

Changes from nocrypto 0.5.4/mirage-entropy 0.5.1:

mirage-crypto

mirage-crypto-pk

mirage-crypto-rng

mirage-crypto-entropy

These changes were prepared and reviewed by @pqwy, @hannesm, @cfcs, @dinosaure, @emillon, @haesbaert, @mseri, @samoht, @reynir, @avsm, @TheLortex, @marmarek.

Performance of mirage-crypto 0.6.0 on an i7-5600U CPU @ 2.60GHz (OCaml 4.09.0):

compared to nocrypto master (ed7bb8d911dc340e36d85d335d9edb8339f0932d):

compared to nocrypto 0.5.4:

mirage-entropy v0.5.1 (2020-02-24)

mirage-entropy v0.5.0 (2019-11-01)

mirage-entropy 0.4.1 (2018-08-15)

nocrypto v0.5.4 2017-01-31:

mirage-entropy 0.4.0 (2017-01-20)

nocrypto v0.5.3 2016-03-21:

nocrypto 0.5.2 2015-12-03:

nocrypto 0.5.1 2015-07-07:

nocrypto 0.5.0 2015-07-02:

mirage-entropy 0.3.0 (2015-05-02)

nocrypto 0.4.0 2015-05-02:

mirage-entropy 0.2.0 (09-Mar-2015)

nocrypto 0.3.1 2015-02-01:

nocrypto 0.3.0 2014-12-21:

nocrypto 0.2.2 2014-11-04:

nocrypto 0.2.0 2014-10-30:

nocrypto 0.1.0 2014-07-08:

mirage-entropy 0.1.6 (06-July-2014)

mirage-entropy 0.1.5 (06-July-2014)

mirage-entropy 0.1.4 (04-July-2014)

mirage-entropy 0.1.3 (03-July-2014)

mirage-entropy 0.1.2 (03-July-2014)

mirage-entropy 0.1.1 (03-July-2014)

mirage-entropy 0.1.0 (03-July-2014)