| 40 | typedef BlockGetAndPut<RC5::RC5_WORD, LittleEndian> Block; |
| 41 | |
| 42 | void RC5::Enc::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const |
| 43 | { |
| 44 | const RC5_WORD *sptr = sTable; |
| 45 | RC5_WORD a, b; |
| 46 | |
| 47 | Block::Get(inBlock)(a)(b); |
| 48 | a += sptr[0]; |
| 49 | b += sptr[1]; |
| 50 | sptr += 2; |
| 51 | |
| 52 | for(unsigned i=0; i<r; i++) |
| 53 | { |
| 54 | a = rotlMod(a^b,b) + sptr[2*i+0]; |
| 55 | b = rotlMod(a^b,a) + sptr[2*i+1]; |
| 56 | } |
| 57 | |
| 58 | Block::Put(xorBlock, outBlock)(a)(b); |
| 59 | } |
| 60 | |
| 61 | void RC5::Dec::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const |
| 62 | { |