2019-03-20 08:57:13 +00:00
|
|
|
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.
|