Pulse/pkg/licensing
rcourtman cce1b3c783 fix(licensing): decrypt v5.0.0-era license.enc sealed with raw machine-id material
v5.0.0 derived the license.enc AES key as sha256("pulse-license-" +
material) where material was the raw /etc/machine-id file content —
trailing newline included — with hostname and a fixed dev fallback as
alternates. v6 trims machine-id before hashing and dropped both
fallbacks, so licenses activated on v5.0.0 (before .license-key shipped
in v5.0.1) could never be decrypted and the December 2025 lifetime
cohort silently booted as Community.

Collect the raw v5 key materials at construction and try them verbatim
as legacy sha256 candidates during decrypt, alongside the existing
trimmed HKDF/legacy derivations. The write path is unchanged: persistent
random key + HKDF only. Pins the cloud-paid persistence contract to the
full v5.0.x compatibility-loader material set.
2026-06-11 08:36:11 +01:00
..
testsupport Move license test signers to testsupport 2026-04-28 19:12:21 +01:00
activation_store.go Strengthen export and license persistence encryption 2026-04-22 01:03:10 +01:00
activation_store_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
activation_test_helpers_test.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
activation_types.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
activation_types_test.go Track runtime build in license activation 2026-05-06 23:45:37 +01:00
billing_state_normalization.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
billing_state_normalization_test.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
billing_store.go Retire hosted AI quickstart runtime 2026-04-28 16:11:27 +01:00
capability_aliases.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
capability_aliases_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
cloud_paid_guardrails_test.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
commercial_migration.go fix(licensing): clear activation only on explicit revocation codes, not any 401 2026-06-11 08:34:26 +01:00
commercial_migration_test.go fix(licensing): clear activation only on explicit revocation codes, not any 401 2026-06-11 08:34:26 +01:00
contracts.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
database_source.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
database_source_test.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
dev_mode_dev.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
dev_mode_features.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
dev_mode_release.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
entitlement_lease.go Make provider-MSP client runtimes verifiably licensed via chained entitlement leases 2026-06-10 13:58:52 +01:00
entitlement_lease_test.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
entitlement_payload.go Surface paid runtime mismatch in licensing 2026-05-06 17:18:35 +01:00
entitlement_payload_test.go Surface paid runtime mismatch in licensing 2026-05-06 17:18:35 +01:00
entitlement_source.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
entitlements.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
evaluator.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
evaluator_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
feature_map.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
feature_map_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
features.go Add entitlement-gated report branding 2026-06-02 18:11:25 +01:00
features_test.go Add entitlement-gated report branding 2026-06-02 18:11:25 +01:00
grant_claims_contract_test.go Tighten MSP workspace tier limits 2026-06-01 16:55:23 +01:00
grant_refresh.go fix(licensing): clear activation only on explicit revocation codes, not any 401 2026-06-11 08:34:26 +01:00
grant_refresh_test.go fix(licensing): clear activation only on explicit revocation codes, not any 401 2026-06-11 08:34:26 +01:00
grant_verification_test.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
host_lifecycle.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
host_lifecycle_test.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
hosted_entitlement_test_helpers_test.go Fix release-mode licensing test expectations 2026-04-28 18:58:35 +01:00
hosted_subscription.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
hosted_subscription_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
http.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
http_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
legacy_v5_monitored_system_limit_aliases.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
license_server_client.go Dedupe alerts PMG queue checks, vmware clones, licensing and proxmox client clones 2026-06-10 09:49:03 +01:00
license_server_client_test.go Fix release-mode licensing test expectations 2026-04-28 18:58:35 +01:00
models.go Make provider-MSP client runtimes verifiably licensed via chained entitlement leases 2026-06-10 13:58:52 +01:00
models_test.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
monitored_system_limit.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
monitored_system_limit_test.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
overflow_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
persistence.go fix(licensing): decrypt v5.0.0-era license.enc sealed with raw machine-id material 2026-06-11 08:36:11 +01:00
persistence_test.go fix(licensing): decrypt v5.0.0-era license.enc sealed with raw machine-id material 2026-06-11 08:36:11 +01:00
provider_chain_test.go Make provider-MSP client runtimes verifiably licensed via chained entitlement leases 2026-06-10 13:58:52 +01:00
public_key.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
public_key_test.go Fix release-mode licensing test expectations 2026-04-28 18:58:35 +01:00
purchase_return.go Restrict purchase return HTTP callbacks to loopback 2026-04-22 09:49:36 +01:00
purchase_return_test.go Add self-hosted commercial continuity proof 2026-05-13 16:44:26 +01:00
quickstart_credits.go Retire hosted AI quickstart runtime 2026-04-28 16:11:27 +01:00
quickstart_credits_test.go Retire hosted AI quickstart runtime 2026-04-28 16:11:27 +01:00
revocation_poll.go fix(licensing): clear activation only on explicit revocation codes, not any 401 2026-06-11 08:34:26 +01:00
revocation_poll_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
self_hosted_feature_catalog.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
service.go fix(licensing): honor activated licenses for dev-grant-excluded features in dev mode 2026-06-10 17:09:00 +01:00
service_activate_test.go fix(licensing): honor activated licenses for dev-grant-excluded features in dev mode 2026-06-10 17:09:00 +01:00
stripe_subscription.go Parse stored subscription states for entitlement refresh 2026-05-12 15:17:53 +01:00
stripe_subscription_test.go Parse stored subscription states for entitlement refresh 2026-05-12 15:17:53 +01:00
subscription_state.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
subscription_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
subscription_transitions.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
testing_helpers.go Gate licensing test helpers out of release builds 2026-04-22 06:18:40 +01:00
token_source.go Remove monitored-system volume caps 2026-05-05 12:59:59 +01:00
token_source_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
trial_activation.go Clarify hosted entitlement signing compatibility 2026-04-28 18:47:19 +01:00
trial_activation_public_key_override_dev.go Compile out release env guardrail bypasses 2026-04-22 00:05:57 +01:00
trial_activation_public_key_override_release.go Compile out release env guardrail bypasses 2026-04-22 00:05:57 +01:00
trial_activation_release_test.go Compile out release env guardrail bypasses 2026-04-22 00:05:57 +01:00
trial_activation_test.go Clarify hosted entitlement signing compatibility 2026-04-28 18:47:19 +01:00
trial_start.go Retire self-hosted trial posture prompts 2026-04-28 17:39:09 +01:00
trial_start_test.go Retire self-hosted trial posture prompts 2026-04-28 17:39:09 +01:00
types.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
upgrade.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
upgrade_reasons.go Encode canonical self-hosted feature metadata 2026-04-23 15:30:42 +01:00
upgrade_test.go Make self-hosted SSO Community-tier 2026-05-03 12:48:01 +01:00
user_limit.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
user_limit_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00