CRYPTOPLUS
===========

TABLE OF CONTENTS
==================

1. WHAT IS CRYPTOPLUS
2. INSTALLING
3. GETTING STARTED
4. LIMITATIONS

1. WHAT IS CRYPTOPLUS
======================

CryptoPlus is an extions to the Crypto module (www.pycrypto.org) for
python. CryptoPlus makes the ciphers included in pycrypto and some new
onse available in pure python code. Some new chain modes are also added
in pure python, while the ones allready available in pycrypto are also
avaible in pure python in this package. Making these available in pure
python has the advantage of easier understandable code and thus making
it easier to adjust the code to your needs.
All other functions of pycrypto are available via the interface
of CryptoPlus. The new cipher implementations can be accessed via
CryptoPlus.Cipher.python_* while the original ones from pycrypto are
still available under their original name via CryptoPlus.Cipher.*. When
using the original Ciphers, the original pycrypto (C) code is used but
the chains will still be made by my new python code.

New functions:
    Ciphers:
        Rijndael
        Serpent
        Twofish
    Chain Modes:
        XTS
        CMAC

Note: for all the cipher algorithms, code has been reused from
others. Appropriate copyright notices are in the source code.

2. INSTALLING
==============

necessary packages before installing:
    - python-setuptools
    - python-pkg-resources

python setup.py install

3. GETTING STARTED
===================

Same API from PyCrypto can be used. See:
http://www.dlitz.net/software/pycrypto/doc/

Biggest changes are the addition of some chain modes and
block ciphers. There are lot of examples provided in the
docstrings. Have a look at them by looking in the source code
'../CryptoPlus/Cipher/*.py' or via an interactive python session by using
'CryptoPlus.Cipher.python_AES.new?'. Once you constructed a cipher object
with 'cipher = CryptoPlus.Cipher.python_AES.new(...)' you can get more
info about encrypting and decrypting by reading the apprioprate docstring
('cipher.encrypt?','cipher.decrypt?').

Some test functions are provided in the docstrings and in the 'test'
folder. Run all the doctest in the new Cipher function by using
the '../test/test_doctest.py' script. '../test/test.py' provides
some test function for the testvectors avaible from the module via
'CryptoPlus.Cipher.testvectors'. Have a look at the test.py sourcecode
to have an idea of how to use those test vectors.

4. LIMITATIONS
===============

CMAC can only be used with ciphers of 64 or 128 bits blocksizes
XTS can only be used with ciphers of 128 bits blocksize
