Skip to content

Commit 65a1276

Browse files
fix(aes): Ensure memory zeroing for sensitive data in EncryptedPayload destructor and decryption process
1 parent b614c42 commit 65a1276

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/Keystore/EncryptionParameters.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,13 @@ EncryptedPayload::EncryptedPayload(const Data& password, const Data& data, const
108108
_mac = computeMAC(derivedKey.end() - params.getKeyBytesSize(), derivedKey.end(), encrypted);
109109
}
110110

111+
memzero(&ctx, sizeof(ctx));
111112
memzero(derivedKey.data(), derivedKey.size());
112113
}
113114

114115
EncryptedPayload::~EncryptedPayload() {
115-
std::fill(encrypted.begin(), encrypted.end(), 0);
116-
std::fill(_mac.begin(), _mac.end(), 0);
116+
memzero(encrypted.data(), encrypted.size());
117+
memzero(_mac.data(), _mac.size());
117118
}
118119

119120
Data EncryptedPayload::decrypt(const Data& password) const {
@@ -160,6 +161,7 @@ Data EncryptedPayload::decrypt(const Data& password) const {
160161

161162
aes_ctr_decrypt(encrypted.data(), decrypted.data(), static_cast<int>(encrypted.size()), iv.data(),
162163
aes_ctr_cbuf_inc, &ctx);
164+
memzero(&ctx, sizeof(ctx));
163165
memzero(derivedKey.data(), derivedKey.size());
164166
} else {
165167
memzero(derivedKey.data(), derivedKey.size());

0 commit comments

Comments
 (0)