nc_program_manager/.paul/phases/08-license-integration/08-01-SUMMARY.md
dtrentin 3312a57757 feat(08-license-integration): wire RSA license check, remove -chiave arg
Replace AES checkLicense with MachineFingerprint+LicenseFile+LicenseValidator.
License.lic hardcoded next to EXE; -chiave= CLI arg and InputArgs.chiave removed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 23:10:05 +02:00

63 lines
2.4 KiB
Markdown

---
phase: 08-license-integration
plan: 01
type: summary
status: complete
completed: 2026-05-17
---
# Phase 08 Summary: license-integration
## What Was Built
RSA license check wired into `Program.cs`. Old AES-based `checkLicense` deleted. License now validated at startup against `license.lic` in the EXE directory.
**Files modified:**
- `Program.cs` — license check replaced, `checkLicense` deleted, `-chiave=` parsing removed, `MostraAiuto` updated
- `InputArgs.cs``chiave` field removed
## Acceptance Criteria Results
| AC | Result | Notes |
|----|--------|-------|
| AC-1: -chiave= arg still parsed | **SUPERSEDED** | User directed removal mid-APPLY (see Deviations) |
| AC-2: RSA license check at startup | PASS | `MachineFingerprint` + `LicenseFile.TryRead` + `LicenseValidator.Validate` wired |
| AC-3: License failure exits -100 | PASS | `Console.WriteLine("Licenza ERRATA")` + `vediErrore(-100)` + `return -1` |
| AC-4: Help text updated | PASS | `-chiave=` block replaced with `license.lic` location note |
## Deviations
**Plan AC-1 superseded by user decision.**
Plan stated: keep `-chiave=` as the CLI arg carrying the `.lic` file path.
User directed mid-APPLY: remove `-chiave=` entirely; hardcode `license.lic` next to the EXE.
Actual license path:
```csharp
string _licPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "license.lic");
```
`inputArgs.chiave` field removed from `InputArgs.cs`. All `-chiave=` parsing removed from `parseArgomenti`.
## Verification (post-apply grep)
```
grep "checkLicense|chiave|System.Management|System.Security.Cryptography" Program.cs → 0 hits
grep "MachineFingerprint|LicenseFile|LicenseValidator|NcProgramManager.Licensing" Program.cs → 5 hits
grep "chiave" InputArgs.cs → 0 hits
```
## Decisions Made
- License file always at `AppDomain.CurrentDomain.BaseDirectory + "license.lic"` — no CLI override
- `InputArgs.chiave` field deleted (not just unused) — cleaner than leaving dead field
- `AesCrypt.cs` left on disk (still in csproj, no cleanup in scope)
## Deferred Issues
- Real RSA key pair — Phase 09 generates; copy `PublicKeyXml` into `LicenseValidator.cs`
- Phase 09: separate `LicenseGenerator` console app — reads WMI fingerprint, signs, writes `.lic`
- `AesCrypt.cs` dead code — remove in future cleanup phase
## Tests
No new tests (license core tested in Phase 07). Docker build + 116 tests pass (2 Fanuc FOCAS ignored, Windows-only DLL).