Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix 32 bit support (ghash_ctmul: a ghash implementation from BearSSL that works on 32 bit LE platforms) #65

merged 2 commits into from May 18, 2020


Copy link

@hannesm hannesm commented May 15, 2020

this should fix #60 //cc @TImada -- the ghash implementation is taken from BearSSL and permissively licensed

the tests are passing :)

there remaining issue is that we do not have a 32bit CI. I have tested this PR manually on a ocaml-variants.4.09.1+32bit switch on x86.

@hannesm hannesm mentioned this pull request May 15, 2020
Copy link

@dinosaure dinosaure left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The CI is good but we should waiting a proper test from @TImada before to merge it.

Copy link

TImada commented May 15, 2020

Many thanks!
I have just tried the commits and dune build was successful on my aarch32 machine.

However, opam install mirage-crypto-entropy failed ...
What I needed to install the mirage-crypto-entropy package was modification in mirage-crypto-entropy.opam:

available: [
-   arch = "arm" | arch = "x86_32" | arch = "x86_64" | arch = "arm64"
+   arch = "arm32" | arch = "x86_32" | arch = "x86_64" | arch = "arm64"

Copy link
Member Author

hannesm commented May 18, 2020

thanks for testing @TImada. I'll merge this now, and keep the 32bit CI in mind. The revision of the RNG in #64 avoid the arch = availability in opam

@hannesm hannesm merged commit 2ff0734 into mirage:master May 18, 2020
2 checks passed
Copy link

I'll merge this now, and keep the 32bit CI in mind.

Currently in preparation with ocurrent/ocaml-ci#183.

hannesm added a commit to hannesm/opam-repository that referenced this pull request May 18, 2020


* CPU feature detection (AESNI, SSE3, PCLMULQ) at runtime instead of compile
  time (mirage/mirage-crypto#53 @Julow, fixed MirageOS support mirage/mirage-crypto#61, review by @hannesm)
  performance hit up to 5%
* Revise entropy collection (mirage/mirage-crypto#64 @hannesm review by @dinosaure @cfcs)
  mirage-crypto-entropy has been folded into mirage-crypto-rng.{unix,lwt,mirage}
  - the RNG is no longer fork() safe, if you use fork in your code, be sure to
    reseed the RNG in the child process
  - on Unix and Lwt, the used RNG is Fortuna, seeded by getrandom(),
    rdrand/rdseed, and whirlwind
  - Mirage_crypto_rng_lwt does entropy collection for Lwt applications
  - entropy collection is now similar to FreeBSD:
    - rdrand/rdseed is executed in a separate task (by default every second)
    - on Unix, getrandom() is executed in another separate task (by default
      every 10 seconds)
    - on every enter of the Lwt event loop, some bits of rdtsc are collected
      (rdrand/rdseed is not on each even loop enter anymore)
  - Fortuna only uses entropy pools if the given period is exhausted (defaults
    to 1s), and the pool size exceeds 64 bytes
  - The unseeded generator exception prints instructions how to seed the RNG
* 32 bit support (for ghash), requested by @TImada in mirage/mirage-crypto#60, mirage/mirage-crypto#65 @hannesm
* use Eqaf_cstruct.find_uint8 instead of Cs.ct_find_uint8 (mirage/mirage-crypto#52 @dinosaure)
* add (:standard) in C flags to allow cross-compilation mirage/mirage-crypto#47 @samoht
* Mirage_crypto.Uncommon: remove several functions (Cs.create, Option),
  requires OCaml 4.08 (mirage/mirage-crypto#49 mirage/mirage-crypto#51 @hannesm)
* remove ocplib-endian dependency, use Bytes directly (since 4.07) mirage/mirage-crypto#51 @hannesm
* bitfn.h cleanup (mirage/mirage-crypto#56 mirage/mirage-crypto#58 @hannesm)
* fix build if opam is not available (mirage/mirage-crypto#66 @hannesm)
* update test.yml GitHub actions (mirage/mirage-crypto#44 mirage/mirage-crypto#57 @imbsky)
* Travis CI for arm64 (mirage/mirage-crypto#55 @hannesm)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

Successfully merging this pull request may close these issues.

Compile errors on aarch32
3 participants