1e21e33ade
Move SecureStoreManager project and tests to Deprecated folder and remove from solution. SecureStore functionality is now integrated into ConfigManager.
171 lines
5.6 KiB
Markdown
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
|