eucrypt_manifest 1 This is the EuCrypt library that Eulora server (S.MG) uses for its communication needs. The manifest file lists the patches in order, as they were created.

eucrypt_manifest 2

eucrypt_manifest 3 If you propose a new patch to build on top of existing EuCrypt, add the corresponding line for it in the manifest file.

eucrypt_genesis 4

eucrypt_ch12_wrap... 5 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):

eucrypt_ch12_wrap... 6 gprbuild -O3

eucrypt_ch12_wrap... 7

eucrypt_ch12_wrap... 8 To cleanup (recursively), simply run in the eucrypt folder:

eucrypt_ch12_wrap... 9 gprclean -r

eucrypt_ch12_wrap... 10

eucrypt_genesis 11 To understand EuCrypt, start from http://www.dianacoman.com/2017/12/07/introducing-eucrypt/

eucrypt_genesis 12

eucrypt_check_nread 13 NB: EuCrypt aims to *keep trying* to accomplish a task. In particular, when entropy is needed, it will keep asking for as many random bits as it needs from the configured entropy source and it will not proceed unless those are provided.

eucrypt_check_nread 14

eucrypt_ch8_bit_k... 15 Components:

eucrypt_ch8_bit_k... 16 1. mpi

eucrypt_ch8_bit_k... 17 Arbitrary length integers and operations.

eucrypt_ch8_bit_k... 18 Implemented in C.

eucrypt_ch8_bit_k... 19

eucrypt_ch8_bit_k... 20 2. smg_bit_keccak

eucrypt_ch8_bit_k... 21 Bit-level implementation of the Keccak sponge according to The Keccak Reference v 3.0.

eucrypt_ch8_bit_k... 22 Implemented in Ada.

eucrypt_ch8_bit_k... 23

eucrypt_ch8_bit_k... 24 3. smg_keccak

eucrypt_ch8_bit_k... 25 Word (64 bits) level implementation of the Keccak sponge according to The Keccak Reference v 3.0.

eucrypt_keccak_bi... 26 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.

eucrypt_ch8_bit_k... 27 Implemented in Ada.

eucrypt_ch8_bit_k... 28

eucrypt_ch8_bit_k... 29 4. smg_serpent

eucrypt_ch8_bit_k... 30 Serpent hash method.

eucrypt_ch8_bit_k... 31 Implemented in Ada.

eucrypt_ch8_bit_k... 32

eucrypt_ch8_bit_k... 33 5. smg_rsa

eucrypt_ch8_bit_k... 34 RSA implementation using TMSR specification.

eucrypt_ch8_bit_k... 35 Implemented in C.

eucrypt_ch8_bit_k... 36

eucrypt_ch13_smg_rng 37 6. smg_rng

eucrypt_ch13_smg_rng 38 This provides methods for obtaining random uint32_t, uint64_t, "dirty" float (between 0 and 1), IEEE 754/1985 float (between 1 and 2) using random bits from FG.

eucrypt_ch13_smg_rng 39 At the moment, this code is within smg_rsa (truerandom.c in particular) although it is likely to be extracted in the future as a standalone library/component pending release of vtools that are aware of code *moves* as opposed to del/add only.