Update modes.cpp

pull/186/head
Berendea Nicolae 2016-06-25 11:59:16 +03:00 committed by GitHub
parent b8f42d784d
commit b0dfbfdbcf
1 changed files with 8 additions and 4 deletions

View File

@ -215,12 +215,14 @@ void CBC_CTS_Encryption::ProcessLastBlock(byte *outString, const byte *inString,
length -= BlockSize(); length -= BlockSize();
// output last full ciphertext block // output last full ciphertext block
if (inString == outString) { if (inString == outString)
{
memcpy(m_buffer, outString+BlockSize(), length); memcpy(m_buffer, outString+BlockSize(), length);
memcpy(outString+BlockSize(), m_register, length); memcpy(outString+BlockSize(), m_register, length);
xorbuf(m_register, m_buffer, length); xorbuf(m_register, m_buffer, length);
} }
else { else
{
memcpy(outString+BlockSize(), m_register, length); memcpy(outString+BlockSize(), m_register, length);
xorbuf(m_register, inString+BlockSize(), length); xorbuf(m_register, inString+BlockSize(), length);
} }
@ -279,12 +281,14 @@ void CBC_CTS_Decryption::ProcessLastBlock(byte *outString, const byte *inString,
xorbuf(m_temp, inString+BlockSize(), length); xorbuf(m_temp, inString+BlockSize(), length);
// decrypt next to last plaintext block // decrypt next to last plaintext block
if (inString == outString) { if (inString == outString)
{
memcpy(m_buffer, outString+BlockSize(), length); memcpy(m_buffer, outString+BlockSize(), length);
memcpy(outString+BlockSize(), m_temp, length); memcpy(outString+BlockSize(), m_temp, length);
memcpy(m_temp, m_buffer, length); memcpy(m_temp, m_buffer, length);
} }
else { else
{
memcpy(outString+BlockSize(), m_temp, length); memcpy(outString+BlockSize(), m_temp, length);
memcpy(m_temp, inString+BlockSize(), length); memcpy(m_temp, inString+BlockSize(), length);
} }