mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Write the remaining buffer in reset().
This commit is contained in:
parent
c2bdfab158
commit
36d974649e
@ -29,11 +29,18 @@ SymmetricCipherStream::SymmetricCipherStream(QIODevice* baseDevice, SymmetricCip
|
||||
|
||||
bool SymmetricCipherStream::reset()
|
||||
{
|
||||
if (isWritable()) {
|
||||
if (!writeBlock()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
m_buffer.clear();
|
||||
m_bufferPos = 0;
|
||||
m_bufferFilling = false;
|
||||
m_error = false;
|
||||
m_cipher->reset();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -133,6 +140,7 @@ bool SymmetricCipherStream::writeBlock()
|
||||
return true;
|
||||
}
|
||||
else if (m_buffer.size() != m_cipher->blockSize()) {
|
||||
// PKCS7 padding
|
||||
int padLen = m_cipher->blockSize() - m_buffer.size();
|
||||
for (int i=m_buffer.size(); i<m_cipher->blockSize(); i++) {
|
||||
m_buffer.append(static_cast<char>(padLen));
|
||||
|
@ -59,21 +59,21 @@ void TestSymmetricCipher::testAes256CbcEncryption()
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
stream.open(QIODevice::WriteOnly);
|
||||
|
||||
QVERIFY(stream.reset());
|
||||
buffer.reset();
|
||||
buffer.buffer().clear();
|
||||
stream.reset();
|
||||
stream.write(plainText.left(16));
|
||||
QCOMPARE(QString(buffer.data().toHex()), QString(cipherText.left(16).toHex()));
|
||||
|
||||
QVERIFY(stream.reset());
|
||||
buffer.reset();
|
||||
buffer.buffer().clear();
|
||||
stream.reset();
|
||||
stream.write(plainText.left(10));
|
||||
QCOMPARE(QString(buffer.data().toHex()), QString());
|
||||
|
||||
QVERIFY(stream.reset());
|
||||
buffer.reset();
|
||||
buffer.buffer().clear();
|
||||
stream.reset();
|
||||
stream.write(plainText.left(10));
|
||||
stream.close();
|
||||
QCOMPARE(buffer.data().size(), 16);
|
||||
|
Loading…
Reference in New Issue
Block a user