mux/src/crypt/crypt.cpp File Reference

#include "ufc-crypt.h"
#include "crypt.h"
#include "crypt-private.h"

Include dependency graph for crypt.cpp:

Go to the source code of this file.

Defines

#define SBA(sb, v)   (*(long32*)((char*)(sb)+(v)))

Functions

void _ufc_doit_r (ufc_long itr, struct crypt_data *__data, ufc_long *res)


Define Documentation

#define SBA ( sb,
 )     (*(long32*)((char*)(sb)+(v)))

Definition at line 37 of file crypt.cpp.

Referenced by _ufc_doit_r().


Function Documentation

void _ufc_doit_r ( ufc_long  itr,
struct crypt_data __data,
ufc_long res 
)

Definition at line 40 of file crypt.cpp.

References crypt_data::keysched, crypt_data::sb0, crypt_data::sb2, and SBA.

Referenced by __encrypt_r(), and crypt_r().

00041 {
00042   int i;
00043   long32 s, *k;
00044   long32 *sb01 = (long32*)__data->sb0;
00045   long32 *sb23 = (long32*)__data->sb2;
00046   long32 l1, l2, r1, r2;
00047 
00048   l1 = (long32)res[0]; l2 = (long32)res[1];
00049   r1 = (long32)res[2]; r2 = (long32)res[3];
00050 
00051   while(itr--) {
00052     k = (long32*)__data->keysched;
00053     for(i=8; i--; ) {
00054       s = *k++ ^ r1;
00055       l1 ^= SBA(sb01, s & 0xffff); l2 ^= SBA(sb01, (s & 0xffff)+4);
00056       l1 ^= SBA(sb01, s >>= 16  ); l2 ^= SBA(sb01, (s         )+4);
00057       s = *k++ ^ r2;
00058       l1 ^= SBA(sb23, s & 0xffff); l2 ^= SBA(sb23, (s & 0xffff)+4);
00059       l1 ^= SBA(sb23, s >>= 16  ); l2 ^= SBA(sb23, (s         )+4);
00060 
00061       s = *k++ ^ l1;
00062       r1 ^= SBA(sb01, s & 0xffff); r2 ^= SBA(sb01, (s & 0xffff)+4);
00063       r1 ^= SBA(sb01, s >>= 16  ); r2 ^= SBA(sb01, (s         )+4);
00064       s = *k++ ^ l2;
00065       r1 ^= SBA(sb23, s & 0xffff); r2 ^= SBA(sb23, (s & 0xffff)+4);
00066       r1 ^= SBA(sb23, s >>= 16  ); r2 ^= SBA(sb23, (s         )+4);
00067     }
00068     s=l1; l1=r1; r1=s; s=l2; l2=r2; r2=s;
00069   }
00070   res[0] = l1; res[1] = l2; res[2] = r1; res[3] = r2;
00071 }


Generated on Mon May 28 04:40:14 2007 for MUX by  doxygen 1.4.7