Skip to content

feat(node): Attest RPC + managed-state config (FM enrollment)#168

Merged
Bugs5382 merged 3 commits into
mainfrom
feat/167-enrollment-node
Jul 16, 2026
Merged

feat(node): Attest RPC + managed-state config (FM enrollment)#168
Bugs5382 merged 3 commits into
mainfrom
feat/167-enrollment-node

Conversation

@Bugs5382

Copy link
Copy Markdown
Contributor

What and why

Phase 2 (engine) of FM enrollment slice B (manager #21), consuming the merged api contract (api #46).

  • Attest RPC — the node signs a manager-supplied nonce with its CA identity key (ceremony RootSigner; TPM-resident on TPM nodes, software on nodeID) over a SHA-384 digest, and returns the ASN.1 signature + the identity public key (PKIX/DER). Admin-authorized; Unimplemented in maintenance mode; empty nonce rejected. This is the challenge-response the Fleet Manager verifies and TOFU-pins. The production attester reuses the same node.KeyLoaderRootKeyBackend.LoadKey path as issuance/rekey/revoke and closes the signer per call. ek_pub/ek_cert reserved for v1.1 TPM-EK attestation (unset).
  • Managed-state configConfig.Management { manager_cn, trust_pem, operator_surface_readonly }, carried symmetrically through ToProto/FromProto and validated, so a LINK enrollment can mark a node FM-managed via ApplyConfig (effective on reboot).

No EK/AK primitives (v1.1). Merge order: api (done) → this → manager → web.

Closes #167

Verification

  • task ci (gofmt/vet/golangci-lint/test/build) green
  • task license 0 flagged
  • Attest handler tests (nil→Unimplemented, empty→InvalidArgument, unauthorized→PermissionDenied, delegate) + real ECDSA-P384 sign/verify round-trip
  • Config round-trip tests (populated survives ToProto→FromProto; nil stays nil) + Validate

How this was verified

Security-focused opus review of Attest (signing correctness, no key leakage, authz-before-key, maintenance-nil) + a whole-branch opus review (config round-trip symmetric/proven, Attester wired only on the running node, no regressions across NodeService). Live attestation verify lands in Phase 3 (manager) + the pre-GOLD validation.

@Bugs5382 Bugs5382 self-assigned this Jul 16, 2026
@github-actions github-actions Bot added the enhancement New feature (feat). Minor version bump. label Jul 16, 2026
@Bugs5382 Bugs5382 added this to the v1.0.0 milestone Jul 16, 2026
@Bugs5382 Bugs5382 merged commit 230a468 into main Jul 16, 2026
13 checks passed
@Bugs5382 Bugs5382 deleted the feat/167-enrollment-node branch July 16, 2026 11:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature (feat). Minor version bump.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(node): Attest RPC + managed-state config (FM enrollment)

1 participant