Environment

Environment and dependency details may be found within ./support/Dockerfile. If running via docker, dependencies will be installed automatically.

If building locally, ensure all dependencies below are met.

Note: Theses dependencies are for the default internal build, other builds may vary.

Dependencies

Running

Apt:

autoconf

automake

ca-certificates

cmake

curl

g++-multilib

gcc-multilib

gettext

git

gdb

lcov

libcurl4-openssl-dev

libmariadb-dev

libmariadb-dev-compat

libtool

unzip

make

python3-dev

python3-pip

build-essential


Web:

libgpg-error 1.50

libgcrypt 1.11.0



Documentation

Apt:

python3-sphinx

python3-sphinx-rtd-theme

python3-myst-parser



Building

There are numerous configurations when building CryptoLib. References to necessary build flags can be found within ./support/scripts/. For example to build the current internal build:

Clone the CryptoLib repo. Switch to the desired branch. Currently, integration efforts are occurring in the main branch.

  • cd Cryptolib

  • cmake -DCODECOV=1 -DDEBUG=1 -DTEST=1 -DTEST_ENC=1 .

  • make

  • make test

This will build the internal debug environment, with code coverage, testing, and encryption testing.

Other Build Configurations:

  • KMC, Minimal, WolfSSL, and other configurations have convenience scripts which can be referenced within the ./support/scripts/ directory.

Code Coverage: With the DCODECOV Flag set, users may produce code coverage results similarly to the code below:

  • cmake -DMYSQL=1 -DENCTEST=1 -DDEBUG=1 -DCODECOV=1 ../

  • make

  • make gcov

This will produce local coverage reports in /build/coverage, with the HTML results within /build/coverage/results/index.html

Cleanup:

  • make clean – Cleans Build

  • make scrub – Cleans Code Coverage

The two flags (DEBUG and TEST_ENC) can be used simultaneously, or separately.

All Build Flags:

  • CODECOV – “Code Coverage” – Default OFF

  • CRYPTO_LIBGCRYPT – “Cryptography Module - Libgcrypt” – Default ON

  • CRYPTO_KMC – “Cryptography Module - KMC” – Default OFF

  • CRYPTO_WOLFSSL – “Cryptography Module - WolfSSL” – Default OFF

  • CRYPTO_CUSTOM – “Cryptography Module - CUSTOM” – Default OFF

  • CRYPTO_CUSTOM_PATH – “Cryptography Module - CUSTOM PATH” – Default OFF

  • DEBUG – “Debug” – Default OFF

  • KEY_CUSTOM – “Key Module - Custom”– Default OFF

  • KEY_CUSTOM_PATH – “Custom Key Path” – Default OFF

  • KEY_INTERNAL – “Key Module - Internal” – Default ON

  • KEY_KMC – “Key Module - KMC”– Default OFF

  • MC_CUSTOM – “Monitoring and Control - Custom” – Default OFF

  • MC_CUSTOM_PATH – “Custom Monitoring and Control path” – Default OFF

  • MC_DISABLED – “Monitoring and Control - Disabled” – Default OFF

  • MC_INTERNAL – “Monitoring and Control - Internal” – Default ON

  • SA_CUSTOM – “Security Association - Custom” – Default OFF

  • SA_CUSTOM_PATH – “Custom Security Association Path” – Default OFF

  • SA_INTERNAL – “Security Association - Internal” – Default ON

  • SA_MARIADB – “Security Association - MariaDB” – Default OFF

  • SUPPORT – “Support” – Default OFF

  • SYSTEM_INSTALL – “SystemInstall” – Default OFF

  • TEST – “Test” – Default OFF

  • SA_FILE – “Save Security Association to File” – Default OFF

  • KEY_VALIDATION – “Validate existence of key duplication”– Default OFF

  • KMC_MDB_RH “KMC-MDB-RedHat-Integration-Testing” – Default OFF

  • KMC_MDB_DB “KMC-MDB-Debian-Integration-Testing” – Default OFF

  • CRYPTO_EPROC “Enables building of Extended Procedures – Default OFF (CURRENTLY A WIP - Not ready for Operations)