Files
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

171 lines
5.6 KiB
Markdown

# 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
```bash
# 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:
```bash
# Ubuntu/Debian
sudo apt install libgtk-3-0
# Fedora
sudo dnf install gtk3
```
## Running Tests
```bash
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