/** * Author......: See docs/credits.txt * License.....: MIT */ #ifndef _CPU_DES_H #define _CPU_DES_H #define PERM_OP(a,b,tt,n,m) \ { \ tt = a >> n; \ tt = tt ^ b; \ tt = tt & m; \ b = b ^ tt; \ tt = tt << n; \ a = a ^ tt; \ } #define HPERM_OP(a,tt,n,m) \ { \ tt = a << (16 + n); \ tt = tt ^ a; \ tt = tt & m; \ a = a ^ tt; \ tt = tt >> (16 + n); \ a = a ^ tt; \ } #define IP(l,r,tt) \ { \ PERM_OP (r, l, tt, 4, 0x0f0f0f0f); \ PERM_OP (l, r, tt, 16, 0x0000ffff); \ PERM_OP (r, l, tt, 2, 0x33333333); \ PERM_OP (l, r, tt, 8, 0x00ff00ff); \ PERM_OP (r, l, tt, 1, 0x55555555); \ } #define FP(l,r,tt) \ { \ PERM_OP (l, r, tt, 1, 0x55555555); \ PERM_OP (r, l, tt, 8, 0x00ff00ff); \ PERM_OP (l, r, tt, 2, 0x33333333); \ PERM_OP (r, l, tt, 16, 0x0000ffff); \ PERM_OP (l, r, tt, 4, 0x0f0f0f0f); \ } void _des_keysetup (const u32 data[2], u32 Kc[16], u32 Kd[16]); void _des_encrypt (u32 data[2], const u32 Kc[16], const u32 Kd[16]); #endif // _CPU_DES_H