Bee2evp is a cryptographic library which encapsulates Bee2 into OpenSSL. Bee2evp provides cryptographic services using the EVP interface. Bee2evp is organized as an OpenSSL engine.
mkdir build
cd build
cmake [-DCMAKE_BUILD_TYPE={Release|Debug|Coverage|ASan|ASanDbg|MemSan|MemSanDbg|Check}] ..
make
[make install]
Build types (Release by default):
- Coverage -- test coverage;
- ASan, ASanDbg -- address sanitizer;
- MemSan, MemSanDbg -- memory sanitizer;
- Check -- strict compile rules.
Before building Bee2evp, it is necessary to build and configure Bee2 and OpenSSL. Bee2evp requires OpenSSL version 1.1.0 or higher.
See instructions in github.com/agievich/bee2.
- Download the latest source files from openssl.org/source.
- Unpack files into some directory, for example,
openssl-1.1.1
. - Go to this directory.
- Run the following commands:
mkdir build cd build ../config make make install
By default, OpenSSL {headers|binaries|libraries} will be installed
in the directory /usr/local/{include|bin|lib}
.
- Rename
/usr/local/ssl/openssl.cnf.dist
->/usr/local/lib/openssl.cnf
. - Open
/usr/local/lib/openssl.cnf
. - Add the following text (before the
[new_oids]
section):openssl_conf = openssl_init [openssl_init] engines = engine_section [engine_section] bee2evp = bee2evp_section [bee2evp_section] engine_id = bee2evp dynamic_path = /usr/local/lib/libbee2evp.so default_algorithms = ALL
- Make sure that
LD_LIBRARY_PATH
includes/usr/local/lib
.
openssl engine -c -t bee2evp
In this folder, patches for different versions of OpenSSL are provided. These patches support the following ciphersuites defined in STB 34.101.65 (Btls, see apmi.bsu.by/resources/std.html):
DHE-BIGN-WITH-BELT-CTR-MAC-HBELT
;DHE-BIGN-WITH-BELT-DWP-HBELT
;DHT-BIGN-WITH-BELT-CTR-MAC-HBELT
;DHT-BIGN-WITH-BELT-DWP-HBELT
;DHE-PSK-BIGN-WITH-BELT-CTR-MAC-HBELT
;DHE-PSK-BIGN-WITH-BELT-DWP-HBELT
;DHT-PSK-BIGN-WITH-BELT-CTR-MAC-HBELT
;DHT-PSK-BIGN-WITH-BELT-DWP-HBELT
.
An example of applying a patch can be found in travis.yml.
Bee2evp is released under the terms of the GNU General Public License version 3 (GNU GPLv3) with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. See LICENSE for more information.