The entropy-cl-server is a Windows based pipe server, that uses a duplex named pipe for distributing random bytes generated by two or more SwiftRNG, SwiftRNG LE, SwiftRNG Z or SwiftRNG Pro devices (see ‘using clustered version of the entropy server on Windows’ for more information). With this, it is possible to use multiple SwiftRNG devices to additively increase the random number generation speed. Based on SwiftRNG Software API, the server will monitor the health of the cluster and will resize the cluster on-the-fly, allowing device swapping in real-time. Windows applications can concurrently access entropy-cl-server through provided SwiftRNG.dll. Applications written in languages such as C/C++, C#, Java can concurrently retrieve true random bytes generated by a cluster of SwiftRNG devices by connecting with the entropy-cl-server directly through the named pipe. For source code examples visit this address. Information on Entropy Server API can be found at this location.

The entropy-cl-server with four SwiftRNG devices can be started using the following command:

entropy-cl-server.exe -cs 4

The output may look like this:

Entropy server started using a cluster of 4 devices, post processing: 'default', statistical tests enabled, on named pipe: \\.\pipe\SwiftRNG

Argument -cs indicates the preferred number of devices in a cluster.

For best performance, we recommend computer systems with multiple logical processors such as I7 or better.

By default, the entropy-cl-server can handle up to 10 concurrent connections. Beginning with SwiftRNG Software Kit version 4.5.3, the max number of concurrent connections can be increased using ‘-pi’ command line option. The following example demonstrates how to start the entropy-cl-server and allow up to 50 concurrent connections:

entropy-cl-server.exe -cs 4 -pi 50

The availability and performance of the entropy-cl-server can be verified with entropy-client-test utility using the following command:

entropy-client-test.exe

The output may look like this:

-------- Testing connectivity to the entropy server using named pipes ------
Connecting to the entropy server pipe .............................. SUCCESS
Retrieving 100000 bytes from the entropy server .................... SUCCESS
Running pipe communication diagnostics ............................. SUCCESS
Calculating entropy download speed ................................. 400.00 Mbps

------------ Testing connectivity to the entropy server using DLL ----------
Loading SwiftRNG.dll ............................................... SUCCESS
Getting proc addr swftSetEntropyServerPipeEndpointSynchronized() ... SUCCESS
Calling swftSetEntropyServerPipeEndpointSynchronized() ............. SUCCESS
Getting proc address swftGetByteFromEntropyServerSynchronized() .... SUCCESS
Testing swftGetByteFromEntropyServerSynchronized() ................. SUCCESS
swftGetByteFromEntropyServerSynchronized() download speed .......... 266.67 Mbps
Testing swftGetByteFromEntropyServerSynchronized()  50 threads ----- SUCCESS
Getting proc address swftGetEntropyFromEntropyServer() ............. SUCCESS
swftGetEntropyFromEntropyServer() download speed ................... 400.00 Mbps

Pre-built versions of entropy-cl-server and entropy-client-test applications are already available in the latest release. Alternatively, the applications can be r e-built from sources with Visual Studio 2015, Visual Studio 2017, Visual Studio 2019 or newer.

Note: SwiftRNG devices manufactured after March 2020 are compatible with Windows 10/11 (64 bit) and Windows Server 2016/2019 (64 bit)