Sekreta is the "universal" internet-anonymity API for modern anonymity networks - with optional privacy-enhancing subsystem.
Research
What exactly is Sekreta? Current research and documentation can be found here.
Building
The following are requisites for building Sekreta. See make-sek below for the actual build process.
Note: if you intend to build in-tree anonymity systems, you must fulfill their respective requisites (see their documentation).
Dependencies
Dependency | Minimum version supported | Optional | Arch Linux | Raspbian | Ubuntu | FreeBSD | OpenBSD | Android (termux) |
---|---|---|---|---|---|---|---|---|
Git | 2.21.0 | git |
git |
git |
git |
git |
git |
|
GNU/GCC | 8.3.0 | gcc |
g++ |
g++ |
gcc |
NOT SUPPORTED | NOT SUPPORTED | |
LLVM/Clang | 7.0.1 | clang |
clang |
clang |
llvm |
llvm |
clang |
|
CMake | 3.10.2 | cmake |
cmake |
cmake |
cmake |
cmake |
cmake |
|
SWIG | 4.0.1 | X | swig |
BUILD IN-TREE | BUILD IN-TREE | BUILD IN-TREE | BUILD IN-TREE | BUILD IN-TREE |
Python | 3.6.8 | X | python |
python3-dev |
python3.7-dev |
python37 |
$ pkg_info -Q python |
python-dev |
Developer requirements
Dependency | Minimum version supported | Optional | Arch Linux | Raspbian | Ubuntu | FreeBSD | OpenBSD | Android (termux) |
---|---|---|---|---|---|---|---|---|
Googletest | 1.8.0 | gmock |
BUILD IN-TREE | googletest |
googlemock |
BUILD IN-TREE | googletest |
|
Lcov (for Gcov) | 1.13 |
lcov (AUR) |
lcov |
lcov |
lcov |
NOT SUPPORTED | NOT SUPPORTED | |
Valgrind | N/A | valgrind |
valgrind |
valgrind |
valgrind |
valgrind |
valgrind |
|
Doxygen | 1.8.13 | doxygen |
doxygen |
doxygen |
doxygen |
doxygen |
doxygen |
|
Graphviz | 2.36.0 | graphviz |
graphviz |
graphviz |
graphviz |
graphviz |
graphviz |
|
cpupower / CPU power governance | N/A | X | cpupower |
linux-cpupower |
linux-tools-generic |
powerd |
TODO | N/A |
make-sek
For your convenience, the make-sek
developer script is located in the contrib
directory and can be used as your primary building interface.
To use the script, you must have SEKRETA_DIR
(the path to your local sekreta repository) exported into your environment or simply define SEKRETA_DIR
before running the script.
Example:
$ SEKRETA_DIR=${HOME}/sekreta ${SEKRETA_DIR}/contrib/make-sek --release
Or, add the following to your .profile
or .bashrc
or .bash_aliases
export SEKRETA_DIR="${HOME}/git/sekreta"
alias make-sek="${SEKRETA_DIR}/contrib/make-sek"
Note: the remaining make-sek
examples assume the above export
and alias
.
Examples
-
A static build with library-bundled anonymity system:
$ make-sek --release --static --anon=kovri --install
-
Dynamic debug build + build and run all tests with valgrind:
$ make-sek --debug --test --valgrind
-
Build and run all benchmarks:
$ make-sek --release --benchmark
-
Produce all Doxygen documentation:
# After building, point your browser to build/doc/doxygen/html/index.html $ make-sek --doc
-
Build SWIG interfaces + build SWIG from source (optional):
$ make-sek --release --anon=kovri --swig --build-swig
-
Build and run the big kahuna:
$ make-sek --release --anon=kovri --doc --swig --build-swig \ --test --build-gtest --valgrind --benchmark --coverage \ --install
-
To cleanup after a build:
$ make-sek --clean
For all available options, run make-sek --help
Build notes
-
To use alternative compilers, use the usual
CC
andCXX
environment variables. On FreeBSD, for example:$ CC=clang90 CXX=clang++90 make-sek
-
For OpenBSD (or Raspbian on rpi4), you must build gtest by adding
--build-gtest
after--test
:$ make-sek --debug --test --build-gtest
-
When running benchmarks, it's highly recommended to build with the release flag:
$ make-sek --release --benchmark
-
When building coverage, it's necessary to build tests and also highly recommended to build benchmarks:
$ make-sek --debug --coverage --test --benchmark
Installation
You have a multitude of installation options which are based around CMake's CMAKE_INSTALL_PREFIX
and install target.
Using make-sek
's --install
, you can install configs/targets/libs/headers/anonymity-systems:
# This will install to default SEKRETA_INSTALL_DIR, which should be the build directory in SEKRETA_DIR
$ make-sek --release --install
# This will install to /usr/local - requires root privileges
$ sudo SEKRETA_DIR=${HOME}/git/sekreta make-sek --release --install /usr/local
# This will install to /tmp/frequent/install
$ SEKRETA_INSTALL_DIR=/tmp/frequent/install make-sek --release --install
Re-installation
For an anonymity system(s) re-install (for example, with Kovri), you have the option of a CMake COMPONENT
install.
Assuming that you've already done one of the above make-sek
--install
builds, do:
$ cmake -DCOMPONENT=kovri -P ${SEKRETA_DIR}/build/cmake_install.cmake
Or, to install only Sekreta again without reinstalling an anonymity installation:
$ cmake -DCOMPONENT=sekreta -P ${SEKRETA_DIR}/build/cmake_install.cmake
Using
See Sekreta in action within Monero.
Contact
- Website
- Keybase
- Slack
-
freenodeIRC (MATRIX.ORG)
-
#sekreta
| usage & questions -
#sekreta-dev
| research & development
-
- Email:
anonimal [at] sekreta.org
- PGP:
1218 6272 CD48 E253 9E2D D29B 66A7 6ECF 9144 09F1
- Twitter:
License
Sekreta is open source software licensed under the BSD 3-Clause license. This file, and all embodied intellectual property, are licensed under this license.