Go to file
Daniel Knüttel 5db317a605 added an important note to bunker/backends/component 2019-04-19 18:39:04 +02:00
bunker added an important note to bunker/backends/component 2019-04-19 18:39:04 +02:00
test renamed the internal name of directory stores 2019-04-19 14:30:07 +02:00
Dockerfile added testing environment 2019-03-13 14:03:07 +01:00
Makefile added testing environment 2019-03-13 14:03:07 +01:00
README.rst added some docs to the README 2019-03-20 09:57:13 +01:00
setup.py added the (necessary) newer version of ljson 2019-03-20 09:59:54 +01:00

README.rst

Bunker -- An encrypted data store for Python
********************************************

.. contents::

Basic Design
============

``bunker`` is based on the excessive use of ``tarfile`` and
AES encryption. ``bunker`` stores its data in bunker-files
which are tar archives containing both some meta data
(currently unencrypted, is on the TODO list) and encrypted
files containing the actual data.

Basic API
=========

The main class used for accessing data stored in the bunker
file is the class ``bunker.bunker.Bunker``. It can be used
to create new bunkers and open existing bunkers. Both is
done using the classmethod
``bunker.bunker.Bunker.open(path)``. One can then add new
components (like a `Key Value Store`_) using the method
``add_component`` that will return an open component of
a given type.  Using the method ``get_component`` one can 
open an existing component.

The components bring various methods to modify the data,
changes are written to the bunker by using either the method
``component.write_back`` or ``component.close`` the latter
will also bring the component in a state where it cannot be
used anymore (and delete all sensitive data).

``bunker.bunker.Bunker`` can also be used as a context. All
open components will be closed automatically when the
context is left, ensuring that no sensitive data is left on
the disk/in memory.

Supported Data Stores
=====================

Key Value Stores
----------------

One can store data in key value stores. Those are based on
``ljson.slapdash`` tables and work with several data types.