Skip to content

Commit

Permalink
[new release] mirage-crypto (8 packages) (0.11.3)
Browse files Browse the repository at this point in the history
CHANGES:

* mirage-crypto, mirage-crypto-rng{,lwt,mirage}: support CL.EXE compiler
  (mirage/mirage-crypto#137 @jonahbeckford) - mirage-crypto-pk not yet due to gmp dependency,
  mirage-crypto-ec doesn't pass testsuite
* mirage-crypto-ec: use simpler square root for ed25519 - saving 3
  multiplications and 2 squarings, details
  https://mailarchive.ietf.org/arch/msg/cfrg/qlKpMBqxXZYmDpXXIx6LO3Oznv4/
  (mirage/mirage-crypto#196 @hannesm)
* mirage-crypto-ec: use sliding window method with pre-computed calues of
  multiples of the generator point for NIST curves, speedup around 4x for P-256
  sign (mirage/mirage-crypto#191 @Firobe, review @palainp @hannesm)
* mirage-crypto-ec: documentation: warn about power timing analysis on `k` in
  Dsa.sign (mirage/mirage-crypto#195 @hannesm, as proposed by @edwintorok)
* mirage-crypto-ec: replace internal Cstruct.t by string (speedup up to 2.5x)
  (mirage/mirage-crypto#146 @dinosaure @hannesm @reynir, review @Firobe @palainp @hannesm @reynir)
* bench/speed: add EC (ECDSA & EdDSA generate/sign/verify, ECDH secret/share)
  operations (mirage/mirage-crypto#192 @hannesm)
* mirage-crypto-rng: use rdtime instead of rdcycle on RISC-V (rdcycle is
  privileged since Linux kernel 6.6) (mirage/mirage-crypto#194 @AdrianBunk, review by @edwintorok)
* mirage-crypto-rng: support Loongarch (mirage/mirage-crypto#190 @fangyaling, review @loongson-zn)
* mirage-crypto-rng: support NetBSD (mirage/mirage-crypto#189 @drchrispinnock)
* mirage-crypto-rng: allocate less in Fortuna when feeding (mirage/mirage-crypto#188 @hannesm,
  reported by @palainp)
* mirage-crypto-ec: avoid mirage-crypto-pk and asn1-combinators test dependency
  (instead, craft our own asn.1 decoder -- mirage/mirage-crypto#200 @hannesm)

### 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   |
  • Loading branch information
hannesm committed Feb 26, 2024
1 parent 90d8c52 commit 7d3dab1
Show file tree
Hide file tree
Showing 8 changed files with 334 additions and 0 deletions.
59 changes: 59 additions & 0 deletions packages/mirage-crypto-ec/mirage-crypto-ec.0.11.3/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
opam-version: "2.0"
synopsis: "Elliptic Curve Cryptography with primitives taken from Fiat"
description: """
An implementation of key exchange (ECDH) and digital signature (ECDSA/EdDSA)
algorithms using code from Fiat (<https://github.com/mit-plv/fiat-crypto>).

The curves P224 (SECP224R1), P256 (SECP256R1), P384 (SECP384R1),
P521 (SECP521R1), and 25519 (X25519, Ed25519) are implemented by this package.
"""
maintainer: "Hannes Mehnert <[email protected]>"
authors: [
"Hannes Mehnert <[email protected]>"
"Nathan Rebours <[email protected]>"
"Clément Pascutto <[email protected]>"
"Etienne Millon <[email protected]>"
# and from the fiat-crypto AUTHORS file
"Andres Erbsen <[email protected]>"
"Google Inc."
"Jade Philipoom <[email protected]> <[email protected]>"
"Massachusetts Institute of Technology"
"Zoe Paraskevopoulou <[email protected]>"
]
license: "MIT"
homepage: "https://github.com/mirage/mirage-crypto"
doc: "https://mirage.github.io/mirage-crypto/doc"
bug-reports: "https://github.com/mirage/mirage-crypto/issues"
depends: [
"dune" {>= "2.7"}
"ocaml" {>= "4.08.0"}
"cstruct" {>= "6.0.0"}
"dune-configurator"
"eqaf" {>= "0.7"}
"mirage-crypto" {=version}
"mirage-crypto-rng" {=version}
"hex" {with-test}
"alcotest" {with-test & >= "0.8.1"}
"ppx_deriving_yojson" {with-test}
"ppx_deriving" {with-test}
"yojson" {with-test & >= "1.6.0"}
]
conflicts: [
"ocaml-freestanding"
]
build: [
["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs]
["dune" "runtest" "-p" name "-j" jobs] {with-test}
]
dev-repo: "git+https://github.com/mirage/mirage-crypto.git"
tags: ["org:mirage"]
url {
src:
"https://github.com/mirage/mirage-crypto/releases/download/v0.11.3/mirage-crypto-0.11.3.tbz"
checksum: [
"sha256=bfb530fa169cd905ebc7e2449f3407cfbd67023ac0b291b8b6f4a1437a5d95b1"
"sha512=7b6f4e8128622b53eb2176881b5d6160f224e8606c7dd21aaf47974f15db7aa475cffaff3214aaaabba0f8986398f159c1fbb1bff29228c9b0a3fae67ef8d731"
]
}
x-commit-hash: "3ebc0e3e1bb6c471292b9f0c18afa3ce20d5f051"
42 changes: 42 additions & 0 deletions packages/mirage-crypto-pk/mirage-crypto-pk.0.11.3/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
opam-version: "2.0"
homepage: "https://github.com/mirage/mirage-crypto"
dev-repo: "git+https://github.com/mirage/mirage-crypto.git"
bug-reports: "https://github.com/mirage/mirage-crypto/issues"
doc: "https://mirage.github.io/mirage-crypto/doc"
authors: ["David Kaloper <[email protected]>" "Hannes Mehnert <[email protected]>" ]
maintainer: "Hannes Mehnert <[email protected]>"
license: "ISC"
synopsis: "Simple public-key cryptography for the modern age"

build: [ ["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs ]
["dune" "runtest" "-p" name "-j" jobs] {with-test} ]

depends: [
"conf-gmp-powm-sec" {build}
"ocaml" {>= "4.08.0"}
"dune" {>= "2.7"}
"ounit2" {with-test}
"randomconv" {with-test & >= "0.1.3"}
"cstruct" {>="6.00"}
"mirage-crypto" {=version}
"mirage-crypto-rng" {=version}
"sexplib0"
"zarith" {>= "1.4"}
"eqaf" {>= "0.8"}
]
conflicts: [
"ocaml-freestanding"
]
description: """
Mirage-crypto-pk provides public-key cryptography (RSA, DSA, DH).
"""
url {
src:
"https://github.com/mirage/mirage-crypto/releases/download/v0.11.3/mirage-crypto-0.11.3.tbz"
checksum: [
"sha256=bfb530fa169cd905ebc7e2449f3407cfbd67023ac0b291b8b6f4a1437a5d95b1"
"sha512=7b6f4e8128622b53eb2176881b5d6160f224e8606c7dd21aaf47974f15db7aa475cffaff3214aaaabba0f8986398f159c1fbb1bff29228c9b0a3fae67ef8d731"
]
}
x-commit-hash: "3ebc0e3e1bb6c471292b9f0c18afa3ce20d5f051"
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
opam-version: "2.0"
homepage: "https://github.com/mirage/mirage-crypto"
dev-repo: "git+https://github.com/mirage/mirage-crypto.git"
bug-reports: "https://github.com/mirage/mirage-crypto/issues"
doc: "https://mirage.github.io/mirage-crypto/doc"
authors: ["David Kaloper <[email protected]>" "Hannes Mehnert <[email protected]>" ]
maintainer: "Hannes Mehnert <[email protected]>"
license: "ISC"
synopsis: "Feed the entropy source in an Async-friendly way"

build: [ ["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs ]
["dune" "runtest" "-p" name "-j" jobs] {with-test} ]

depends: [
"ocaml" {>= "4.08.0"}
"dune" {>= "2.7"}
"dune-configurator" {>= "2.0.0"}
"async" {>= "v0.14"}
"logs"
"mirage-crypto" {=version}
"mirage-crypto-rng" {=version}
]
available: os != "win32"
description: """

Mirage-crypto-rng-async feeds the entropy source for Mirage_crypto_rng-based
random number generator implementations, in an Async-friendly way.
"""
url {
src:
"https://github.com/mirage/mirage-crypto/releases/download/v0.11.3/mirage-crypto-0.11.3.tbz"
checksum: [
"sha256=bfb530fa169cd905ebc7e2449f3407cfbd67023ac0b291b8b6f4a1437a5d95b1"
"sha512=7b6f4e8128622b53eb2176881b5d6160f224e8606c7dd21aaf47974f15db7aa475cffaff3214aaaabba0f8986398f159c1fbb1bff29228c9b0a3fae67ef8d731"
]
}
x-commit-hash: "3ebc0e3e1bb6c471292b9f0c18afa3ce20d5f051"

38 changes: 38 additions & 0 deletions packages/mirage-crypto-rng-eio/mirage-crypto-rng-eio.0.11.3/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
opam-version: "2.0"
homepage: "https://github.com/mirage/mirage-crypto"
dev-repo: "git+https://github.com/mirage/mirage-crypto.git"
bug-reports: "https://github.com/mirage/mirage-crypto/issues"
doc: "https://mirage.github.io/mirage-crypto/doc"
authors: ["Bikal Gurung <[email protected]>" ]
maintainer: "Bikal Gurung <[email protected]>"
license: "ISC"
synopsis: "Feed the entropy source in an eio-friendly way"

build: [ ["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs ]
["dune" "runtest" "-p" name "-j" jobs] {with-test} ]

depends: [
"ocaml" {>= "5.0.0"}
"dune" {>= "2.7"}
"eio" {>= "0.12"}
"cstruct" {>= "6.0.0"}
"logs"
"mirage-crypto-rng" {=version}
"duration"
"mtime"
"eio_main" {with-test}
]
description: """
Mirage-crypto-rng-eio feeds the entropy source for Mirage_crypto_rng-based
random number generator implementations, in an eio-friendly way.
"""
url {
src:
"https://github.com/mirage/mirage-crypto/releases/download/v0.11.3/mirage-crypto-0.11.3.tbz"
checksum: [
"sha256=bfb530fa169cd905ebc7e2449f3407cfbd67023ac0b291b8b6f4a1437a5d95b1"
"sha512=7b6f4e8128622b53eb2176881b5d6160f224e8606c7dd21aaf47974f15db7aa475cffaff3214aaaabba0f8986398f159c1fbb1bff29228c9b0a3fae67ef8d731"
]
}
x-commit-hash: "3ebc0e3e1bb6c471292b9f0c18afa3ce20d5f051"
36 changes: 36 additions & 0 deletions packages/mirage-crypto-rng-lwt/mirage-crypto-rng-lwt.0.11.3/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
opam-version: "2.0"
homepage: "https://github.com/mirage/mirage-crypto"
dev-repo: "git+https://github.com/mirage/mirage-crypto.git"
bug-reports: "https://github.com/mirage/mirage-crypto/issues"
doc: "https://mirage.github.io/mirage-crypto/doc"
authors: ["David Kaloper <[email protected]>" "Hannes Mehnert <[email protected]>" ]
maintainer: "Hannes Mehnert <[email protected]>"
license: "ISC"
synopsis: "A cryptographically secure PRNG"

build: [ ["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs ]
["dune" "runtest" "-p" name "-j" jobs] {with-test} ]

depends: [
"ocaml" {>= "4.08.0"}
"dune" {>= "2.7"}
"duration"
"logs"
"mirage-crypto" {=version}
"mirage-crypto-rng" {=version}
"mtime" {>= "1.0.0"}
"lwt" {>= "4.0.0"}
]
description: """
Mirage-crypto-rng-lwt provides entropy collection code for the RNG using Lwt.
"""
url {
src:
"https://github.com/mirage/mirage-crypto/releases/download/v0.11.3/mirage-crypto-0.11.3.tbz"
checksum: [
"sha256=bfb530fa169cd905ebc7e2449f3407cfbd67023ac0b291b8b6f4a1437a5d95b1"
"sha512=7b6f4e8128622b53eb2176881b5d6160f224e8606c7dd21aaf47974f15db7aa475cffaff3214aaaabba0f8986398f159c1fbb1bff29228c9b0a3fae67ef8d731"
]
}
x-commit-hash: "3ebc0e3e1bb6c471292b9f0c18afa3ce20d5f051"
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
opam-version: "2.0"
homepage: "https://github.com/mirage/mirage-crypto"
dev-repo: "git+https://github.com/mirage/mirage-crypto.git"
bug-reports: "https://github.com/mirage/mirage-crypto/issues"
doc: "https://mirage.github.io/mirage-crypto/doc"
authors: ["David Kaloper <[email protected]>" "Hannes Mehnert <[email protected]>" ]
maintainer: "Hannes Mehnert <[email protected]>"
license: "BSD-2-Clause"
synopsis: "Entropy collection for a cryptographically secure PRNG"

build: [ ["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs ]
["dune" "runtest" "-p" name "-j" jobs] {with-test} ]

depends: [
"ocaml" {>= "4.08.0"}
"dune" {>= "2.7"}
"mirage-crypto-rng" {=version}
"duration"
"cstruct" {>= "4.0.0"}
"logs"
"lwt" {>= "4.0.0"}
"mirage-runtime" {>= "3.8.0"}
"mirage-time" {>= "2.0.0"}
"mirage-clock" {>= "3.0.0"}
"mirage-unix" {with-test & >= "5.0.0"}
"mirage-time-unix" {with-test & >= "2.0.0"}
"mirage-clock-unix" {with-test & >= "3.0.0"}
]
description: """
Mirage-crypto-rng-mirage provides entropy collection code for the RNG.
"""
url {
src:
"https://github.com/mirage/mirage-crypto/releases/download/v0.11.3/mirage-crypto-0.11.3.tbz"
checksum: [
"sha256=bfb530fa169cd905ebc7e2449f3407cfbd67023ac0b291b8b6f4a1437a5d95b1"
"sha512=7b6f4e8128622b53eb2176881b5d6160f224e8606c7dd21aaf47974f15db7aa475cffaff3214aaaabba0f8986398f159c1fbb1bff29228c9b0a3fae67ef8d731"
]
}
x-commit-hash: "3ebc0e3e1bb6c471292b9f0c18afa3ce20d5f051"
40 changes: 40 additions & 0 deletions packages/mirage-crypto-rng/mirage-crypto-rng.0.11.3/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
opam-version: "2.0"
homepage: "https://github.com/mirage/mirage-crypto"
dev-repo: "git+https://github.com/mirage/mirage-crypto.git"
bug-reports: "https://github.com/mirage/mirage-crypto/issues"
doc: "https://mirage.github.io/mirage-crypto/doc"
authors: ["David Kaloper <[email protected]>" "Hannes Mehnert <[email protected]>" ]
maintainer: "Hannes Mehnert <[email protected]>"
license: "ISC"
synopsis: "A cryptographically secure PRNG"

build: [ ["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs ]
["dune" "runtest" "-p" name "-j" jobs] {with-test} ]

depends: [
"ocaml" {>= "4.08.0"}
"dune" {>= "2.7"}
"dune-configurator" {>= "2.0.0"}
"duration"
"cstruct" {>= "6.0.0"}
"logs"
"mirage-crypto" {=version}
"ounit2" {with-test}
"randomconv" {with-test & >= "0.1.3"}
]
conflicts: [ "mirage-runtime" {< "3.8.0"} ]
description: """
Mirage-crypto-rng provides a random number generator interface, and
implementations: Fortuna, HMAC-DRBG, getrandom/getentropy based (in the unix
sublibrary)
"""
url {
src:
"https://github.com/mirage/mirage-crypto/releases/download/v0.11.3/mirage-crypto-0.11.3.tbz"
checksum: [
"sha256=bfb530fa169cd905ebc7e2449f3407cfbd67023ac0b291b8b6f4a1437a5d95b1"
"sha512=7b6f4e8128622b53eb2176881b5d6160f224e8606c7dd21aaf47974f15db7aa475cffaff3214aaaabba0f8986398f159c1fbb1bff29228c9b0a3fae67ef8d731"
]
}
x-commit-hash: "3ebc0e3e1bb6c471292b9f0c18afa3ce20d5f051"
39 changes: 39 additions & 0 deletions packages/mirage-crypto/mirage-crypto.0.11.3/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
opam-version: "2.0"
homepage: "https://github.com/mirage/mirage-crypto"
dev-repo: "git+https://github.com/mirage/mirage-crypto.git"
bug-reports: "https://github.com/mirage/mirage-crypto/issues"
doc: "https://mirage.github.io/mirage-crypto/doc"
authors: ["David Kaloper <[email protected]>" "Hannes Mehnert <[email protected]>" ]
maintainer: "Hannes Mehnert <[email protected]>"
license: "ISC"
synopsis: "Simple symmetric cryptography for the modern age"

build: [ ["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs ]
["dune" "runtest" "-p" name "-j" jobs] {with-test} ]

depends: [
"ocaml" {>= "4.08.0"}
"dune" {>= "2.7"}
"dune-configurator" {>= "2.0.0"}
"ounit2" {with-test}
"cstruct" {>="6.0.0"}
"eqaf" {>= "0.8"}
]
conflicts: [
"ocaml-freestanding"
"result" {< "1.5"}
]
description: """
Mirage-crypto provides symmetric ciphers (DES, AES, RC4, ChaCha20/Poly1305), and
hashes (MD5, SHA-1, SHA-2).
"""
url {
src:
"https://github.com/mirage/mirage-crypto/releases/download/v0.11.3/mirage-crypto-0.11.3.tbz"
checksum: [
"sha256=bfb530fa169cd905ebc7e2449f3407cfbd67023ac0b291b8b6f4a1437a5d95b1"
"sha512=7b6f4e8128622b53eb2176881b5d6160f224e8606c7dd21aaf47974f15db7aa475cffaff3214aaaabba0f8986398f159c1fbb1bff29228c9b0a3fae67ef8d731"
]
}
x-commit-hash: "3ebc0e3e1bb6c471292b9f0c18afa3ce20d5f051"

0 comments on commit 7d3dab1

Please sign in to comment.