vb@447
|
1 |
p≡p Engine
|
vb@16
|
2 |
==========
|
vb@16
|
3 |
|
vb@448
|
4 |
0. What it is
|
vb@448
|
5 |
-------------
|
vb@16
|
6 |
|
vb@447
|
7 |
The p≡p engine is a Free Software library encapsulating implementations of:
|
vb@447
|
8 |
|
vb@447
|
9 |
- Key Management
|
vb@447
|
10 |
|
vb@447
|
11 |
Key Management in p≡p engine is based on GnuPG key chains (NetPGP on iOS).
|
vb@447
|
12 |
Keys are stored in an OpenPGP compatbile format and can be used for different
|
vb@447
|
13 |
crypto implementations.
|
vb@447
|
14 |
|
vb@447
|
15 |
- Trust Rating
|
vb@447
|
16 |
|
vb@447
|
17 |
p≡p engine is sporting a two phase trust rating system. In phase one there is
|
vb@447
|
18 |
a rating based on channel, crypto and key security named “comm_types”. In
|
vb@447
|
19 |
phase 2 these are mapped to user representable values which have attached
|
vb@447
|
20 |
colors to present them in traffic light semantics.
|
vb@447
|
21 |
|
vb@447
|
22 |
- Abstract Crypto API
|
vb@447
|
23 |
|
vb@447
|
24 |
The Abstract Crypto API is providing functions to encrypt and decrypt data or
|
vb@447
|
25 |
full messages without requiring an application programmer to understand the
|
vb@447
|
26 |
different formats and standards.
|
vb@447
|
27 |
|
vb@447
|
28 |
- Message Transports
|
vb@447
|
29 |
|
vb@447
|
30 |
p≡p engine will sport a growing list of Message Transports to support any
|
vb@447
|
31 |
widespread text messaging system including E-Mail, SMS, XMPP and many more.
|
vb@447
|
32 |
|
vb@447
|
33 |
p≡p engine is written in C99. It is not meant to be used in application code
|
vb@447
|
34 |
directly. Instead, p≡p engine is coming together with a list of software
|
vb@447
|
35 |
adapters for a variety of programming languages and development environments.
|
vb@447
|
36 |
|
vb@447
|
37 |
p≡p engine is under Gnu General Public License v3. If you want to use it under
|
vb@447
|
38 |
a different license, please contact mailto:council@pep.foundation.
|
vb@447
|
39 |
|
vb@448
|
40 |
|
vb@448
|
41 |
1. Dependencies
|
vb@448
|
42 |
---------------
|
vb@448
|
43 |
|
vb@448
|
44 |
p≡p engine is depending on the following FOSS libraries:
|
vb@448
|
45 |
|
roker@703
|
46 |
* libetpan, see https://github.com/fdik/libetpan
|
roker@704
|
47 |
git clone https://github.com/fdik/libetpan
|
roker@703
|
48 |
|
roker@703
|
49 |
* zlib, see http://zlib.net/
|
roker@703
|
50 |
|
roker@703
|
51 |
* OpenSSL, see http://openssl.org/
|
roker@703
|
52 |
|
roker@703
|
53 |
* iconv, see http://www.gnu.org/software/libiconv/
|
roker@703
|
54 |
|
roker@703
|
55 |
* Cyrus SASL, see http://cyrusimap.org/
|
roker@703
|
56 |
|
roker@703
|
57 |
* GnuPG via GPGME, see https://gnupg.org/
|
roker@703
|
58 |
|
roker@703
|
59 |
* NetPGP/p≡p, see https://cacert.pep.foundation/dev/repos/netpgp-et/
|
roker@703
|
60 |
|
lix@705
|
61 |
* Asn1c, download from https://lionet.info/soft/asn1c-0.9.27.tar.gz
|
roker@702
|
62 |
(Debian's version 0.9.24 does not work)
|
vb@448
|
63 |
|
vb@448
|
64 |
|
vb@448
|
65 |
2. Building p≡p engine
|
vb@448
|
66 |
----------------------
|
vb@448
|
67 |
|
vb@447
|
68 |
p≡p engine has an old style Makefile for building it.
|
vb@16
|
69 |
|
vb@37
|
70 |
The build is configured in Makefile.conf
|
vb@37
|
71 |
|
vb@16
|
72 |
It supports the common targets
|
vb@16
|
73 |
|
vb@16
|
74 |
$ make all
|
vb@16
|
75 |
$ make install
|
vb@16
|
76 |
$ make clean
|
vb@16
|
77 |
|
vb@16
|
78 |
and additionally
|
vb@16
|
79 |
|
vb@16
|
80 |
$ make package # for building a .tar.bz2 with the source distribution
|
vb@16
|
81 |
|
vb@447
|
82 |
On Windows, use Visual Studio.
|
vb@16
|
83 |
|
roker@528
|
84 |
|
roker@528
|
85 |
3. How to cross-build
|
vb@16
|
86 |
---------------------
|
vb@16
|
87 |
|
vb@16
|
88 |
For cross-building, BUILD_FOR is being used. I.e.:
|
vb@16
|
89 |
|
vb@448
|
90 |
$ BUILD_FOR=yourOS make -e
|
vb@448
|
91 |
|
vb@16
|
92 |
|
roker@528
|
93 |
4. How to build the databases
|
vb@16
|
94 |
-----------------------------
|
vb@16
|
95 |
|
vb@447
|
96 |
p≡p Engine uses two databases: ~/.pEp_management (on *NIX) or
|
vb@16
|
97 |
%LOCALAPPDATA%\pEp\management.db on Windoze respectively, and
|
vb@16
|
98 |
/usr/local/share/system.db on *NIX or %ALLUSERSPROFILE%\pEp\system.db
|
vb@447
|
99 |
respectively. The latter contains the Trustwords dbs.
|
vb@16
|
100 |
|
vb@447
|
101 |
The managment db is being created by the first call of init() of p≡p Engine. It
|
vb@16
|
102 |
does not need to be created manually. system.db is being created by using the
|
vb@16
|
103 |
DDL in db/create_system_db.sql – the content is created by db/dic2csv.py
|
vb@16
|
104 |
out of hunspell's dictionary packages (or something similar) and then being
|
vb@448
|
105 |
imported using sqlite3's .import command. Dictionary files for different
|
vb@448
|
106 |
languages are part of p≡p engine source distribution.
|
vb@448
|
107 |
|
vb@448
|
108 |
$ make db
|
vb@448
|
109 |
$ make -C db install
|
vb@16
|
110 |
|
vb@447
|
111 |
You can test the Trustwords in system.db using db/trustwords.py
|
vb@16
|
112 |
Both Python tools have a switch --help
|
vb@16
|
113 |
|
roker@528
|
114 |
|
roker@528
|
115 |
5. How to run the tests
|
roker@528
|
116 |
-----------------------
|
roker@528
|
117 |
|
roker@528
|
118 |
You have to import all the test keys into your local gpg instance:
|
roker@528
|
119 |
|
roker@528
|
120 |
cd test
|
roker@528
|
121 |
cat *.asc | gpg --import
|
roker@528
|
122 |
|