JitterEntropyPort

Elixir wrapper for jiterentropy-rngd by @smuellerDD:

Using the Jitter RNG core, the rngd provides an entropy source that feeds
into the Linux /dev/random device if its entropy runs low. It updates
the /dev/random entropy estimator such that the newly provided entropy
unblocks /dev/random.

The seeding of /dev/random also ensures that /dev/urandom benefits from
entropy. Especially during boot time, when the entropy of Linux is low,
the Jitter RNGd provides a source of sufficient entropy.

Useful on embedded devices without a TRNG/PRNG support.

Requires the jitter module in the Linux kernel is loaded or compiled in.

More info here: https://www.chronox.de/jent/doc/CPU-Jitter-NPTRNG.html

Kernel Config

Enable the jitter entropy module using menuconfig, or modify the Linux kernel config by setting:

CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_JITTERENTROPY=y

If the jitterentropy needs loaded as a kernel module set in your config.exs:

config :jitter_entropy_port, :load_module, true

Installation

If available in Hex, the package can be installed by adding jitter_entropy_port to your list of dependencies in mix.exs:

def deps do
  [
    {:jitter_entropy_port, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/jitter_entropy_port.