Files
jdescopingtool/Deprecated/JdeScoping.SecureStoreManager/README.md
T
Joseph Doherty 1e21e33ade chore: deprecate standalone SecureStoreManager utility
Move SecureStoreManager project and tests to Deprecated folder and remove
from solution. SecureStore functionality is now integrated into ConfigManager.
2026-01-27 07:26:40 -05:00

5.6 KiB

JdeScoping SecureStore Manager

A cross-platform desktop utility for managing encrypted SecureStore secrets. This tool provides a graphical interface for creating, editing, and managing secrets stored in encrypted JSON files using the NeoSmart.SecureStore library.

Features

  • Cross-platform - Runs on Windows, macOS, and Linux
  • Create new stores - Create encrypted secret stores with either key file or password-based encryption
  • Open existing stores - Open and manage existing SecureStore JSON files
  • Manage secrets - Add, edit, and delete key-value pairs
  • Masked values - Secret values are masked by default with a reveal toggle
  • Copy to clipboard - Quickly copy secret values
  • Unsaved changes tracking - Prompts before closing with unsaved changes
  • Key file generation - Generate standalone key files for deployment

Building

Prerequisites

  • .NET 10.0 SDK or later

Build and Run

# Build the application
dotnet build src/Utils/JdeScoping.SecureStoreManager

# Run the application
dotnet run --project src/Utils/JdeScoping.SecureStoreManager

Platform-Specific Notes

Windows

No additional setup required.

macOS

No additional setup required. The application uses native macOS windowing.

Linux

Ensure you have the required GTK libraries installed:

# Ubuntu/Debian
sudo apt install libgtk-3-0

# Fedora
sudo dnf install gtk3

Running Tests

dotnet test tests/JdeScoping.SecureStoreManager.Tests

Usage

Creating a New Store

  1. Launch the application
  2. Select File > New Store (or press Ctrl+N)
  3. Choose the store location (.json file)
  4. Select encryption method:
    • Key File (recommended for production): Generates a .key file that must be kept secure
    • Password: Uses a password for encryption
  5. Click Create

Opening an Existing Store

  1. Select File > Open Store (or press Ctrl+O)
  2. Browse to the store file (.json)
  3. Provide the decryption method:
    • Browse to the key file, or
    • Enter the password
  4. Click Open

Managing Secrets

Action How To
Add secret Secrets > Add Secret or toolbar Add button
Edit secret Double-click the row, or select and press Enter
Delete secret Select the row and press Delete
Reveal value Click the Show/Hide button in the Actions column
Copy value Click Copy in the Actions column
Save changes File > Save or press Ctrl+S

Generating a Standalone Key File

For deployment scenarios where you need to pre-generate a key file:

  1. Select Tools > Generate Key File
  2. Choose the save location
  3. The generated key can be used with the main JdeScoping application

Exporting the Current Key

To backup or copy the key from the currently open store:

  1. Open a store that uses key file encryption
  2. Select Tools > Export Current Key
  3. Choose the export location

Keyboard Shortcuts

Shortcut Action
Ctrl+N New Store
Ctrl+O Open Store
Ctrl+S Save
Ctrl+W Close Store
Delete Delete selected secret

Integration with JdeScoping

This utility is compatible with the SecureStore format used by the main JdeScoping application. You can use it to:

  • View and edit secrets in the application's data/secrets.json file
  • Pre-configure secrets before deployment
  • Migrate secrets between environments
  • Troubleshoot configuration issues

Opening the Main Application's Store

  1. Locate the store file: data/secrets.json (relative to the JdeScoping.Host executable)
  2. Locate the key file: data/secrets.key (or use the master key password if configured)
  3. Open the store using this utility

Security Considerations

  • Key files should be treated as sensitive credentials and not committed to source control
  • Values are masked by default to prevent shoulder surfing
  • No auto-save - changes must be explicitly saved to prevent accidental overwrites
  • Delete confirmation - deleting secrets requires confirmation
  • Unsaved changes prompt - closing with unsaved changes prompts the user

Project Structure

JdeScoping.SecureStoreManager/
├── Models/
│   └── SecretEntry.cs           # Secret key-value model
├── Services/
│   ├── ISecureStoreManager.cs   # Service interface
│   └── SecureStoreManager.cs    # SecureStore wrapper implementation
├── ViewModels/
│   ├── ViewModelBase.cs         # INotifyPropertyChanged base
│   ├── RelayCommand.cs          # ICommand implementation
│   ├── MainWindowViewModel.cs   # Main window logic
│   ├── SecretItemViewModel.cs   # Individual secret item
│   └── DialogViewModels.cs      # Dialog view models
├── Views/
│   ├── MainWindow.axaml         # Main application window
│   ├── NewStoreDialog.axaml     # Create store dialog
│   ├── OpenStoreDialog.axaml    # Open store dialog
│   └── SecretEditDialog.axaml   # Add/edit secret dialog
├── Converters/
│   └── BooleanConverters.cs     # Value converters
├── App.axaml                    # Application resources
├── Program.cs                   # Application entry point
└── README.md                    # This file

Dependencies

  • .NET 10.0
  • Avalonia UI 11.2
  • Avalonia.Controls.DataGrid 11.2
  • MessageBox.Avalonia 3.1
  • NeoSmart.SecureStore 1.2.0