This is the EuCrypt library that Eulora server (S.MG) uses for its communication needs. To compile the whole EuCrypt library, simply run in the eucrypt folder (the -O3 switch is needed for specifying optimisation level for Serpent - if you don't care about that, you can skip this switch): gprbuild -O3 To cleanup (recursively), simply run in the eucrypt folder: gprclean -r To understand EuCrypt, start from http://www.dianacoman.com/2017/12/07/introducing-eucrypt/ Components: 1. mpi Arbitrary length integers and operations. Implemented in C. 2. smg_bit_keccak Bit-level implementation of the Keccak sponge according to The Keccak Reference v 3.0. Implemented in Ada. 3. smg_keccak Word (64 bits) level implementation of the Keccak sponge according to The Keccak Reference v 3.0. NOTE: Keccak rate has its own type (Keccak_Rate) that makes clear the valid range (1 to width of state). Calling Keccak sponge with a bitrate outside the valid range will CORRECTLY cause the execution to abort with a constraint_error. Implemented in Ada. 4. smg_serpent Serpent hash method. Implemented in Ada. 5. smg_rsa RSA implementation using TMSR specification. Implemented in C.