diff options
Diffstat (limited to 'src/content/docs/advanced')
| -rw-r--r-- | src/content/docs/advanced/gnupg-controller.md | 140 | ||||
| -rw-r--r-- | src/content/docs/advanced/key-database.md | 124 | ||||
| -rw-r--r-- | src/content/docs/advanced/module-controller.md | 214 | 
3 files changed, 478 insertions, 0 deletions
| diff --git a/src/content/docs/advanced/gnupg-controller.md b/src/content/docs/advanced/gnupg-controller.md new file mode 100644 index 0000000..70b5d29 --- /dev/null +++ b/src/content/docs/advanced/gnupg-controller.md @@ -0,0 +1,140 @@ +--- +title: A Comprehensive Guide of GpgController +sidebar: +  label: Gpg Controller +--- + +The **GpgController** in **GpgFrontend** is a powerful tool for configuring and +managing GPG-related settings. It provides advanced options for file operations, +password input methods, and custom GPG configurations, catering to both general +and advanced users. + +## Accessing the GpgController + +To access the **GpgController**: + +1. Navigate to the **Advanced** menu in the top toolbar. +2. Select **Open GnuPG Controller** from the dropdown menu. + +    + +The **GpgController** interface includes three tabs: **General**, **Key +Database**, and **Advanced**. Below is a detailed explanation of each tab's +features. + +## General Tab: Core Settings + +The **General** tab provides essential configuration options for GpgFrontend's interaction with GPG. + + + +### Available Options + +1. **Use Binary Mode for File Operations** + +   - This option determines the format used for encrypted or signed files: +     - **Binary Mode**: Produces compact and efficient files, ideal for storage +       and processing. +     - **ASCII Mode**: Generates human-readable files encoded in ASCII format. +       This is useful for sharing files over email or systems that might corrupt +       binary files. +   - **Recommendation**: Use binary mode for local file operations and ASCII +     mode for file sharing or email attachments. + +2. **Use Pinentry as Password Input Dialog** + +   - GpgFrontend includes a built-in password input dialog designed as a +     temporary fallback when no external **Pinentry** program is available. +     However, the built-in dialog has limitations and may not work for all +     password input scenarios. +   - **Recommendation**: Users are strongly encouraged to install a +     full-featured **Pinentry** program to ensure a seamless and secure password +     input experience. **Pinentry** is optimized for GnuPG's requirements and +     provides additional features such as better passphrase caching and hardware +     token support. + +3. **Enable GpgME Debug Log** + +   - Enables verbose logging for troubleshooting GPG operations via the +     **GpgME** library. This is useful for advanced users diagnosing issues in +     encryption or signing workflows. + +4. **Restart Gpg Agent on Start** + +   - Ensures that the GPG agent is restarted whenever GpgFrontend launches. This +     helps avoid issues caused by stale GPG agent processes. + +5. **Kill All GPG Daemons at Close** + +   - Terminates all GPG-related background processes when the application exits. +     This ensures that no sensitive information is cached in memory or +     accessible after the session ends. +   - **Recommendation**: Always enable this option for improved security. + +   > **Note**: Changes to any settings in the General tab will require +   > restarting GpgFrontend to take effect. + +--- + +## Key Database Tab: Overview + +The **Key Database** tab allows users to manage multiple key databases. While +detailed documentation is available elsewhere, note the following key points: + +- **Add New Key Database**: Easily create and manage isolated key databases for +  different projects or security requirements. +- **Switch Between Databases**: Use the **Key Toolbox** dropdown in the main +  interface to select the active database. + +   + +  > For more information on key database management, refer to the dedicated +  > documentation. + +--- + +## Advanced Tab: Custom GnuPG Configuration + +The **Advanced** tab is designed for users who need to configure custom GPG installations. + + + +### Configuring Custom GnuPG + +1. **Enable Custom GnuPG** + +   - Check the **Use Custom GnuPG** box to enable this feature. + +2. **Specify GPG Configuration Path** + +   - Use the **Select GnuPG Path** button to locate and set the directory where +     `gpgconf` resides. This is critical because GpgFrontend relies on the paths +     provided by `gpgconf` to locate essential components like `gpg`, `gpgsm`, +     and `gpg-agent`. + +3. **Verifying Custom Configuration** + +   - After setting the path, you can test the configuration by running `gpgconf +--list-components` in a terminal. This command lists all available GPG +     components and their paths, ensuring that GpgFrontend can access them +     correctly. + +    + +   > **Note**: If `gpgconf` is not configured correctly, GpgFrontend may fail to +   > locate and execute necessary GPG binaries. + +--- + +## Tips for Using GpgController Effectively + +1. **Choose File Formats Wisely** + +   - Use **Binary Mode** for efficiency in local operations and **ASCII Mode** +     for readability and compatibility in file sharing. + +2. **Install a Full-Featured Pinentry** + +   - Avoid relying on GpgFrontend's built-in password dialog for critical +     operations. Installing **Pinentry** ensures better compatibility and +     security. diff --git a/src/content/docs/advanced/key-database.md b/src/content/docs/advanced/key-database.md new file mode 100644 index 0000000..44bb2ed --- /dev/null +++ b/src/content/docs/advanced/key-database.md @@ -0,0 +1,124 @@ +--- +title: Multi-Key Database Support +sidebar: +  label: Multi-Key Database +--- + +GpgFrontend introduces **Multi-Key Database Support**, providing users with a +flexible and organized way to manage multiple key databases. This feature is +ideal for users who require separate cryptographic environments for different +projects, organizations, or levels of security. + +## Features and Benefits + +### Key Features + +1. **Multiple Key Databases**: Manage distinct key databases for specific +   purposes or contexts. +2. **Flexible Switching**: Easily switch between databases for different +   operations without affecting other configurations. +3. **Customizable Management**: Add, edit, reorder, or remove databases as +   needed. + +### Benefits + +- **Improved Security**: Isolate sensitive keys in dedicated databases to +  minimize exposure. +- **Enhanced Organization**: Maintain separate databases for better operational +  clarity. +- **Streamlined Workflows**: Quickly switch between databases for various +  projects or encryption tasks. + +## Accessing the Multi-Key Database Feature + +### Opening the GnuPG Controller + +To manage multiple key databases, follow these steps: + +1. **Access the Advanced Menu** + +   - Click on the **Advanced** menu in the top navigation bar. +   - Select **Open GnuPG Controller** from the dropdown options. + +    + +2. **Navigate to the Key Database Tab** + +   - In the **GnuPG Controller** window, switch to the **Key Database** tab. +   - Here, you will find a list of all configured key databases. + +    + +## Managing Key Databases + +The **Key Database** tab allows you to perform the following operations: + +### 1. Adding a New Key Database + +- Click the **Add New Key Database** button. +- Specify a name and path for the new database. This will create an isolated +  environment for new keys. + +### 2. Editing and Reordering Key Databases + +- Right-click on a database entry to view options like: +  - **Move Up/Move Down**: Reorder the database list. +  - **Move to Top**: Prioritize a database by moving it to the top. +  - **Edit**: Rename or modify the path of an existing database. +  - **Remove**: Delete a database from the configuration. + + + +> **Note**: Any changes to the key database settings will require an application +> restart to take effect. + +### 3. Switching Between Databases + +- Use the **Key Toolbox** dropdown in the main interface to switch between +  configured databases. +- Select the desired database, and the corresponding keys will be displayed. + + + +## Use Cases for Multi-Key Databases + +1. **Project Isolation** + +   - Maintain separate databases for different projects to avoid accidental +     cross-use of keys. + +2. **Organizational Separation** + +   - Keep departmental or team-specific keys isolated to ensure they are only +     accessible to authorized personnel. + +3. **Enhanced Security for Sensitive Keys** +   - Store high-security keys in a dedicated database, minimizing the risk of +     exposure during routine operations. + +## Tips for Effective Multi-Key Database Usage + +1. **Name Databases Clearly** + +   - Use descriptive names for each database to make it easier to identify their +     purpose. + +2. **Regular Backups** + +   - Backup each database regularly to prevent loss of critical keys. Store +     backups in secure, encrypted locations. + +3. **Audit Database Usage** + +   - Periodically review the contents and usage of each database to ensure +     proper organization and security. + +4. **Isolate Sensitive Operations** + +   - For highly sensitive keys, consider using a dedicated device or environment +     to manage their database. + +5. **Avoid Overloading Databases** + +   - Distribute keys evenly across multiple databases instead of overloading a +     single one. This enhances performance and organization. diff --git a/src/content/docs/advanced/module-controller.md b/src/content/docs/advanced/module-controller.md new file mode 100644 index 0000000..7f5dfaa --- /dev/null +++ b/src/content/docs/advanced/module-controller.md @@ -0,0 +1,214 @@ +--- +title: "Module Controller: Extending GpgFrontend Functionality" +sidebar: +  label: Module Controller +--- + +The **Module Controller** in **GpgFrontend** allows users to manage modular +extensions that enhance the core functionality of the application. These modules +provide features such as email integration, version checking, and key +synchronization, offering flexibility for different workflows. + +This guide provides an overview of the **Module Controller** interface, +instructions for managing modules, and guidance for advanced users interested in +developing custom modules. + +--- + +## Accessing the Module Controller + +To access the **Module Controller**: + +1. Open the **Advanced** menu in the top toolbar. +2. Select **Open Module Controller**. + +    + +The **Module Controller** interface consists of the following tabs: + +- **Registered Modules** +- **Global Register Table** + +--- + +## Registered Modules Tab + +The **Registered Modules** tab displays all available modules and provides tools +for managing their activation, metadata, and storage. + +### Key Features + +1. **Module List** + +   - The left panel lists all currently available modules. +   - Modules prefixed with `*` are **Integrated Modules**, meaning they are +     bundled with the GpgFrontend application. + +2. **Module Information** + +   - When a module is selected, detailed metadata is displayed in the right +     panel, including: + +     - **ID**: The unique identifier of the module. +     - **Version**: The current module version. +     - **SDK Version**: The version of the SDK required by the module. +     - **Path**: The physical location of the module file. +     - **Activation Status**: Indicates whether the module is active or set to +       auto-activate. + +     Example: + +     ``` +     - ID: com.bktus.gpgfrontend.module.email +     - Version: 1.0.0 +     - SDK Version: 2.1.5 +     - Path: /path/to/module/file +     - Auto Activate: True +     - Active: True +     ``` + +    + +3. **Module Actions** + +   - **Deactivate**: Temporarily disables the selected module. +   - **Disable Auto Activate**: Prevents the module from loading automatically +     when GpgFrontend starts. + +4. **Show Mods Directory** + +   - Opens the directory where external modules are stored. Users can manually +     add or remove custom modules by placing or deleting files in this +     directory. + +   > **Tip for Integrated Modules**: + +   - **Windows/Mac Users**: Integrated Modules (prefixed with `*`) can be +     removed by deleting the corresponding `.dll` (Windows) or `.dylib` (Mac) +     file from the `modules` directory. +   - **Linux Users**: Due to the nature of **AppImage** and **Flatpak** +     packages, removing Integrated Modules may require recompiling and +     repackaging the application. + +## Global Register Table Tab + +The **Global Register Table** provides a detailed view of the internal data +structure used by GpgFrontend and its modules. This table is primarily useful +for developers and advanced users who want to debug or inspect module +interactions with the core application. + +### Key Features + +1. **Key-Value Data** + +   - Displays the hierarchical structure of global variables, including: +     - Module-specific settings (e.g., version checking, state tracking). +     - GnuPG paths and environment configurations. +   - Example: +     ``` +     gpgme: +       ctx: +         app_path: /opt/homebrew/Cellar/gnupg/2.4.5_1/bin/gpg +         gnupg_version: 2.4.5 +         gpgconf_path: /opt/homebrew/bin/gpgconf +     ``` + +2. **Navigation** + +   - Expand nodes to explore detailed properties for modules or core components. + +    + +## Developing Custom Modules + +The **Module Controller** supports custom modules, allowing developers to extend +GpgFrontend's functionality for specialized use cases. All modules adhere to a +strict **C ABI (Application Binary Interface)** and are dynamically linked to +the `libgpgfrontend_sdk` library. + +### Key Points for Developers + +1. **C ABI Compliance** + +   - Modules must be implemented using the C ABI to ensure compatibility across +     all supported platforms (Windows, macOS, Linux). + +2. **Dynamic SDK Linking** + +   - Modules interact with GpgFrontend by linking dynamically to the +     **libgpgfrontend_sdk** library. This library provides the necessary +     interfaces for module initialization, data exchange, and runtime +     interaction. + +3. **SDK Limitations** + +   - The current SDK API is still under development and may not cover all +     potential use cases. Developers are encouraged to contact the project +     maintainer for guidance or feature requests. + +4. **Getting Started** +   - Place the compiled module file (`.dll`, `.dylib`, or `.so`) in the +     `modules` directory. Use the **Show Mods Directory** button to locate this +     directory. + +--- + +## Tips for Managing Modules + +1. **Backup Before Changes** + +   - Always create a backup of the `modules` directory before making changes, +     especially when adding or removing modules. + +2. **Regular Updates** + +   - Check for updates to both GpgFrontend and its modules to ensure +     compatibility and access to the latest features. + +3. **Safe Removal** + +   - Follow the guidelines for deleting Integrated Modules based on your +     platform to avoid accidental issues. + +4. **Use Global Register Table for Debugging** +   - Advanced users can verify module configurations and GPG environment paths +     through the **Global Register Table**. + +--- + +## Example Module: Version Checking + +The **VersionChecking** module is a bundled example of how GpgFrontend uses +modules to provide additional functionality. + +### Features: + +- Checks the current application version. +- Displays release notes for new updates. +- Notifies users when an upgrade is available. + +### Example Metadata: + +``` +- ID: com.bktus.gpgfrontend.module.version_checking +- Version: 1.0.0 +- Auto Activate: True +``` + +### Global Register Table: + +``` +com.bktus.gpgfrontend.module.version_checking: +  current_version: v2.1.5 +  need_upgrade: false +  latest_version: v2.1.5 +``` + +--- + +By leveraging the **Module Controller**, users can customize and extend +GpgFrontend to suit their needs. Developers interested in creating new modules +are encouraged to experiment with the SDK and collaborate with the maintainer +for additional API support. For more details, visit the [GpgFrontend Modules +GitHub +Repository](https://github.com/saturneric/GpgFrontend-Modules/blob/main/README.md). | 
