feat(node): Attest RPC + managed-state config (FM enrollment)#168
Merged
Conversation
Bumps the api dep to the merged Attest contract; the handler + production attester satisfy the regenerated NodeServiceServer.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
Phase 2 (engine) of FM enrollment slice B (manager #21), consuming the merged api contract (api #46).
AttestRPC — the node signs a manager-supplied nonce with its CA identity key (ceremonyRootSigner; 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;Unimplementedin maintenance mode; empty nonce rejected. This is the challenge-response the Fleet Manager verifies and TOFU-pins. The production attester reuses the samenode.KeyLoader→RootKeyBackend.LoadKeypath as issuance/rekey/revoke and closes the signer per call.ek_pub/ek_certreserved for v1.1 TPM-EK attestation (unset).Config.Management { manager_cn, trust_pem, operator_surface_readonly }, carried symmetrically throughToProto/FromProtoand validated, so a LINK enrollment can mark a node FM-managed viaApplyConfig(effective on reboot).No EK/AK primitives (v1.1). Merge order: api (done) → this → manager → web.
Closes #167
Verification
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.