Skip to content

Commit a4b76fa

Browse files
committed
Add key update test.
Signed-off-by: Jiewen Yao <[email protected]>
1 parent 81bcaee commit a4b76fa

9 files changed

+1038
-327
lines changed

doc/12.HeartbeatAck.md

+17-60
Original file line numberDiff line numberDiff line change
@@ -43,49 +43,6 @@ Assertion 12.1.3:
4343

4444
### Case 12.2
4545

46-
Description: SPDM responder shall return ERROR or ignore, if it receives a HEARTBEAT after session is terminated in DHE session.
47-
48-
SPDM Version: 1.1+
49-
50-
TestSetup:
51-
1. Requester -> GET_VERSION {SPDMVersion=0x10}
52-
2. VERSION <- Responder
53-
3. If 1.1 or above is not in VERSION.VersionNumberEntry, then skip this case.
54-
4. Requester -> GET_CAPABILITIES {SPDMVersion=NegotiatedVersion, ...}
55-
5. CAPABILITIES <- Responder
56-
6. If Flags.HBEAT_CAP == 0 || Flags.KEY_EX_CAP == 0, then skip this case.
57-
7. Requester -> NEGOTIATE_ALGORITHMS {SPDMVersion=NegotiatedVersion, ...}
58-
8. ALGORITHMS <- Responder
59-
9. Requester -> GET_DIGESTS {SPDMVersion=NegotiatedVersion, ...}
60-
10. DIGESTS <- Responder
61-
11. ValidSlotID[] = array of bit-index that SlotMask[bit-index]=1 from DIGEST.Param2.SlotMask
62-
12. Requester -> GET_CERTIFICATE {SPDMVersion=NegotiatedVersion, Param1.SlotID=ValidSlotID[i], ...}
63-
13. CERTIFICATE <- Responder
64-
14. Requester -> KEY_EXCHANGE {SPDMVersion=NegotiatedVersion, ...}
65-
15. KEY_EXCHANGE_RSP <- Responder
66-
16. If KEY_EXCHANGE_RSP.Param1.HeartbeatPeriod == 0, then skip this case.
67-
17. Requester -> FINISH {SPDMVersion=NegotiatedVersion, ...} in session-X
68-
18. FINISH_RSP <- Responder in session-X
69-
19. Requester -> END_SESSION {SPDMVersion=NegotiatedVersion, ...} in session-X
70-
20. END_SESSION_ACK <- Responder in session-X
71-
72-
TestTeardown: None
73-
74-
Steps:
75-
1. Requester -> HEARTBEAT {SPDMVersion=NegotiatedVersion, ...} in session-X
76-
2. SpdmMessage <- Responder in session-X
77-
78-
Assertion 12.2.1:
79-
SpdmMessage == NUL || sizeof(SpdmMessage) >= sizeof(ERROR)
80-
81-
Assertion 12.2.2:
82-
SpdmMessage.RequestResponseCode == ERROR, if SpdmMessage != NUL
83-
84-
Assertion 12.2.3:
85-
SpdmMessage.SPDMVersion == NegotiatedVersion, if SpdmMessage != NUL
86-
87-
### Case 12.3
88-
8946
Description: SPDM responder shall return ERROR(VersionMismatch), if it receives a HEARTBEAT with non negotiated version in DHE session.
9047

9148
SPDM Version: 1.1+
@@ -116,27 +73,27 @@ Steps:
11673
1. Requester -> HEARTBEAT {SPDMVersion=(NegotiatedVersion+1), ...} in session-X
11774
2. SpdmMessage <- Responder in session-X
11875

119-
Assertion 12.3.1:
76+
Assertion 12.2.1:
12077
sizeof(SpdmMessage) >= sizeof(ERROR)
12178

122-
Assertion 12.3.2:
79+
Assertion 12.2.2:
12380
SpdmMessage.RequestResponseCode == ERROR
12481

125-
Assertion 12.3.3:
82+
Assertion 12.2.3:
12683
SpdmMessage.SPDMVersion == NegotiatedVersion
12784

128-
Assertion 12.3.4:
85+
Assertion 12.2.4:
12986
SpdmMessage.Param1 == VersionMismatch.
13087

131-
Assertion 12.3.5:
88+
Assertion 12.2.5:
13289
SpdmMessage.Param2 == 0.
13390

13491
3. Requester -> HEARTBEAT {SPDMVersion=(NegotiatedVersion-1), ...} in session-X
13592
4. SpdmMessage <- Responder in session-X
13693

137-
Assertion 12.3.*.
94+
Assertion 12.2.*.
13895

139-
### Case 12.4
96+
### Case 12.3
14097

