Skip to content

Support SVSM Attestation Report#182

Open
tlisanti wants to merge 2 commits intogoogle:mainfrom
confidentsecurity:support-svsm-report
Open

Support SVSM Attestation Report#182
tlisanti wants to merge 2 commits intogoogle:mainfrom
confidentsecurity:support-svsm-report

Conversation

@tlisanti
Copy link
Copy Markdown

@tlisanti tlisanti commented Dec 1, 2025

Adds an SVSMQuoteProvider interface, which represents a client in the SVSM attestation protocol as described in the Secure VM Service Module for SEV-SNP Guests specification to retrieve a quote.

Updates the LinuxConfigFsQuoteProvider class to implement SVSMQuoteProvider by adding on the GetRawQuoteSVSM() method, which behaves similarly to the GetRawQuote() method in that it uses the linuxtsm.GetReport() library call to get a report from the TPM.

  • Additionally, when it requests the report, it will pass in svsm as the ServiceProvider, which will prompt the OS to use the SVSM SVSM_ATTEST_SERVICES protocol when retrieving the report. As described in Section 7.1 of the specification, "This call is used to request a VMPL0 attestation report that includes a services manifest of the services that are running in the SVSM as part of the report data".

Adds the abi_svsm.go file, which defines the ServicesManifest type, which is used to parse the services manifest returned by the SVSM into a human readable format, including protobuf.

  • Updates the Attestation message in sevsnp.proto to include an optional ServicesManifest field

Comment thread abi/abi.go
return nil, err
}

var manifest []uint8
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi can we clarify whether the Services Manifest is guaranteed to be present for all responses? The current implementation assumes it is always present, but the code path will fail if manifest = nil.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking a look. I don't think the services manifest is guaranteed to exist, so I changed the implementation to work if it's nil.

@jmomort
Copy link
Copy Markdown

jmomort commented Feb 11, 2026

@onlyshawn anything we can do to move this along?

@jxu023
Copy link
Copy Markdown

jxu023 commented Feb 25, 2026

@jmomort Sorry on delay here, i'll look to review and test it this week on an SVSM VM and then will move to push merging it

@jxu023
Copy link
Copy Markdown

jxu023 commented Feb 25, 2026

I'd previously added SVSM support into go-tpm-tools directly by making use of go-configfs-tsm rather than implementing the QuoteProvider interface; but it sounds fine to also support the quote provider interface too

See google/go-tpm-tools#600

@tlisanti @jmomort

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.

4 participants