Project Proposal: SecureVault

An Object-Oriented Password Manager with a Graphical User Interface

1. Objective

This project proposes the design and implementation of SecureVault, a desktop password management application. The primary goal is to apply and demonstrate core Object-Oriented Programming (OOP) principles to build a secure, reliable, and user-friendly system. Using C++, the project will feature a fully graphical user interface (GUI) rendered with OpenGL, a lightweight XOR encryption module for data security, and file-based persistence to ensure user data is saved between sessions.

2. Problem Statement

In the digital age, users manage a vast number of online accounts, each requiring a unique and strong password. The common pitfalls of password management—using weak passwords, reusing passwords, or storing them insecurely (e.g., in plain text files)—create significant security risks. SecureVault aims to solve this by providing a centralized and encrypted repository for credentials, accessed through an intuitive graphical interface, thereby promoting better security hygiene.

3. Core OOP Concepts in Practice

SecureVault is fundamentally an object-oriented project. Click on each pillar to learn more.

Encapsulation

Data and the methods that operate on that data will be bundled together into classes. For example, a `Credential` object will hold the website, username, and password, and only allow access through public methods (`getters`/`setters`). This prevents direct, uncontrolled access to sensitive data and hides the internal complexity.

Abstraction

The system will hide complex implementation details behind simple interfaces. The `UIManager` will manage a collection of `UIElement` objects. When the manager calls the `draw()` method on an element, it doesn't need to know *how* to draw a button versus a text field; it only needs to know that the element is drawable. This simplifies the high-level logic.

Inheritance

To reduce code duplication and create a logical hierarchy, we will use inheritance. A base `UIElement` class will define common properties (like position, size) and behaviors (like `draw()`, `onClick()`). Concrete classes like `Button`, `TextField`, and `Panel` will then inherit from `UIElement` and implement their specific functionalities.

Polymorphism

This allows us to treat objects of different classes in a uniform way. The `UIManager` can hold a list of `UIElement*` pointers. When it iterates through this list and calls `draw()` on each element, the correct `draw()` method (for a `Button`, `TextField`, etc.) is executed at runtime. This makes the UI rendering engine flexible and easily extensible.

5. Key Features

Core functionalities of the SecureVault application.

🔑

Master Authentication

Secure login screen to authenticate the user.

⚙️

Full CRUD Functionality

Create, Read, Update, and Delete password entries.

📄

Multi-Field Entries

Stores website, username, password, and backup code.

🛡️

XOR Encryption

Encrypts all credentials stored in the data file.

💾

Persistent Storage

Saves credentials to a local file for persistence.

🖱️

Fully Interactive GUI

All interactions handled through a custom OpenGL interface.

6. Scope

Defining the boundaries of the project.

In Scope

  • Complete GUI using OpenGL
  • XOR encryption for data at rest
  • File-based data persistence
  • Master login mechanism
  • Full credential lifecycle management (CRUD)
  • Comprehensive error handling via GUI feedback

Out of Scope

  • Network synchronization
  • Multi-user support
  • Advanced encryption (e.g., AES, RSA)
  • Cloud storage integration
  • Browser or mobile integration
  • Biometric authentication

System Architecture

A visual representation of SecureVault's component layers and data flow.

User Interaction Layer (GUI)

User ↔ Mouse/Keyboard Input ↔ OpenGL/GLFW

⬇️

Application Logic Layer

UI Manager
Password Manager Core
Encryption Module
⬇️

Data Persistence Layer

Encrypted Data ↔ File System (Save/Load)

Submission Details

6. Submission Details

Proposer (Student)

Name: Tijul Kabir Toha

Student ID: 240113

Email: toha.240113@s.pust.ac.bd

GitHub: tijulkabir

Website: tijulkabir.me

Instructor

Name: Dr. Md. Toukir Ahmed

Email: toukirahmedreal@pust.ac.bd

Assistant Professor
Department of Computer Science and Engineering
Pabna University of Science and Technology
Pabna, Bangladesh