14198
Description: SPDM responder shall return ERROR(UnexpectedRequest), if it receives a HEARTBEAT in DHE session handshake.
14299

@@ -166,22 +123,22 @@ Steps:
166123
1. Requester -> HEARTBEAT {SPDMVersion=NegotiatedVersion, Param1=0, Param2=0} in session-X
167124
2. SpdmMessage <- Responder in session-X
168125

169-
Assertion 12.4.1:
126+
Assertion 12.3.1:
170127
sizeof(SpdmMessage) >= sizeof(ERROR)
171128

172-
Assertion 12.4.2:
129+
Assertion 12.3.2:
173130
SpdmMessage.RequestResponseCode == ERROR
174131

175-
Assertion 12.4.3:
132+
Assertion 12.3.3:
176133
SpdmMessage.SPDMVersion == NegotiatedVersion
177134

178-
Assertion 12.4.4:
135+
Assertion 12.3.4:
179136
SpdmMessage.Param1 == UnexpectedRequest.
180137

181-
Assertion 12.4.5:
138+
Assertion 12.3.5:
182139
SpdmMessage.Param2 == 0.
183140

184-
### Case 12.5
141+
### Case 12.4
185142

186143
Description: SPDM responder shall return ERROR(SessionRequired), if it receives a HEARTBEAT in non-session.
187144

@@ -203,14 +160,14 @@ Steps:
203160
1. Requester -> HEARTBEAT {SPDMVersion=NegotiatedVersion, Param1=0, Param2=0}
204161
2. SpdmMessage <- Responder
205162

206-
Assertion 12.5.1:
163+
Assertion 12.4.1:
207164
sizeof(SpdmMessage) >= sizeof(ERROR)
208165

209-
Assertion 12.5.2:
166+
Assertion 12.4.2:
210167
SpdmMessage.RequestResponseCode == ERROR
211168

212-
Assertion 12.5.3:
169+
Assertion 12.4.3:
213170
SpdmMessage.SPDMVersion == NegotiatedVersion
214171

215-
Assertion 12.5.4:
172+
Assertion 12.4.4:
216173
SpdmMessage.Param1 == SessionRequired.

doc/16.EndSessionAck.md

+17-59
Original file line numberDiff line numberDiff line change
@@ -42,48 +42,6 @@ Assertion 16.1.3:
4242

4343
### Case 16.2
4444

45-
Description: SPDM responder shall return ERROR or ignore, if it receives a END_SESSION after session is terminated in DHE session.
46-
47-
SPDM Version: 1.1+
48-
49-
TestSetup:
50-
1. Requester -> GET_VERSION {SPDMVersion=0x10}
51-
2. VERSION <- Responder
52-
3. If 1.1 or above is not in VERSION.VersionNumberEntry, then skip this case.
53-
4. Requester -> GET_CAPABILITIES {SPDMVersion=NegotiatedVersion, ...}
54-
5. CAPABILITIES <- Responder
55-
6. If Flags.KEY_EX_CAP == 0, then skip this case.
56-
7. Requester -> NEGOTIATE_ALGORITHMS {SPDMVersion=NegotiatedVersion, ...}
57-
8. ALGORITHMS <- Responder
58-
9. Requester -> GET_DIGESTS {SPDMVersion=NegotiatedVersion, ...}
59-
10. DIGESTS <- Responder
60-
11. ValidSlotID[] = array of bit-index that SlotMask[bit-index]=1 from DIGEST.Param2.SlotMask
61-
12. Requester -> GET_CERTIFICATE {SPDMVersion=NegotiatedVersion, Param1.SlotID=ValidSlotID[i], ...}
62-
13. CERTIFICATE <- Responder
63-
14. Requester -> KEY_EXCHANGE {SPDMVersion=NegotiatedVersion, ...}
64-
15. KEY_EXCHANGE_RSP <- Responder
65-
16. Requester -> FINISH {SPDMVersion=NegotiatedVersion, ...}
66-
17. FINISH_RSP <- Responder
67-
18. Requester -> END_SESSION {SPDMVersion=NegotiatedVersion, ...} in session-X
68-
19. END_SESSION_ACK <- Responder in session-X
69-
70-
TestTeardown: None
71-
72-
Steps:
73-
1. Requester -> END_SESSION {SPDMVersion=NegotiatedVersion, ...} in session-X
74-
2. SpdmMessage <- Responder in session-X
75-
76-
Assertion 16.2.1:
77-
SpdmMessage == NUL || sizeof(SpdmMessage) >= sizeof(ERROR)
78-
79-
Assertion 16.2.2:
80-
SpdmMessage.RequestResponseCode == ERROR, if SpdmMessage != NUL
81-
82-
Assertion 16.2.3:
83-
SpdmMessage.SPDMVersion == NegotiatedVersion, if SpdmMessage != NUL
84-
85-
### Case 16.3
86-
8745
Description: SPDM responder shall return ERROR(VersionMismatch), if it receives a END_SESSION with non negotiated version in DHE session.
8846

