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.