#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 SBA | ( | sb, | |||
v | ) | (*(long32*)((char*)(sb)+(v))) |
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 }