SwiftRNG device integration using the API on Linux, macOS and Windows

SwiftRNG Software API is the simplest way to integrate your C/C++ application source code with a SwiftRNG device for achieving maximum download speed and performance. When using this model (Fig. 1), additional internal device features become accessible such as: running on-demand device diagnostics, accessing the raw random byte stream, downloading frequency tables for each noise source or setting power profiles. When using this integration solution, only one application (consumer) will be accessing SwiftRNG device at a time.

SwiftRNG device integration using SwiftRNG Software API

SwiftRNG device integration using SwiftRNG.dll on Windows

The supplied SwiftRNG.dll can be used to integrate SwiftRNG devices with applications that are developed to run on 32-bit or 64-bit Windows platforms (Fig. 2). The software kit contains source code examples that demonstrate how to use the DLL with C/C++ applications. You will also find source code examples on how to utilize the SwiftRNG.dll with languages such as C#, VB and Excel VB by visiting our documentation sections. The DLL will allow accessing the SwiftRNG random byte stream by multiple applications concurrently.

SwiftRNG device integration using SwiftRNG.dll on Windows platforms

SwiftRNG device integration using Entropy Server on Windows

Entropy Server application is available for Windows and is used as an alternative way for distributing random bytes generated by a SwiftRNG device (Fig. 3). The SwiftRNG.dll can be used to access the server concurrently with maximum performance. Applications written in languages such as C/C++, C# and Java alternatively can access the Entropy Server directly, using a windows pipe without the use of the SwiftRNG dll.

SwiftRNG device integration using Entropy Server on Windows platforms

SwiftRNG device integration using ‘swrandom’ kernel device module on Linux

The SwiftRNG Software Kit contains a Linux kernel module ‘swrandom’ that can be used to distribute random byte stream generated by a SwiftRNG device to any application that is capable to read from a file. The random byte stream generated can be concurrently accessible by consumer applications using device /dev/swrandom (Fig. 4). We recommend using this integration model on platforms such as Ubuntu, CentOS, RH in production environment.

SwiftRNG device integration using ‘swrandom’ kernel device module on Linux platforms

SwiftRNG device integration for feeding the entropy pool on Linux

SwiftRNG Software kit provides a ‘swrng’ utility that can be used to feed the entropy linux pool ‘/dev/random’ with high quality random numbers generated by a SwiftRNG device (Fig. 5).

SwiftRNG device integration for feeding the entropy pool on Linux platforms

Using multiple SwiftRNG devices in a cluster with Linux and macOS

SwiftRNG API provides device cluster scalability and fail-over capabilities. With this, it is possible to use multiple SwiftRNG devices to additively increase the random number generation speed. This API feature seamlessly integrates multiple devices and uses them concurrently as a single stream of random data (Fig. 6). The feature is available when used with C/C++ applications and it is supported by SwiftRNG software utilities.

Using multiple SwiftRNG devices in a cluster with Linux and macOS platforms

Using multiple SwiftRNG devices in a cluster utilizing Unix pipe on Linux and macOS

SwiftRNG software kit provides a utility for using a cluster of multiple SwiftRNG devices to additively increase the random number generation speed. The random bytes are distributed by a Unix pipe and can be concurrently accessed from any application with file access capabilities (Fig. 7).

Using multiple SwiftRNG devices in a cluster utilizing Unix pipe on Linux and macOS platforms.