p≡p engine FORK
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Markus Schaber 3ddba95dfa Update the asn.1 VS project to include the additional files 6 years ago
asn.1 Update the asn.1 VS project to include the additional files 6 years ago
build-android Fixing random behaviour of sqlite on android 6 years ago
build-linux Added a Makefile to document build of pEpEmgine dependencies on Linux 6 years ago
build-mac Xcode: +asn1_helper.c 6 years ago
db merge default into "keysync" branch 6 years ago
src Merge with default to get fix for Engine-98 (empty html messages) 6 years ago
sync Sync : more than two. 6 years ago
test ENGINE-96: #comment all calls renamed. Roker is checking out the semantics of the references to 'compromized' to see if they also need to be renamed to 'mistrusted' for consistency within the engine. THIS IS AN API CHANGE AND WILL BREAK ADAPTERS. 6 years ago
.hgignore ignore more 6 years ago
LICENSE.txt should be there 8 years ago
Makefile add "export YML_PATH" to Makefile 6 years ago
Makefile.conf second instance for testing 6 years ago
README-OSX.md Update macOS build instructions 6 years ago
README.txt add some questions to the REAME. *sigh* 6 years ago
TODO.txt TODO: add build instructions and required "brew" packages for Mac OS X. 7 years ago
macports_env.sh Documenting macOS build, using MacPorts 6 years ago
pEpEngine.vcxproj Added openpgp_compat.* to build 6 years ago
pEpEngine.vcxproj.filters Added openpgp_compat.* to build 6 years ago


p≡p Engine

0. What it is

The p≡p engine is a Free Software library encapsulating implementations of:

- Key Management

Key Management in p≡p engine is based on GnuPG key chains (NetPGP on iOS).
Keys are stored in an OpenPGP compatbile format and can be used for different
crypto implementations.

- Trust Rating

p≡p engine is sporting a two phase trust rating system. In phase one there is
a rating based on channel, crypto and key security named “comm_types”. In
phase 2 these are mapped to user representable values which have attached
colors to present them in traffic light semantics.

- Abstract Crypto API

The Abstract Crypto API is providing functions to encrypt and decrypt data or
full messages without requiring an application programmer to understand the
different formats and standards.

- Message Transports

p≡p engine will sport a growing list of Message Transports to support any
widespread text messaging system including E-Mail, SMS, XMPP and many more.

p≡p engine is written in C99. It is not meant to be used in application code
directly. Instead, p≡p engine is coming together with a list of software
adapters for a variety of programming languages and development environments.

p≡p engine is under Gnu General Public License v3. If you want to use it under
a different license, please contact mailto:council@pep.foundation.

1. Dependencies

p≡p engine is depending on the following FOSS libraries:

* libetpan, see https://github.com/fdik/libetpan
git clone https://github.com/fdik/libetpan

* zlib, see http://zlib.net/

* OpenSSL, see http://openssl.org/

* iconv, see http://www.gnu.org/software/libiconv/

* Cyrus SASL, see http://cyrusimap.org/

* GnuPG via GPGME, see https://gnupg.org/

* NetPGP/p≡p, see https://cacert.pep.foundation/dev/repos/netpgp-et/

* Asn1c, download from https://lionet.info/soft/asn1c-0.9.27.tar.gz
(Debian's version 0.9.24 does not work)

* yml2, which needs lxml (where to get?)

2. Building p≡p engine

p≡p engine has an old style Makefile for building it.

The build is configured in Makefile.conf

It supports the common targets

$ make all
$ make install
$ make clean

and additionally

$ make package # for building a .tar.bz2 with the source distribution

On Windows, use Visual Studio.

3. How to cross-build

For cross-building, BUILD_FOR is being used. I.e.:

$ BUILD_FOR=yourOS make -e

4. How to build the databases

p≡p Engine uses two databases: ~/.pEp_management (on *NIX) or
%LOCALAPPDATA%\pEp\management.db on Windoze respectively, and
/usr/local/share/system.db on *NIX or %ALLUSERSPROFILE%\pEp\system.db
respectively. The latter contains the Trustwords dbs.

The managment db is being created by the first call of init() of p≡p Engine. It
does not need to be created manually. system.db is being created by using the
DDL in db/create_system_db.sql – the content is created by db/dic2csv.py
out of hunspell's dictionary packages (or something similar) and then being
imported using sqlite3's .import command. Dictionary files for different
languages are part of p≡p engine source distribution.

$ make db
$ make -C db install

You can test the Trustwords in system.db using db/trustwords.py
Both Python tools have a switch --help

5. How to run the tests

You have to import all the test keys into your local gpg instance:

cd test
cat 0x*.asc *_sec.asc| gpg --import