# 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)