Don't encrypt and re-decrypt when creating a block, but keep plaintext data
This commit is contained in:
parent
417a701636
commit
c18893c151
@ -23,16 +23,20 @@ std::unique_ptr<EncryptedBlock> EncryptedBlock::TryCreateNew(BlockStore *baseBlo
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return make_unique<EncryptedBlock>(std::move(baseBlock), encKey);
|
return make_unique<EncryptedBlock>(std::move(baseBlock), encKey, std::move(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
EncryptedBlock::EncryptedBlock(std::unique_ptr<Block> baseBlock, const EncryptionKey &encKey)
|
EncryptedBlock::EncryptedBlock(std::unique_ptr<Block> baseBlock, const EncryptionKey &encKey)
|
||||||
|
:EncryptedBlock(std::move(baseBlock), encKey, Data(USEABLE_BLOCK_SIZE(baseBlock->size()))) {
|
||||||
|
_decryptFromBaseBlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
EncryptedBlock::EncryptedBlock(std::unique_ptr<Block> baseBlock, const EncryptionKey &encKey, Data plaintextData)
|
||||||
:Block(baseBlock->key()),
|
:Block(baseBlock->key()),
|
||||||
_baseBlock(std::move(baseBlock)),
|
_baseBlock(std::move(baseBlock)),
|
||||||
_plaintextData(USEABLE_BLOCK_SIZE(_baseBlock->size())),
|
_plaintextData(std::move(plaintextData)),
|
||||||
_encKey(encKey),
|
_encKey(encKey),
|
||||||
_dataChanged(false) {
|
_dataChanged(false) {
|
||||||
_decryptFromBaseBlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EncryptedBlock::~EncryptedBlock() {
|
EncryptedBlock::~EncryptedBlock() {
|
||||||
|
@ -18,6 +18,7 @@ class EncryptedBlock: public Block {
|
|||||||
public:
|
public:
|
||||||
//TODO Storing key twice (in parent class and in object pointed to). Once would be enough.
|
//TODO Storing key twice (in parent class and in object pointed to). Once would be enough.
|
||||||
EncryptedBlock(std::unique_ptr<Block> baseBlock, const EncryptionKey &encKey);
|
EncryptedBlock(std::unique_ptr<Block> baseBlock, const EncryptionKey &encKey);
|
||||||
|
EncryptedBlock(std::unique_ptr<Block> baseBlock, const EncryptionKey &encKey, Data plaintextData);
|
||||||
virtual ~EncryptedBlock();
|
virtual ~EncryptedBlock();
|
||||||
|
|
||||||
static std::unique_ptr<EncryptedBlock> TryCreateNew(BlockStore *baseBlockStore, const Key &key, Data data, const EncryptionKey &encKey);
|
static std::unique_ptr<EncryptedBlock> TryCreateNew(BlockStore *baseBlockStore, const Key &key, Data data, const EncryptionKey &encKey);
|
||||||
|
@ -37,10 +37,6 @@ uint64_t EncryptedBlockStore::numBlocks() const {
|
|||||||
return _baseBlockStore->numBlocks();
|
return _baseBlockStore->numBlocks();
|
||||||
}
|
}
|
||||||
|
|
||||||
unique_ptr<Block> EncryptedBlockStore::tryCreateInBaseStore(const Key &key, Data encryptedData) {
|
|
||||||
return _baseBlockStore->tryCreate(key, std::move(encryptedData));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,8 +19,6 @@ public:
|
|||||||
void remove(std::unique_ptr<Block> block) override;
|
void remove(std::unique_ptr<Block> block) override;
|
||||||
uint64_t numBlocks() const override;
|
uint64_t numBlocks() const override;
|
||||||
|
|
||||||
std::unique_ptr<Block> tryCreateInBaseStore(const Key &key, Data encryptedData);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<BlockStore> _baseBlockStore;
|
std::unique_ptr<BlockStore> _baseBlockStore;
|
||||||
EncryptionKey _encKey;
|
EncryptionKey _encKey;
|
||||||
|
Loading…
Reference in New Issue
Block a user