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