Skip to content

Documentation

Varbin edited this page Sep 24, 2016 · 33 revisions

XTEA documentation

This is the documentation of the encryption part of xtea in python.


|Content |

Functions

New in 0.3.0: Added CFB-mode
New in 0.4.0: Added CBC-MAC
New in 0.4.0: Added bugless and PEP-like CTR

function new(key, **kwargs):

Constructor for an "XTEACipher" object
  • key - a string, must have a length of 8 (128-bits)

  • Optional parameters:

  • MODE - int or long, must be one of the following (default 1):

    • 1 (ECB)
    • 2 (CBC)
    • 3 (CFB)
    • 5 (OFB)
    • 6 (CTR) - Buggy (you may loose data)

    Number 4 is the OpenPGP format, it is not used (see more at PEP 272). If 4 is given to the function, a NotImplementedError will be raised.

  • IV - string, must have a length of one block (8), needed with CBC and CFB, optional with OFB, if not given in CBC/CFB, raises a value error

  • counter - callable function/object, the counter function for CTR, must return a number (int or long) or a string (0.4.0+)

  • endian - one of the strings "@", "=", "<", ">" or "!", look in the [struct documentation] (https://docs.python.org/2/library/struct.html#byte-order-size-and-alignment) for details,

(default is "!", it´s the same as ">" (network/big endian)).

  • rounds - int or long, rounds for the cipher; more rounds = more security = more slowness; 2 rounds = 1 cycle

The XTEACipher object

class XTEACipher(object):

The cipher object
  • block_size = 8

function init(self, key, **kwargs):

Alternative constructor, same as new


function encrypt(self, data):

Encrpyts data. Modes with initialisation vector will reset, if you recall the function!

  • text - string, the text to encrypt. It must have a fixed size (e.g. a multiple of 8 in length)

function decrypt(self, data):

Decrypts data. Modes with initialisation vector will reset, if you recall the function!

  • text - string, the text to decrypt. It must have a fixed size (e.g. a multiple of 8 in length)

The CBCMAC object

class CBCMAC(object):

A CBCMAC object (cipher-block-chaining massage-authentication-code), based on xtea
  • digest_size = 8
  • block_size = 64
  • name = "xtea-cbcmac"

function init(self, key, string="", endian="!"):

Constructor of a CBCMAC object, same as CBCMAC.new


staticmethod new(key, string="", endian="!"):

PEP 452 like constructor (fake module),

  • key - string, should be 8 bit in length
  • string - string, the content to authenticate (default "")
  • endian - normally one of the strings "@", "=", "<", ">" or "!", struct documentation for details,

(default is "!", it´s the same as ">" (network/big endian)).


function update(self, string):

Add string to the content wich will be authenticated

  • string - string, additional content

function copy(self):

Return a copy (“clone”) of the hash object. This can be used to efficiently compute the digests of data sharing a common initial substring.


function digest(self):

Return the digest of the data passed to the update() method so far. This is a bytes object of size digest_size which may contain bytes in the whole range from 0 to 255.


function hexdigest(self):

Like digest() except the digest is returned as a string object of double length, containing only hexadecimal digits. This may be used to exchange the value safely in email or other non-binary

environments.

Helper functions

function xor_strings(s, t):

Xor to strings together.

  • s, t - strings with same length

function stringToLong(s):

Convert a string(with more then an char) into a long.

  • s - strings

function longToString(n):

Convert a long into a string.

  • n - int or long, not every number works

function _test():

xtea-module self-test. The function prints fails and time (250 runs).

Constants

New in 0.3.0: Added PGP-constant
New in 0.4.0: Added CCM-constant
MODE_ECB = 1
MODE_CBC = 2
MODE_CFB = 3
MODE_PGP = 4
MODE_OFB = 5
MODE_CTR = 6

MODE_CCM = 8 # Unofficial


block_size = 64
key_size = 128