Skip to content
This repository was archived by the owner on Aug 3, 2026. It is now read-only.

fix: unblock real attestation generation (op2 issues 1-3) - #40

Merged
bitzic merged 2 commits into
mainfrom
fix/op2-attestation-gen
Jun 22, 2026
Merged

fix: unblock real attestation generation (op2 issues 1-3)#40
bitzic merged 2 commits into
mainfrom
fix/op2-attestation-gen

Conversation

@bitzic

@bitzic bitzic commented Jun 22, 2026

Copy link
Copy Markdown
Contributor
  • Attestation() now named -> non-empty NRAS GPU token (nv-sdk 2.7.3)
  • gpu_sdk_nonce(): strip 0x/lowercase for the SDK + token-nonce compare
  • TDX quote: pre-provisioned RALPH_TSM_REPORT_PATH for non-root runs
  • actionable error + trustauthority fallback on configfs perm denial
  • TDX keeps the full nonce for report_data binding (GPU uses 64-hex)
  • verify path stays fail-closed on mainnet (Issue 4 verify is separate)
  • reported by external miner on real Intel TDX + H100-CC hardware

- Attestation() now named -> non-empty NRAS GPU token (nv-sdk 2.7.3)
- gpu_sdk_nonce(): strip 0x/lowercase for the SDK + token-nonce compare
- TDX quote: pre-provisioned RALPH_TSM_REPORT_PATH for non-root runs
- actionable error + trustauthority fallback on configfs perm denial
- TDX keeps the full nonce for report_data binding (GPU uses 64-hex)
- verify path stays fail-closed on mainnet (Issue 4 verify is separate)
- reported by external miner on real Intel TDX + H100-CC hardware

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@bitzic
bitzic force-pushed the fix/op2-attestation-gen branch from 89a1b8b to 46db1b3 Compare June 22, 2026 13:01
@gho11123

Copy link
Copy Markdown
Contributor

op2 still REJECTS all 3 — two remaining causes

op2 MAINNET      : rejected :: "GPU token signature verification not implemented…"     (epoch 0)
op2 TESTNET-stub : rejected :: "GPU token decode failed: Invalid header string: 'utf…'" (epoch 0)

Issue (known, NOT in PR #40). On mainnet verify_gpu_token / verify_tdx_quote are fail-closed
stubs (proof/real_attest.py ~327 / ~382). NRAS JWKS + Intel TDX verification still unimplemented →
no real attestation can pass. This is the real gate.

get_token() returns the detached-EAT bundle [["JWT",<outer>],{detached}],
not a bare JWT, so the testnet-stub verify_gpu_token fed the whole bundle
to jwt.decode -> "Invalid header string" (miner report on real CC H100).

- add _extract_gpu_jwt: pull the outer JWT (handles bundle / json-str / bare)
- decode the inner JWT in the stub path; prefer the eat_nonce claim
- lets miners validate generation -> stub-verify end-to-end on testnet
- (full bundle + detached + JWKS verify is Part B)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@bitzic

bitzic commented Jun 22, 2026

Copy link
Copy Markdown
Contributor Author

Confirmed — thank you @gho11123 , this is exactly the signal we needed.

Part A works as intended. Your mainnet result ("GPU token signature verification not implemented") means generation now succeeds and reaches the verifier. That's Issue 4 (the verify stub), deliberately out of scope for this PR.

Your testnet-stub error was a real bug — great catch, and it's now fixed (pushed to this PR, 0b42b34). get_token() returns the detached-EAT bundle, the stub was decoding the whole bundle. It now parses out the inner JWT.

The real mainnet gate is Part B (NRAS JWKS + Intel DCAP verification). To build + test it offline we need one golden fixture from your CC H100 — you're now generating a real token, so you're perfectly placed. After a run, please send: the attestation.json, a snapshot of https://nras.attestation.nvidia.com/.well-known/jwks.json, and (if handy) the Intel collateral for the quote's FMSPC + GPU driver/VBIOS versions. That unblocks Part B. Thank you — you've moved this further than anyone.

@bitzic
bitzic merged commit 05b63b7 into main Jun 22, 2026
4 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants