Skip to content

test(fixtures): a third Intel TDX capture at SEAM SVN 15 (#117) - #125

Open
zohebk8s wants to merge 2 commits into
agentrust-io:mainfrom
zohebk8s:agent/tdx-capture-seam-svn-15-117
Open

test(fixtures): a third Intel TDX capture at SEAM SVN 15 (#117)#125
zohebk8s wants to merge 2 commits into
agentrust-io:mainfrom
zohebk8s:agent/tdx-capture-seam-svn-15-117

Conversation

@zohebk8s

Copy link
Copy Markdown
Contributor

What and why

The third Intel TDX capture, as agreed on #117.

Two captures cannot separate firmware movement from platform difference and three can. tdx_quote_gcp.json and tdx_quote_azure.json both report SEAM SVN 13 with byte 2 at 8 and at 4, which shows byte 2 is not the SEAM module version but cannot show whether byte 0 moves on its own. This one reports 0f 01 0a: SEAM SVN 15, byte 1 unchanged at 1, byte 2 at 10. Byte 0 moves independently, which is the finding the carried-not-judged rule in the parser change rests on.

A genuine DCAP v4 quote from a GCP c3-standard-4 confidential VM, taken through configfs TSM directly rather than through a provider, because a quote that arrived via a library is a quote plus that library's assumptions, and the fields this capture exists to settle are the ones nobody had parsed yet.

Your three conditions, met in the fixture rather than in this description

It carries its capture metadata. Kernel 7.0.0-1011-gcp, instance type c3-standard-4, zone, capture date, and that the quote came through /sys/kernel/config/tsm/report directly. The run log sits beside it at tdx_quote_gcp_seam15.run-log.txt, with the dmesg TDX lines, the CPU model, and the parsed fields at the offsets in question.

It is labelled as external. "provenance": "external" with the contributor named. The other two fixtures are this project's and this one is not, and a fixture set where that distinction is invisible is worse than one where it is written down. A test asserts the existing fixtures carry no such label and this one does.

No appraisal rule rests on it alone. A test walks the test tree and asserts no other file references this fixture, so a threshold cannot quietly come to depend on it. Every floor in the suite is set from the captures this project took itself.

Type

  • Bug fix
  • SDK feature
  • Spec change (breaking - filed an issue and allowed a comment period)
  • Docs / governance / CI

Checklist

  • Commits are DCO signed off (git commit -s)
  • pytest -q, mypy --strict src/wcm, and bandit pass locally; coverage 80% or better. 677 passed, 4 skipped; mypy clean; leak scan clean.
  • Tests cover the happy path and the failure paths for anything security-relevant. The capture verifies end to end, its offsets cross-check against the parser on its own bytes, and the three conditions above are each asserted.
  • CHANGELOG.md updated
  • No overclaiming. This is one capture from one machine on one day. It establishes that byte 0 of TEE_TCB_SVN moves independently of byte 2, and nothing else. No threshold is derived from it.

Notes for reviewers

It stands alone

The tests read the fields as raw slices of the TD report body rather than through any parsed attribute, so this fixture does not depend on the parser change in #117 and the two can land in either order without one waiting on the other.

The binding is re-derivable

REPORTDATA binds sha256(nonce) with the nonce recorded in the fixture, so you can recompute it rather than take it on trust. The capture verifies end to end and chains to Intel SGX root 44a0196b2b99f889b8e149e95b807a350e7424964399e885a7cbb8ccfab674d3, the same root both existing captures pin.

What you can check without leaving the tree

tdx_quote_gcp.json           TEE_TCB_SVN  0d 01 08    byte 0 = 13
tdx_quote_azure.json         TEE_TCB_SVN  0d 01 04    byte 0 = 13
tdx_quote_gcp_seam15.json    TEE_TCB_SVN  0f 01 0a    byte 0 = 15

Byte 1 is 01 on all three. Byte 2 differs on all three.

One correction to the record

The capture I described in the issue was taken on 9 September and the file was subsequently lost with the instance. This is a fresh capture taken on the same platform, and it reproduces the earlier reading exactly: 0f 01 0a, SEAM SVN 15. You are getting the bytes rather than my word for them, which was your argument for it landing as a fixture in the first place.

…o#117)

Two captures cannot separate firmware movement from platform difference and
three can. tdx_quote_gcp.json and tdx_quote_azure.json both report SEAM SVN 13
with byte 2 at 8 and at 4, which shows byte 2 is not the SEAM module version but
cannot show whether byte 0 moves on its own. This one reports 0f 01 0a: SEAM SVN
15, byte 1 unchanged at 1, byte 2 at 10. Byte 0 moves independently.

A genuine DCAP v4 quote from a GCP c3-standard-4 confidential VM, taken through
configfs TSM directly rather than through a provider, because a quote that
arrived via a library is a quote plus that library's assumptions and the fields
this capture exists to settle are the ones nobody had parsed yet.

Three conditions, all met in the fixture rather than in a commit message. It
carries its own provenance, kernel, instance type, zone, date and method, so a
reader three years from now knows what it is a capture of, and the run log sits
beside it. It is labelled provenance: external, because the other two are this
project's and this one is not, and a fixture set where that distinction is
invisible is worse than one where it is written down. And no appraisal rule
rests on it alone: a test asserts no other file in the suite references it.

REPORTDATA binds sha256 of a nonce recorded in the fixture, so the binding is
re-derivable rather than something a reader takes on trust. The capture verifies
end to end and chains to the same Intel SGX root both existing captures pin. The
tests read the fields as raw slices of the report body rather than through a
parsed attribute, so this fixture stands alone and can land before or after the
parser change in agentrust-io#117 without either waiting on the other.

Refs agentrust-io#117

Signed-off-by: Mohammed Zoheb Shaik <zoheb.shaik7@gmail.com>
@zohebk8s
zohebk8s requested review from a team as code owners September 12, 2026 19:57
…m-svn-15-117

Signed-off-by: Mohammed Zoheb Shaik <zoheb.shaik7@gmail.com>

# Conflicts:
#	CHANGELOG.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants