chore: deprecate standalone SecureStoreManager utility
Move SecureStoreManager project and tests to Deprecated folder and remove from solution. SecureStore functionality is now integrated into ConfigManager.
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user