8947
SPDM Version: 1.1+
@@ -113,27 +71,27 @@ Steps:
11371
1. Requester -> END_SESSION {SPDMVersion=(NegotiatedVersion+1), ...} in session-X
11472
2. SpdmMessage <- Responder in session-X
11573

116-
Assertion 16.3.1:
74+
Assertion 16.2.1:
11775
sizeof(SpdmMessage) >= sizeof(ERROR)
11876

119-
Assertion 16.3.2:
77+
Assertion 16.2.2:
12078
SpdmMessage.RequestResponseCode == ERROR
12179

122-
Assertion 16.3.3:
80+
Assertion 16.2.3:
12381
SpdmMessage.SPDMVersion == NegotiatedVersion
12482

125-
Assertion 16.3.4:
83+
Assertion 16.2.4:
12684
SpdmMessage.Param1 == VersionMismatch.
12785

128-
Assertion 16.3.5:
86+
Assertion 16.2.5:
12987
SpdmMessage.Param2 == 0.
13088

13189
3. Requester -> END_SESSION {SPDMVersion=(NegotiatedVersion-1), ...} in session-X
13290
4. SpdmMessage <- Responder in session-X
13391

134-
Assertion 16.3.*.
92+
Assertion 16.2.*.
13593

136-
### Case 16.4
94+
### Case 16.3
13795

13896
Description: SPDM responder shall return ERROR(UnexpectedRequest), if it receives a END_SESSION in DHE session handshake.
13997

@@ -162,22 +120,22 @@ Steps:
162120
1. Requester -> END_SESSION {SPDMVersion=NegotiatedVersion, Param1.StatePreservation=0, Param2=0} in session-X
163121
2. SpdmMessage <- Responder in session-X
164122

165-
Assertion 16.4.1:
123+
Assertion 16.3.1:
166124
sizeof(SpdmMessage) >= sizeof(ERROR)
167125

168-
Assertion 16.4.2:
126+
Assertion 16.3.2:
169127
SpdmMessage.RequestResponseCode == ERROR
170128

171-
Assertion 16.4.3:
129+
Assertion 16.3.3:
172130
SpdmMessage.SPDMVersion == NegotiatedVersion
173131

174-
Assertion 16.4.4:
132+
Assertion 16.3.4:
175133
SpdmMessage.Param1 == UnexpectedRequest.
176134

177-
Assertion 16.4.5:
135+
Assertion 16.3.5:
178136
SpdmMessage.Param2 == 0.
179137

180-
### Case 16.9
138+
### Case 16.4
181139

182140
Description: SPDM responder shall return ERROR(SessionRequired), if it receives a END_SESSION in non-session.
183141

@@ -199,14 +157,14 @@ Steps:
199157
1. Requester -> END_SESSION {SPDMVersion=NegotiatedVersion, Param1.StatePreservation=0, Param2=0}
200158
2. SpdmMessage <- Responder
201159

202-
Assertion 16.5.1:
160+
Assertion 16.4.1:
203161
sizeof(SpdmMessage) >= sizeof(ERROR)
204162

205-
Assertion 16.5.2:
163+
Assertion 16.4.2:
206164
SpdmMessage.RequestResponseCode == ERROR
207165

208-
Assertion 16.5.3:
166+
Assertion 16.4.3:
209167
SpdmMessage.SPDMVersion == NegotiatedVersion
210168

211-
Assertion 16.5.4:
169+
Assertion 16.4.4:
212170
SpdmMessage.Param1 == SessionRequired.

include/library/spdm_responder_conformance_test_lib.h

