blob: cde0e3ac6d12c49b6a812de3776df12f7d3c20ed [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CRYPTOHOME_STORAGE_ENCRYPTED_CONTAINER_FSCRYPT_CONTAINER_H_
#define CRYPTOHOME_STORAGE_ENCRYPTED_CONTAINER_FSCRYPT_CONTAINER_H_
#include "cryptohome/storage/encrypted_container/encrypted_container.h"
#include <base/files/file_path.h>
#include "cryptohome/platform.h"
#include "cryptohome/storage/encrypted_container/filesystem_key.h"
namespace cryptohome {
// `FscryptContainer` is a file-level encrypted container which uses fscrypt to
// encrypt the `backing_dir_` transparently.
class FscryptContainer : public EncryptedContainer {
public:
FscryptContainer(const base::FilePath& backing_dir,
const FileSystemKeyReference& key_reference,
Platform* platform);
~FscryptContainer() = default;
bool Setup(const FileSystemKey& encryption_key, bool create) override;
bool Teardown() override;
bool Purge() override;
EncryptedContainerType GetType() override {
return EncryptedContainerType::kFscrypt;
}
private:
const base::FilePath backing_dir_;
dircrypto::KeyReference key_reference_;
Platform* platform_;
};
} // namespace cryptohome
#endif // CRYPTOHOME_STORAGE_ENCRYPTED_CONTAINER_FSCRYPT_CONTAINER_H_