1e21e33ade
Move SecureStoreManager project and tests to Deprecated folder and remove from solution. SecureStore functionality is now integrated into ConfigManager.
5.6 KiB
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
- Launch the application
- Select File > New Store (or press
Ctrl+N) - Choose the store location (
.jsonfile) - Select encryption method:
- Key File (recommended for production): Generates a
.keyfile that must be kept secure - Password: Uses a password for encryption
- Key File (recommended for production): Generates a
- Click Create
Opening an Existing Store
- Select File > Open Store (or press
Ctrl+O) - Browse to the store file (
.json) - Provide the decryption method:
- Browse to the key file, or
- Enter the password
- 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:
- Select Tools > Generate Key File
- Choose the save location
- 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:
- Open a store that uses key file encryption
- Select Tools > Export Current Key
- 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.jsonfile - Pre-configure secrets before deployment
- Migrate secrets between environments
- Troubleshoot configuration issues
Opening the Main Application's Store
- Locate the store file:
data/secrets.json(relative to the JdeScoping.Host executable) - Locate the key file:
data/secrets.key(or use the master key password if configured) - 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