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.
Krista Grothoff 34fa1f2a83 ENGINE-27: intermittent commit, update_identity should now never try to set or return a blacklisted key 6 years ago
asn.1 Update for Visual Studio 2015 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 moved build-mac/ to so it can be found more easily. 6 years ago
db Change 2 turkish language trustwords dialog (via Berna/Dean) 6 years ago
src ENGINE-27: intermittent commit, update_identity should now never try to set or return a blacklisted key 6 years ago
sync adding OIDs 6 years ago
test More key length issues. N.B. As it stands, we don't support substring searches on fprs with NetPGP. Implementation independent code shouldn't rely on this functionality. 6 years ago
.hgignore ignore generated Makefile part 6 years ago
LICENSE.txt should be there 8 years ago
Makefile add "export YML_PATH" to Makefile 6 years ago
Makefile.conf Documenting macOS build, using MacPorts 6 years ago Documenting macOS build, using MacPorts 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 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

1. Dependencies

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

* libetpan, see
git clone

* zlib, see

* OpenSSL, see

* iconv, see

* Cyrus SASL, see

* GnuPG via GPGME, see

* NetPGP/p≡p, see

* Asn1c, download from
(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/
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/
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