Prosody normally opens and reads from the special device file /dev/urandom to acquire pseudorandom data. On some constrained platforms such as containers or jails this might not be available. This is where the optional util.crand module comes in. It is a compiled binary module that can provide access to a different pseudorandom data generator.


util.crand should not be used directly, instead use util.random.


The API provided is the same as util.random, which simply redirects to the util.crand module if available.

Available backends

To use util.crand you need to select a suitable backend using the ./configure script at build time.

Linux getrandom

The getrandom() system call in Linux is a different interface to the same random generator as /dev/urandom.

./configure --with-random=getrandom

BSD arc4random

Used in /dev/urandom on some *BSD operating systems. Can also be used on Linux via a libbsd package on some distributions.

./configure --with-random=arc4random


Prosody already uses OpenSSL for cryptographic hash functions and SSL/TLS. OpenSSL also includes an API for getting random data.

./configure --with-random=openssl