Add TODOs
This commit is contained in:
parent
12b1eefbee
commit
456b240e21
@ -75,8 +75,10 @@ constexpr uint16_t EncryptedBlock<Cipher>::FORMAT_VERSION_HEADER;
|
||||
|
||||
template<class Cipher>
|
||||
boost::optional<cpputils::unique_ref<EncryptedBlock<Cipher>>> EncryptedBlock<Cipher>::TryCreateNew(BlockStore *baseBlockStore, const Key &key, cpputils::Data data, const typename Cipher::EncryptionKey &encKey) {
|
||||
//TODO Is it possible to avoid copying the whole plaintext data into plaintextWithHeader? Maybe an encrypt() object that has an .addData() function and concatenates all data for encryption? Maybe Crypto++ offers this functionality already.
|
||||
cpputils::Data plaintextWithHeader = _prependKeyHeaderToData(key, std::move(data));
|
||||
cpputils::Data encrypted = Cipher::encrypt((byte*)plaintextWithHeader.data(), plaintextWithHeader.size(), encKey);
|
||||
//TODO Avoid copying the whole encrypted block into a encryptedWithFormatHeader by creating a Data object with full size and then giving it as an encryption target to Cipher::encrypt()
|
||||
cpputils::Data encryptedWithFormatHeader = _prependFormatHeader(std::move(encrypted));
|
||||
auto baseBlock = baseBlockStore->tryCreate(key, std::move(encryptedWithFormatHeader));
|
||||
if (baseBlock == boost::none) {
|
||||
|
@ -48,7 +48,7 @@ Key EncryptedBlockStore<Cipher>::createKey() {
|
||||
template<class Cipher>
|
||||
boost::optional<cpputils::unique_ref<Block>> EncryptedBlockStore<Cipher>::tryCreate(const Key &key, cpputils::Data data) {
|
||||
//TODO Test that this returns boost::none when base blockstore returns nullptr (for all pass-through-blockstores)
|
||||
//TODO Easier implementation? This is only so complicated because of the case EncryptedBlock -> Block
|
||||
//TODO Easier implementation? This is only so complicated because of the cast EncryptedBlock -> Block
|
||||
auto result = EncryptedBlock<Cipher>::TryCreateNew(_baseBlockStore.get(), key, std::move(data), _encKey);
|
||||
if (result == boost::none) {
|
||||
return boost::none;
|
||||
|
@ -52,6 +52,7 @@ namespace cryfs {
|
||||
cpputils::Data readAll() const override {
|
||||
cpputils::Data data = _baseBlob->readAll();
|
||||
cpputils::Data dataWithoutHeader(data.size() - sizeof(FORMAT_VERSION_HEADER) - 1);
|
||||
//Can we avoid this memcpy? Maybe by having Data::subdata() that returns a reference to the same memory region? Should we?
|
||||
std::memcpy(dataWithoutHeader.data(), data.dataOffset(sizeof(FORMAT_VERSION_HEADER) + 1), dataWithoutHeader.size());
|
||||
return dataWithoutHeader;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user