# Cipherpack - A Cryprographic Stream Processor [Original document location](https://jausoft.com/cgit/cipherpack.git/about/). ## Git Repository This project's canonical repositories is hosted on [Gothel Software](https://jausoft.com/cgit/cipherpack.git/). ## Overview *Cipherpack* provides a secure cryptographic stream processor implemented in C++ and accessible via C++ and Java through its binding. Original use-case is a secure update process, elevating your installed firm- and software.
Hence original project name was *Elevator*. ## Supported Platforms C++17 and better. ## Building Binaries This project uses the following git submodules - [Jau Library](https://jausoft.com/cgit/jaulib.git/about/) - [Botan](https://github.com/randombit/botan.git) ### Build Dependencies Installing build dependencies on Debian (10 or 11): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sh} apt install git apt install build-essential g++ gcc libc-dev libpthread-stubs0-dev apt install libunwind8 libunwind-dev apt install cmake cmake-extras extra-cmake-modules pkg-config apt install doxygen graphviz apt install libcurl4 libcurl4-gnutls-dev apt install mini-httpd ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### Build Procedure To fetch the source tree use: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sh} git clone --recurse-submodule git://jausoft.com/srv/scm/cipherpack.git cd cipherpack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From here on we assume to be in the `cipherpack` project folder. For a generic build use: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sh} CPU_COUNT=`getconf _NPROCESSORS_ONLN` mkdir build cd build cmake -DBUILDJAVA=ON -DBUILDEXAMPLES=ON -DBUILD_TESTING=ON .. make -j $CPU_COUNT install test doc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The install target of the last command will create the include/ and lib/ directories with a copy of the headers and library objects respectively in your build location. Note that doing an out-of-source build may cause issues when rebuilding later on. Our cmake configure has a number of options, *cmake-gui* or *ccmake* can show you all the options. The interesting ones are detailed below: Changing install path from /usr/local to /usr ~~~~~~~~~~~~~ -DCMAKE_INSTALL_PREFIX=/usr ~~~~~~~~~~~~~ Building debug build: ~~~~~~~~~~~~~ -DDEBUG=ON ~~~~~~~~~~~~~ Disable stripping native lib even in non debug build: ~~~~~~~~~~~~~ -DUSE_STRIP=OFF ~~~~~~~~~~~~~ Disable using `libunwind` (default: enabled for all but `arm32`, `armhf`) ~~~~~~~~~~~~~ -DUSE_LIBUNWIND=OFF ~~~~~~~~~~~~~ Disable using `C++ Runtime Type Information` (*RTTI*) (default: enabled) ~~~~~~~~~~~~~ -DDONT_USE_RTTI=ON ~~~~~~~~~~~~~ Building debug and instrumentation (sanitizer) build: ~~~~~~~~~~~~~ -DDEBUG=ON -DINSTRUMENTATION=ON ~~~~~~~~~~~~~ Using clang instead of gcc: ~~~~~~~~~~~~~ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ ~~~~~~~~~~~~~ Cross-compiling on a different system: ~~~~~~~~~~~~~ -DCMAKE_CXX_FLAGS:STRING=-m32 -march=i586 -DCMAKE_C_FLAGS:STRING=-m32 -march=i586 ~~~~~~~~~~~~~ To build documentation run: ~~~~~~~~~~~~~ make doc ~~~~~~~~~~~~~ ## Support *Cipherpack* is provided by [Gothel Software](https://jausoft.com/) and [Zafena ICT](https://ict.zafena.se). If you like to utilize *Cipherpack* in a commercial setting, please contact [Gothel Software](https://jausoft.com/) to setup a potential support contract. ## Changes **1.0.0** * First stable release (TODO) **0.5.0** * Renamed from Elevator to Cipherpack * namespace elevator::cipherpack -> cipherpack * Added pure streaming `encryptThenSign()` and `checkSignThenDecrypt()` base function **0.4.0** * Working version with universal jau::io::ByteInStream and matured unit testing OK and error cases **0.0.0** * Kick-off