Metadata-Version: 2.0
Name: keyctl
Version: 0.1
Summary: Wrapper to use keyctl command in Python
Home-page: https://github.com/tuxberlin/python-keyctl
Author: Martin Becker
Author-email: tuxberlin@gmail.com
License: GPL-3.0
Platform: UNKNOWN
Requires-Dist: PySide

python-keyctl
=============

Basic management of keys in the Linux kernel keyring in Python. Also
comes with a small gui.

Table of contents
-----------------

-  `Description <#description>`__
-  `Requirements <#requirements>`__
-  `Installation <#installation>`__
-  `Usage <#usage>`__

   -  `Module <#module>`__
   -  `GUI <#gui>`__

-  `Development <#development>`__

   -  `Warning <#warning>`__

-  `Similar projects <#similar-projects>`__
-  `License <#license>`__

Description
-----------

This is a small library to make use of some functions of the kernel
keyring in Python. You can read, add and delete keys.

It simply uses the keyctl command (invoking it via subprocess), so this
util must be installed.

Available functions:

-  **list** *(list all keys in keyring)*
-  **describe** *(retrieve key name/description)*
-  **read/pipe/print** *(retrieve key content)*
-  **update** *(modify key content)*
-  **add** *(add key)*
-  **revoke/unlink** *(delete key)*
-  **search/request** *(search for a key by name)*
-  **clear** *(remove all keys from keyring)*

There are many more functions with keys in the kernel keyring (e.g.
permissions) that is needed for proper keymanagement. But for my usecase
I just needed the given simple functionality.

Requirements
------------

Python 2.7

::

    $ sudo apt-get install python2.7
    $ python --version
    Python 2.7.3

pip

::

    $ sudo apt-get install python-pip
    $ pip --version
    pip 9.0.1 from .... (python 2.7)

The 'keyctl' command

::

    $ sudo apt-get install keyutils
    $ dpkg -s keyutils | grep Version
    Version: 1.5.2-2

For the GUI you also need:

Qt4

::

    google it for your distribution

PySide

::

    $ pip install pyside
    $ pip show pyside | grep Version
    Version: 1.2.4

Installation
------------

::

    $ pip install keyctl

Ready to use.

Usage
-----

Module
~~~~~~

Get all keys:

.. code:: python

    from keyctl import Key
    keylist = Key.list()
    for mykey in keylist:
        print mykey.id

Read existing key:

.. code:: python

    from keyctl import Key
    mykey = Key(123)
    print mykey.name
    print mykey.data
    print mykey.data_hex

Find key by name:

.. code:: python

    from keyctl import Key
    mykey = Key.search('test key')
    print mykey.id

Add key:

.. code:: python

    from keyctl import Key
    mykey = Key.add('test key', 'test content')
    print mykey.id

Delete key:

.. code:: python

    from keyctl import Key
    mykey = Key(123)
    mykey.delete()

Update key:

.. code:: python

    from keyctl import Key
    mykey = Key(123)
    mykey.update('new content')

GUI
~~~

To open the GUI, run the installed command.

::

    $ keyctlgui

Development
-----------

Warning
~~~~~~~

If you run the integrated tests, your user keyring will be cleared.
Don't do this when you have active keys e.g. for encryption.

Similar projects
----------------

Similar projects you might want to checkout:

-  https://github.com/sassoftware/python-keyutils (more complete,
   available in debian repo)
-  https://github.com/jdukes/pykeyctl (more complete, direct library
   wrapper)

License
-------

| GPL-3.0
| see
  `LICENSE <https://raw.githubusercontent.com/tuxberlin/python-keyctl/master/LICENSE>`__
  file