+6-8
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,9 @@ void spdm_responder_conformance_test (void *spdm_context, const common_test_suit
113113

114114
#define SPDM_RESPONDER_TEST_GROUP_HEARTBEAT_ACK 12
115115
#define SPDM_RESPONDER_TEST_CASE_HEARTBEAT_ACK_SUCCESS_11_IN_DHE_SESSION 1
116-
#define SPDM_RESPONDER_TEST_CASE_HEARTBEAT_ACK_SESSION_CLOSE_IN_DHE_SESSION 2
117-
#define SPDM_RESPONDER_TEST_CASE_HEARTBEAT_ACK_VERSION_MISMATCH_IN_DHE_SESSION 3
118-
#define SPDM_RESPONDER_TEST_CASE_HEARTBEAT_ACK_UNEXPECTED_REQUEST_IN_DHE_SESSION_HS 4
119-
#define SPDM_RESPONDER_TEST_CASE_HEARTBEAT_ACK_SESSION_REQUIRED 5
116+
#define SPDM_RESPONDER_TEST_CASE_HEARTBEAT_ACK_VERSION_MISMATCH_IN_DHE_SESSION 2
117+
#define SPDM_RESPONDER_TEST_CASE_HEARTBEAT_ACK_UNEXPECTED_REQUEST_IN_DHE_SESSION_HS 3
118+
#define SPDM_RESPONDER_TEST_CASE_HEARTBEAT_ACK_SESSION_REQUIRED 4
120119

121120
#define SPDM_RESPONDER_TEST_GROUP_KEY_UPDATE_ACK 13
122121
#define SPDM_RESPONDER_TEST_CASE_KEY_UPDATE_ACK_SUCCESS_11_IN_DHE_SESSION 1
@@ -127,9 +126,8 @@ void spdm_responder_conformance_test (void *spdm_context, const common_test_suit
127126

128127
#define SPDM_RESPONDER_TEST_GROUP_END_SESSION_ACK 16
129128
#define SPDM_RESPONDER_TEST_CASE_END_SESSION_ACK_SUCCESS_11_IN_DHE_SESSION 1
130-
#define SPDM_RESPONDER_TEST_CASE_END_SESSION_ACK_SESSION_CLOSE_IN_DHE_SESSION 2
131-
#define SPDM_RESPONDER_TEST_CASE_END_SESSION_ACK_VERSION_MISMATCH_IN_DHE_SESSION 3
132-
#define SPDM_RESPONDER_TEST_CASE_END_SESSION_ACK_UNEXPECTED_REQUEST_IN_DHE_SESSION_HS 4
133-
#define SPDM_RESPONDER_TEST_CASE_END_SESSION_ACK_SESSION_REQUIRED 5
129+
#define SPDM_RESPONDER_TEST_CASE_END_SESSION_ACK_VERSION_MISMATCH_IN_DHE_SESSION 2
130+
#define SPDM_RESPONDER_TEST_CASE_END_SESSION_ACK_UNEXPECTED_REQUEST_IN_DHE_SESSION_HS 3
131+
#define SPDM_RESPONDER_TEST_CASE_END_SESSION_ACK_SESSION_REQUIRED 4
134132

135133
#endif

library/spdm_responder_conformance_test_lib/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ SET(src_spdm_responder_conformance_test_lib
1616
spdm_responder_test_6_challenge_auth.c
1717
spdm_responder_test_7_measurements.c
1818
spdm_responder_test_12_heartbeat_ack.c
19+
spdm_responder_test_13_key_update_ack.c
1920
spdm_responder_test_16_end_session_ack.c
2021
spdm_responder_test_support.c
2122
)

library/spdm_responder_conformance_test_lib/spdm_responder_test.c

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ common_test_group_t m_spdm_test_groups[] = {
1515
{SPDM_RESPONDER_TEST_GROUP_CHALLENGE_AUTH, "spdm_test_group_challenge_auth", m_spdm_test_group_challenge_auth},
1616
{SPDM_RESPONDER_TEST_GROUP_MEASUREMENTS, "spdm_test_group_measurements", m_spdm_test_group_measurements},
1717
{SPDM_RESPONDER_TEST_GROUP_HEARTBEAT_ACK, "spdm_test_group_heartbeat_ack", m_spdm_test_group_heartbeat_ack},
18+
{SPDM_RESPONDER_TEST_GROUP_KEY_UPDATE_ACK, "spdm_test_group_key_update_ack", m_spdm_test_group_key_update_ack},
1819
{SPDM_RESPONDER_TEST_GROUP_END_SESSION_ACK,"spdm_test_group_end_session_ack",m_spdm_test_group_end_session_ack},
1920
{COMMON_TEST_ID_END, NULL, NULL},
2021
};

library/spdm_responder_conformance_test_lib/spdm_responder_test.h

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ extern common_test_case_t m_spdm_test_group_certificate[];
4646
extern common_test_case_t m_spdm_test_group_challenge_auth[];
4747
extern common_test_case_t m_spdm_test_group_measurements[];
4848
extern common_test_case_t m_spdm_test_group_heartbeat_ack[];
49+
extern common_test_case_t m_spdm_test_group_key_update_ack[];
4950
extern common_test_case_t m_spdm_test_group_end_session_ack[];
5051

5152
#endif

0 commit comments

Comments
 (0)