X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=blobdiff_plain;f=src%2Fcrypter.h;h=04538a3fa51539451df971725a0bf647fdbf4f22;hp=d1bdb92c91013e94e88a887a7f0b0ea7f26ae35e;hb=84a4a7763f386934da90e2bd1e355b70023fa9ca;hpb=9cc27ae536be74b221605119292e7ee67b520fe1 diff --git a/src/crypter.h b/src/crypter.h index d1bdb92..04538a3 100644 --- a/src/crypter.h +++ b/src/crypter.h @@ -78,19 +78,26 @@ public: { memset(&chKey, 0, sizeof chKey); memset(&chIV, 0, sizeof chIV); - munlock(&chKey, sizeof chKey); - munlock(&chIV, sizeof chIV); fKeySet = false; } CCrypter() { fKeySet = false; + + // Try to keep the key data out of swap (and be a bit over-careful to keep the IV that we don't even use out of swap) + // Note that this does nothing about suspend-to-disk (which will put all our key data on disk) + // Note as well that at no point in this program is any attempt made to prevent stealing of keys by reading the memory of the running process. + LockedPageManager::instance.LockRange(&chKey[0], sizeof chKey); + LockedPageManager::instance.LockRange(&chIV[0], sizeof chIV); } ~CCrypter() { CleanKey(); + + LockedPageManager::instance.UnlockRange(&chKey[0], sizeof chKey); + LockedPageManager::instance.UnlockRange(&chIV[0], sizeof chIV); } };