anastasis

Credential backup and recovery protocol and service
Log | Files | Refs | Submodules | README | LICENSE

README (4501B)


      1 =============
      2 GNU ANASTASIS
      3 =============
      4 
      5 This package includes the Anastasis core logic.  The code is released
      6 under the GNU Affero General Public License (v3 or later).  See
      7 COPYING for details.
      8 
      9 Description
     10 ===========
     11 
     12 GNU Anastasis is a key backup and recovery tool from the GNU project.
     13 This package includes the backend run by the Anastasis providers as
     14 well as libraries for clients and a command-line interface.
     15 
     16 Installation instructions can be found in INSTALL and
     17 also in the handbook at https://docs.anastasis.lu/ which
     18 is also in the doc/ folder. Please note that you must run
     19 'make install' before you can run the testsuite using
     20 'make check'.
     21 
     22 
     23 Dependencies
     24 ============
     25 
     26 Build tools for compiling Anastasis from source:
     27 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     28 
     29 Anastasis is built with Meson and Ninja.  The './configure' script in
     30 the top-level directory is a thin wrapper that runs 'meson setup build',
     31 and the generated 'Makefile' is a wrapper around 'ninja -C build'; you
     32 can equally invoke meson and ninja directly.
     33 
     34 - gcc or clang
     35 - meson              >= 1.1.0
     36 - ninja
     37 - pkgconf or pkg-config
     38 
     39 Optional, enabling additional build targets or tests:
     40 
     41 - make                              (to use the generated Makefile
     42                                      wrapper instead of ninja)
     43 - makeinfo           >= 4.8         (to build the Texinfo manual)
     44 - gettext                           (to build translations)
     45 - python3                           (to run the database naming
     46                                      convention test)
     47 
     48 Only needed when regenerating files that are checked into git, not to
     49 build the package:
     50 
     51 - recutils           >= 1.0         used by contrib/gana-update.sh to
     52                                     regenerate the error codes
     53 - sphinx                            used by contrib/update-tos.sh and
     54 - sphinx-rtd-theme                  contrib/update-pp.sh to regenerate
     55 - sphinx-multiversion               the terms of service and privacy
     56                                     policy
     57 
     58 
     59 Direct dependencies
     60 ~~~~~~~~~~~~~~~~~~~
     61 
     62 These are the direct dependencies for building and running Anastasis:
     63 
     64 - GNU Taler exchange >= 1.5.0
     65 - GNU Taler merchant >= 1.5.0
     66 - GNUnet             >= 0.27.0
     67 - PostgreSQL         >= 15.0
     68 - GNU libmicrohttpd
     69 - libgcrypt          >= 1.6.1
     70 - libsodium          >= 1.0.18
     71 - libcurl            >= 7.34.0
     72 - jansson
     73 - zlib
     74 
     75 The Taler exchange and merchant packages supply the libtaler* libraries
     76 (libtalerutil, libtalerexchange, libtalermerchant, libtalerjson,
     77 libtalerpq, libtalermhd, libtalercurl and the testing libraries), and
     78 GNUnet supplies libgnunetutil, libgnunetjson, libgnunetcurl and
     79 libgnunetpq.  All of them are found via pkg-config.
     80 
     81 
     82 Directory structure
     83 ===================
     84 
     85 src/include/ includes installed (public) headers
     86 src/util/ implements helper and crypto routines
     87 src/backend/ contains the REST service
     88 src/stasis/ implements the database logic for the backend
     89 src/authorization/ contains various authorization plugins
     90 src/restclient/ implements a REST client for the backend
     91 src/lib/ implements the main client-side backup and recovery logic
     92 src/testing/ contains test cases for 'src/restclient/' and 'src/lib/'
     93 src/reducer/ implements a reducer API on top of 'src/lib/'
     94 src/cli/ includes a reducer-based command-line interface
     95 contrib/ contains resource files, like what identity attributes to ask for
     96 doc/ contains documentation files, like TeXinfo
     97 po/ internationalization via GNU gettext
     98 
     99 
    100 Development note
    101 ================
    102 
    103 To test against a local development service, add
    104 
    105 	{
    106 	    "code" : "xx",
    107 	    "name" : "Testland",
    108 	    "continent" : "Demoworld",
    109 	    "call_code" : "+00"
    110 	}
    111 
    112 to contrib/redux.countries.json, and also append something like
    113 
    114 	{
    115             "url" : "http://localhost:8086/",
    116             "restricted" : "xx"
    117 	},
    118 	{
    119             "url" : "http://localhost:8087/",
    120             "restricted" : "xx"
    121 	},
    122 	{
    123             "url" : "http://localhost:8088/",
    124             "restricted" : "xx"
    125 	},
    126 	{
    127             "url" : "http://localhost:8089/",
    128             "restricted" : "xx"
    129 	}
    130 
    131 to contrib/provider-list.json. Then the reducer will use these
    132 providers on loopback for the "testland" country.
    133 
    134 
    135 Experimental providers
    136 ======================
    137 
    138 We hope to have another provider running soon. Once it is operational,
    139 we should add
    140 
    141         {
    142             "url" : "https://v1.anastasis.openw3b.org/",
    143             "name" : "Openw3b Foundation, India"
    144         },
    145 
    146 to the contrib/provider-list.json.