master
ef933db0d8
feat(cli): Implement crypto plugin CLI architecture with regional compliance
Sprint: SPRINT_4100_0006_0001
Status: COMPLETED
Implemented plugin-based crypto command architecture for regional compliance
with build-time distribution selection (GOST/eIDAS/SM) and runtime validation.
## New Commands
- `stella crypto sign` - Sign artifacts with regional crypto providers
- `stella crypto verify` - Verify signatures with trust policy support
- `stella crypto profiles` - List available crypto providers & capabilities
## Build-Time Distribution Selection
```bash
# International (default - BouncyCastle)
dotnet build src/Cli/StellaOps.Cli/StellaOps.Cli.csproj
# Russia distribution (GOST R 34.10-2012)
dotnet build -p:StellaOpsEnableGOST=true
# EU distribution (eIDAS Regulation 910/2014)
dotnet build -p:StellaOpsEnableEIDAS=true
# China distribution (SM2/SM3/SM4)
dotnet build -p:StellaOpsEnableSM=true
```
## Key Features
- Build-time conditional compilation prevents export control violations
- Runtime crypto profile validation on CLI startup
- 8 predefined profiles (international, russia-prod/dev, eu-prod/dev, china-prod/dev)
- Comprehensive configuration with environment variable substitution
- Integration tests with distribution-specific assertions
- Full migration path from deprecated `cryptoru` CLI
## Files Added
- src/Cli/StellaOps.Cli/Commands/CryptoCommandGroup.cs
- src/Cli/StellaOps.Cli/Commands/CommandHandlers.Crypto.cs
- src/Cli/StellaOps.Cli/Services/CryptoProfileValidator.cs
- src/Cli/StellaOps.Cli/appsettings.crypto.yaml.example
- src/Cli/__Tests/StellaOps.Cli.Tests/CryptoCommandTests.cs
- docs/cli/crypto-commands.md
- docs/implplan/SPRINT_4100_0006_0001_COMPLETION_SUMMARY.md
## Files Modified
- src/Cli/StellaOps.Cli/StellaOps.Cli.csproj (conditional plugin refs)
- src/Cli/StellaOps.Cli/Program.cs (plugin registration + validation)
- src/Cli/StellaOps.Cli/Commands/CommandFactory.cs (command wiring)
- src/Scanner/__Libraries/StellaOps.Scanner.Core/Configuration/PoEConfiguration.cs (fix)
## Compliance
- GOST (Russia): GOST R 34.10-2012, FSB certified
- eIDAS (EU): Regulation (EU) No 910/2014, QES/AES/AdES
- SM (China): GM/T 0003-2012 (SM2), OSCCA certified
## Migration
`cryptoru` CLI deprecated → sunset date: 2025-07-01
- `cryptoru providers` → `stella crypto profiles`
- `cryptoru sign` → `stella crypto sign`
## Testing
✅ All crypto code compiles successfully
✅ Integration tests pass
✅ Build verification for all distributions (international/GOST/eIDAS/SM)
Next: SPRINT_4100_0006_0002 (eIDAS plugin implementation)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 13:13:00 +02:00
..
2025-12-22 09:50:12 +02:00
2025-12-23 12:09:09 +02:00
2025-12-23 13:13:00 +02:00
2025-12-22 19:10:27 +02:00
2025-12-14 16:24:16 +02:00
2025-12-12 09:35:37 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-13 18:08:55 +02:00
2025-12-13 18:08:55 +02:00
2025-12-13 18:08:55 +02:00
2025-12-10 19:13:29 +02:00
2025-12-05 08:01:47 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-12 09:35:37 +02:00
2025-11-25 22:09:44 +02:00
2025-12-12 09:35:37 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-20 01:26:42 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-12 09:35:37 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-13 18:08:55 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-13 18:08:55 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-07 22:49:53 +02:00
2025-12-10 19:13:29 +02:00
2025-12-07 22:49:53 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-13 18:08:55 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-21 08:29:51 +02:00
2025-12-12 09:35:37 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-21 17:51:58 +02:00
2025-12-11 02:32:18 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 08:20:04 +02:00
2025-12-11 02:32:18 +02:00
2025-12-14 16:24:16 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-06 21:48:12 +02:00
2025-12-06 21:48:12 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 02:32:18 +02:00
2025-12-14 16:24:16 +02:00
2025-12-10 19:13:29 +02:00
2025-12-21 08:29:51 +02:00
2025-12-13 00:20:26 +02:00
2025-12-13 00:20:26 +02:00
2025-12-13 00:20:26 +02:00
2025-12-14 16:24:16 +02:00
2025-12-13 00:20:26 +02:00
2025-12-10 19:13:29 +02:00
2025-12-21 08:29:51 +02:00
2025-12-13 18:08:55 +02:00
2025-12-13 18:08:55 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-16 10:44:00 +02:00
2025-12-16 10:44:00 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:00 +02:00
2025-12-16 10:44:24 +02:00
2025-12-19 22:19:08 +02:00
2025-12-18 00:47:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-19 22:19:08 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-19 22:19:08 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-12 09:35:37 +02:00
2025-12-14 23:20:14 +02:00
2025-12-13 18:08:55 +02:00
2025-12-13 18:08:55 +02:00
2025-12-13 18:08:55 +02:00
2025-12-21 17:51:58 +02:00
2025-12-21 17:51:58 +02:00
2025-12-20 12:15:16 +02:00
2025-12-13 18:08:55 +02:00
2025-12-13 18:08:55 +02:00
2025-12-22 19:10:27 +02:00
2025-12-21 17:51:58 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-14 18:45:56 +02:00
2025-12-18 00:47:24 +02:00
2025-12-14 18:45:56 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-14 18:45:56 +02:00
2025-12-14 18:45:56 +02:00
2025-12-14 18:45:56 +02:00
2025-12-14 18:45:56 +02:00
2025-12-14 18:45:56 +02:00
2025-12-14 18:45:56 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-11 19:47:43 +02:00
2025-12-12 09:35:37 +02:00
2025-12-12 09:35:37 +02:00
2025-12-11 08:20:15 +02:00
2025-12-12 09:35:37 +02:00
2025-12-12 09:35:37 +02:00
2025-12-12 09:35:37 +02:00
2025-12-12 09:35:37 +02:00
2025-12-11 02:32:18 +02:00
2025-12-11 02:32:18 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-22 09:50:12 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-22 09:50:12 +02:00
2025-12-22 09:50:12 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 23:21:21 +02:00
2025-12-19 22:19:08 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-23 13:13:00 +02:00
2025-12-23 13:13:00 +02:00
2025-12-23 13:13:00 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 20:37:12 +02:00
2025-12-19 22:19:08 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-18 00:47:24 +02:00
2025-12-10 19:13:29 +02:00
2025-12-22 19:10:27 +02:00
2025-12-10 19:13:29 +02:00
2025-12-18 00:47:24 +02:00
2025-12-18 00:47:24 +02:00
2025-12-12 09:35:37 +02:00
2025-12-19 22:19:08 +02:00
2025-12-10 19:13:29 +02:00
2025-12-19 22:19:08 +02:00
2025-12-10 19:13:29 +02:00
2025-12-18 00:47:24 +02:00
2025-12-10 19:13:29 +02:00
2025-12-18 00:47:24 +02:00
2025-12-10 19:13:29 +02:00
2025-12-22 19:10:27 +02:00
2025-12-10 19:13:29 +02:00
2025-12-10 19:13:29 +02:00
2025-12-07 22:49:53 +02:00
2025-12-19 22:19:08 +02:00
2025-12-13 18:08:55 +02:00
2025-12-19 22:19:08 +02:00
2025-12-11 17:48:25 +02:00
2025-12-14 15:50:38 +02:00
2025-12-19 22:19:08 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-22 19:10:27 +02:00
2025-12-18 13:15:13 +02:00
2025-12-20 01:26:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-19 22:19:08 +02:00
2025-12-18 13:15:13 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-18 13:15:13 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-19 22:19:08 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-20 01:26:42 +02:00
2025-12-19 22:19:08 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 09:23:42 +02:00
2025-12-18 00:47:24 +02:00
2025-12-23 09:23:42 +02:00
2025-12-20 01:26:42 +02:00
2025-12-20 01:26:42 +02:00
2025-12-18 13:15:13 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-18 13:15:13 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 09:23:42 +02:00
2025-12-19 22:19:08 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-16 10:44:24 +02:00
2025-12-18 13:15:13 +02:00
2025-12-18 13:15:13 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-22 09:50:12 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-20 01:26:42 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:32:38 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-19 22:19:08 +02:00
2025-12-20 01:26:42 +02:00
2025-12-20 01:26:42 +02:00
2025-12-20 01:26:42 +02:00
2025-12-20 01:26:42 +02:00
2025-12-20 01:26:42 +02:00
2025-12-19 22:19:08 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-19 22:19:08 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-19 22:19:08 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 12:09:09 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 12:09:09 +02:00
2025-12-23 12:09:09 +02:00
2025-12-23 12:09:09 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 11:05:55 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 11:05:55 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 11:05:55 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 10:56:38 +02:00
2025-12-23 10:56:38 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-16 10:44:24 +02:00
2025-12-16 10:44:24 +02:00
2025-12-20 01:26:42 +02:00
2025-12-22 23:21:21 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 23:21:21 +02:00
2025-12-22 23:21:21 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 09:23:42 +02:00
2025-12-23 09:23:42 +02:00
2025-12-22 19:10:27 +02:00
2025-12-23 07:28:21 +02:00
2025-12-23 07:28:21 +02:00
2025-12-23 07:28:21 +02:00
2025-12-23 07:28:21 +02:00
2025-12-23 07:28:21 +02:00
2025-12-23 07:46:40 +02:00
2025-12-23 13:13:00 +02:00
2025-12-21 08:29:51 +02:00