[release/6.x] Backport: Turin support (#7295, #7264, #7449, #7748, #7749)#7752
Merged
achamayou merged 10 commits intomicrosoft:release/6.xfrom Mar 19, 2026
Merged
[release/6.x] Backport: Turin support (#7295, #7264, #7449, #7748, #7749)#7752achamayou merged 10 commits intomicrosoft:release/6.xfrom
achamayou merged 10 commits intomicrosoft:release/6.xfrom
Conversation
Co-authored-by: Eddy Ashton <ashton.eddy@gmail.com> Co-authored-by: Amaury Chamayou <amaury@xargs.fr>
Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
Co-authored-by: Amaury Chamayou <amaury@xargs.fr> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Backports a set of upstream changes to add/complete AMD SEV-SNP “Turin” support in the 6.x release branch, spanning CPUID mapping, endorsements fetching/validation, tests, and documentation.
Changes:
- Add Turin CPUID/product mapping + regression tests and update minimum TCB guidance/docs.
- Update SNP endorsements URL generation to include Turin-specific fields (eg
fmcSPL) and handle Turin chip-id shortening for VCEK fetch. - Refactor SNP attestation verification to validate the endorsement certificate chain earlier; add a standalone
verify_attestationfetch+verify utility.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
src/pal/test/verify_attestation.cpp |
New CLI utility to fetch AMD endorsements and verify an SNP quote. |
src/pal/test/snp_attestation_validation_data.h |
Adds Turin attestation + endorsement cert chain test vectors. |
src/pal/test/snp_attestation_validation.cpp |
Adds Turin validation + CPUID roundtrip tests; simplifies exception assertion. |
src/pal/attestation.cpp |
Refactors SNP attestation verification ordering (cert chain first), updates chip-id comparison for Turin. |
src/node/quote_endorsements_client.h |
Adjusts client construction (drops RPCSessions parameter) and related includes. |
src/node/node_state.h |
Updates endorsements client instantiation to match new constructor signature. |
src/http/error_reporter.h |
Adds missing include for referenced CCF types; formatting fix. |
scripts/fetch_amd_collateral.py |
Adds Turin handling for AMD KDS URLs (short hwid + fmcSPL) and CLI choices. |
include/ccf/pal/sev_snp_cpuid.h |
Fixes Turin model/CPUID mapping + documents sources. |
include/ccf/pal/attestation_sev_snp_endorsements.h |
Adds optional fmcSPL parameter for AMD endorsements endpoints. |
include/ccf/pal/attestation_sev_snp.h |
Enables Turin root key; adds get_chip_id_for_vcek() and passes Turin fmc into AMD URL generation. |
doc/operations/platforms/snp.rst |
Updates example minimum TCB version and adds a CPUID/TCB table including Turin. |
CMakeLists.txt |
Builds + installs new verify_attestation binary. |
CHANGELOG.md |
Notes Turin attestation support backport. |
Comments suppressed due to low confidence (2)
scripts/fetch_amd_collateral.py:29
make_host_amd_blobnow emits "cacheControl": 0 (number), but the corresponding C++ACIReportEndorsements.cache_controlfield is declared as a string and JSON parsing expects a string. This change will make the script output incompatible unless the C++ JSON type is updated (or this is reverted to a string).
def make_host_amd_blob(tcbm, leaf, chain):
return json.dumps(
{
"cacheControl": 0,
"tcbm": tcbm.upper(),
"vcekCert": leaf,
"certificateChain": chain,
}
include/ccf/pal/attestation_sev_snp.h:553
- Same as above: this default branch formats
productdirectly in the exception message, likely resulting in an integer value. Use to_string(product) for readability/consistency (or remove the default if it is unreachable).
default:
{
throw std::logic_error(
fmt::format("Unsupported SEV-SNP product: {}", product));
}
You can also share your feedback on Copilot code review. Take the survey.
achamayou
approved these changes
Mar 19, 2026
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.
Backport (#7295, #7264, #7449, #7748, #7749)
It turns out that I had missed backporting several of the Turin support PRs.
So now to backport them simultaneously.