Piconomic Logo www.piconomic.co.za

xtea.h : XTEA (eXtended Tiny Encryption Algorithm)
[/protocol : Collection of protocol related modules]

Block cipher encryption/decryption algorithm. More...

Functions

void xtea_init (const u32_t key[4])
 Initialise 128-bit key for encryption/decryption.
void xtea_encrypt (u32_t data[2])
 Encrypt 64-bit data with 128-bit key.
void xtea_decrypt (u32_t data[2])
 Decrypt 64-bit data with 128-bit key.

Detailed Description

Files: xtea.h & xtea.c

See also:
http://en.wikipedia.org/wiki/XTEA

Function Documentation

void xtea_init ( const u32_t  key[4]  ) 
Parameters:
key 4 x 32-bit values

Definition at line 64 of file xtea.c.

00065 {
00066     u8_t i;
00067 
00068     for(i=0;i<4;i++)
00069     {
00070         xtea_key[i] = key[i];
00071     }
00072 }

void xtea_encrypt ( u32_t  data[2]  ) 
Parameters:
data 2 x 32-bit values

Definition at line 74 of file xtea.c.

00075 {
00076     u8_t i;
00077 
00078     u32_t d0  = data[0];
00079     u32_t d1  = data[1];
00080     u32_t sum = 0;
00081 
00082     for (i=XTEA_NUMBER_OF_ROUNDS; i != 0; i--)
00083     {
00084         d0  += (((d1 << 4) ^ (d1 >> 5)) + d1) ^ (sum + xtea_key[sum & 3]);
00085         sum += XTEA_DELTA;
00086         d1  += (((d0 << 4) ^ (d0 >> 5)) + d0) ^ (sum + xtea_key[(sum>>11) & 3]);
00087     }
00088     data[0] = d0;
00089     data[1] = d1;
00090 }

void xtea_decrypt ( u32_t  data[2]  ) 
Parameters:
data 2 x 32-bit values

Definition at line 92 of file xtea.c.

00093 {
00094     u8_t i;
00095 
00096     u32_t d0  = data[0];
00097     u32_t d1  = data[1];
00098     u32_t sum = XTEA_DELTA*XTEA_NUMBER_OF_ROUNDS;
00099 
00100     for (i=XTEA_NUMBER_OF_ROUNDS; i != 0; i--)
00101     {
00102         d1  -= (((d0 << 4) ^ (d0 >> 5)) + d0) ^ (sum + xtea_key[(sum>>11) & 3]);
00103         sum -= XTEA_DELTA;
00104         d0  -= (((d1 << 4) ^ (d1 >> 5)) + d1) ^ (sum + xtea_key[sum & 3]);
00105     }
00106     data[0] = d0;
00107     data[1] = d1;
00108 }

Generated on Fri Aug 13 16:50:38 2010 for Piconomic Firmware Library by doxygen 1.6.3