Documentation
¶
Overview ¶
Package testing defines fakes and mocks for the sev-guest device and AMD-SP.
Index ¶
- func DefaultArk() (*rsa.PrivateKey, error)
- func DefaultAsk() (*rsa.PrivateKey, error)
- func DefaultVcek() (*ecdsa.PrivateKey, error)
- func TestRawReport(userData [64]byte) [labi.SnpReportRespReportSize]byte
- type AmdKeys
- type AmdSigner
- type AmdSignerBuilder
- type CertOverride
- type Device
- type GetReportResponse
- type Getter
- type TestCase
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultArk ¶
func DefaultArk() (*rsa.PrivateKey, error)
DefaultArk returns a new RSA key with the expected size for an ARK.
func DefaultAsk ¶
func DefaultAsk() (*rsa.PrivateKey, error)
DefaultAsk returns a new RSA key with the expected size for an ASK.
func DefaultVcek ¶
func DefaultVcek() (*ecdsa.PrivateKey, error)
DefaultVcek returns a new ECDSA key on the expected curve for a VCEK.
func TestRawReport ¶ added in v0.2.1
func TestRawReport(userData [64]byte) [labi.SnpReportRespReportSize]byte
We can't sign the report with AMD keys, and verification isn't the client's responsibility, so we keep the signature zeros. Similarly, we leave the randomly-generated fields zero.
Types ¶
type AmdKeys ¶
type AmdKeys struct { Ark *rsa.PrivateKey Ask *rsa.PrivateKey Vcek *ecdsa.PrivateKey }
AmdKeys encapsulates the key chain of ARK through ASK down to VCEK.
func DefaultAmdKeys ¶
DefaultAmdKeys returns a key set for ARK, ASK, and VCEK with the expected key type and size.
type AmdSigner ¶
type AmdSigner struct { Ark *x509.Certificate Ask *x509.Certificate Vcek *x509.Certificate Keys *AmdKeys }
AmdSigner encapsulates a key and certificate chain following the format of AMD-SP's VCEK for signing attestation reports.
func DefaultCertChain ¶
DefaultCertChain creates a test-only certificate chain for a fake attestation signer.
func (*AmdSigner) CertTableBytes ¶
CertTableBytes outputs the certificates in AMD's ABI format.
type AmdSignerBuilder ¶
type AmdSignerBuilder struct { // Keys contains the private keys that will get a certificate chain structure. Keys *AmdKeys Product string ArkCreationTime time.Time AskCreationTime time.Time VcekCreationTime time.Time ArkCustom CertOverride AskCustom CertOverride VcekCustom CertOverride // Intermediate built certificates Ark *x509.Certificate Ask *x509.Certificate Vcek *x509.Certificate }
AmdSignerBuilder represents toggleable configurations of the VCEK certificate chain.
func (*AmdSignerBuilder) CertChain ¶
func (b *AmdSignerBuilder) CertChain() (*AmdSigner, error)
CertChain creates a test-only certificate chain from the keys and configurables in b.
type CertOverride ¶
type CertOverride struct { // If 0, interpreted as Version, otherwise the ARK cert version number. Version int SerialNumber *big.Int Issuer *pkix.Name Subject *pkix.Name SignatureAlgorithm x509.SignatureAlgorithm PublicKeyAlgorithm x509.PublicKeyAlgorithm KeyUsage x509.KeyUsage // If nil, interpreted as default, otherwise the CRLDistributionPoints for the cert. CRLDistributionPoints []string // If nil, interpreted as default list. Extensions []pkix.Extension }
CertOverride encapsulates certificate aspects that can be overriden when creating a certificate chain.
type Device ¶
type Device struct { UserDataRsp map[string]interface{} Certs []byte Signer *AmdSigner // contains filtered or unexported fields }
Device represents a sev-guest driver implementation with pre-programmed responses to commands.
func TcDevice ¶
TcDevice returns a mock device populated from test cases' inputs and expected outputs.
type GetReportResponse ¶
type GetReportResponse struct { Resp labi.SnpReportRespABI EsResult labi.EsResult FwErr abi.SevFirmwareStatus }
GetReportResponse represents a mocked response to a command request.