blob: 6c12105306a18249f8d60e2e66d46504676cf541 [file]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_SQLITE_ENCRYPTED_VFS_SQLITE_ENCRYPTED_VFS_H_
#define COMPONENTS_SQLITE_ENCRYPTED_VFS_SQLITE_ENCRYPTED_VFS_H_
#include "base/component_export.h"
namespace sqlite_encrypted_vfs {
// SQLite VFS wrapper registered as "sqlite_encrypted_vfs".
//
// This VFS delegates standard OS file operations directly to SQLite's default
// underlying OS VFS (sqlite3_vfs_find(nullptr)), while intercepting xOpen,
// xRead, and xWrite to support transparent database encryption.
class COMPONENT_EXPORT(SQLITE_ENCRYPTED_VFS) SqliteEncryptedVfs {
public:
static constexpr const char kSqliteVfsName[] = "sqlite_encrypted_vfs";
// Registers "sqlite_encrypted_vfs" with SQLite if not already registered.
static void Register();
// Returns the singleton instance of SqliteEncryptedVfs.
static SqliteEncryptedVfs* GetInstance();
SqliteEncryptedVfs();
~SqliteEncryptedVfs();
SqliteEncryptedVfs(const SqliteEncryptedVfs&) = delete;
SqliteEncryptedVfs& operator=(const SqliteEncryptedVfs&) = delete;
};
} // namespace sqlite_encrypted_vfs
#endif // COMPONENTS_SQLITE_ENCRYPTED_VFS_SQLITE_ENCRYPTED_VFS_H_