CBC Decrypt
| 132 | |
| 133 | // CBC Decrypt |
| 134 | inline void Mode_BASE::CBC_Decrypt(byte* out, const byte* in, word32 sz) |
| 135 | { |
| 136 | word32 blocks = sz / blockSz_; |
| 137 | byte hold[MaxBlockSz]; |
| 138 | |
| 139 | while (blocks--) { |
| 140 | memcpy(tmp_, in, blockSz_); |
| 141 | ProcessAndXorBlock(tmp_, 0, out); |
| 142 | xorbuf(out, reg_, blockSz_); |
| 143 | memcpy(hold, reg_, blockSz_); // swap reg_ and tmp_ |
| 144 | memcpy(reg_, tmp_, blockSz_); |
| 145 | memcpy(tmp_, hold, blockSz_); |
| 146 | out += blockSz_; |
| 147 | in += blockSz_; |
| 148 | } |
| 149 | } |
| 150 | |
| 151 | |
| 152 | } // namespace |