Description: SPDM responder shall return valid DIGESTS, if it receives a GET_DIGESTS.
SPDM Version: 1.0+
TestSetup:
- Requester -> GET_VERSION {SPDMVersion=0x10}
- VERSION <- Responder
- Requester -> GET_CAPABILITIES {SPDMVersion=NegotiatedVersion, ...}
- CAPABILITIES <- Responder
- If Flags.CERT_CAP == 0, then skip this case.
- Requester -> NEGOTIATE_ALGORITHMS {SPDMVersion=NegotiatedVersion, ...}
- ALGORITHMS <- Responder
TestTeardown: None
Steps:
- Requester -> GET_DIGESTS {SPDMVersion=NegotiatedVersion, Param1=0, Param2=0}
- SpdmMessage <- Responder
Assertion 4.1.1: sizeof(SpdmMessage) >= offset(DIGESTS, Digest[0])
Assertion 4.1.2: SpdmMessage.RequestResponseCode == DIGESTS
Assertion 4.1.3: SpdmMessage.SPDMVersion == NegotiatedVersion
Assertion 4.1.4: SpdmMessage.Param2.SlotMask.bit_0 == 1
Assertion 4.1.5: SlotCount = bit number of SpdmMessage.Param2.SlotMask sizeof(SpdmMessage) >= offset(DIGESTS, Digest[0]) + HashSize * SlotCount
Description: SPDM responder shall return ERROR(VersionMismatch), if it receives a GET_DIGESTS with non negotiated version.
SPDM Version: 1.0+
TestSetup:
- Requester -> GET_VERSION {SPDMVersion=0x10}
- VERSION <- Responder
- Requester -> GET_CAPABILITIES {SPDMVersion=NegotiatedVersion, ...}
- CAPABILITIES <- Responder
- If Flags.CERT_CAP == 0, then skip this case.
- Requester -> NEGOTIATE_ALGORITHMS {SPDMVersion=NegotiatedVersion, ...}
- ALGORITHMS <- Responder
TestTeardown: None
Steps:
- Requester -> GET_DIGESTS {SPDMVersion=(NegotiatedVersion+1), ...}
- SpdmMessage <- Responder
Assertion 4.2.1: sizeof(SpdmMessage) >= sizeof(ERROR)
Assertion 4.2.2: SpdmMessage.RequestResponseCode == ERROR
Assertion 4.2.3: SpdmMessage.SPDMVersion == NegotiatedVersion
Assertion 4.2.4: SpdmMessage.Param1 == VersionMismatch.
Assertion 4.2.5: SpdmMessage.Param2 == 0.
- Requester -> GET_DIGESTS {SPDMVersion=(NegotiatedVersion-1), ...}
- SpdmMessage <- Responder
Assertion 4.2.*.
Description: SPDM responder shall return ERROR(UnexpectedRequest), if it receives a GET_DIGESTS before NEGOTIATE_ALGORITHMS.
SPDM Version: 1.0+
TestSetup:
- Requester -> GET_VERSION {SPDMVersion=0x10}
- VERSION <- Responder
- Requester -> GET_CAPABILITIES {SPDMVersion=NegotiatedVersion, ...}
- CAPABILITIES <- Responder
- If Flags.CERT_CAP == 0, then skip this case.
TestTeardown: None
Steps:
- Requester -> GET_DIGESTS {SPDMVersion=NegotiatedVersion, ...}
- SpdmMessage <- Responder
Assertion 4.3.1: sizeof(SpdmMessage) >= sizeof(ERROR)
Assertion 4.3.2: SpdmMessage.RequestResponseCode == ERROR
Assertion 4.3.3: SpdmMessage.SPDMVersion == NegotiatedVersion
Assertion 4.3.4: SpdmMessage.Param1 == UnexpectedRequest.
Assertion 4.3.5: SpdmMessage.Param2 == 0.