Skip to content

Commit 76a6813

Browse files
longlongyangjyao1
authored andcommitted
support customized nonce for get measurement request.
Signed-off-by: Yang, Longlong <longlong.yang@intel.com>
1 parent 6535548 commit 76a6813

File tree

6 files changed

+31
-1
lines changed

6 files changed

+31
-1
lines changed

fuzz-target/random_requester/src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ async fn run_spdm(spdm: Vec<i32>) {
108108
0,
109109
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
110110
SpdmMeasurementOperation::SpdmMeasurementRequestAll,
111+
None,
111112
&mut content_changed,
112113
&mut total_number,
113114
&mut spdm_measurement_record_structure,

fuzz-target/requester/measurement_req/src/main.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ async fn fuzz_send_receive_spdm_measurement(fuzzdata: Arc<Vec<u8>>) {
7676
0,
7777
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
7878
SpdmMeasurementOperation::SpdmMeasurementRequestAll,
79+
None,
7980
&mut content_changed,
8081
&mut total_number,
8182
&mut spdm_measurement_record_structure,
@@ -134,6 +135,7 @@ async fn fuzz_send_receive_spdm_measurement(fuzzdata: Arc<Vec<u8>>) {
134135
0,
135136
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
136137
SpdmMeasurementOperation::SpdmMeasurementQueryTotalNumber,
138+
None,
137139
&mut content_changed,
138140
&mut total_number,
139141
&mut spdm_measurement_record_structure,
@@ -193,6 +195,7 @@ async fn fuzz_send_receive_spdm_measurement(fuzzdata: Arc<Vec<u8>>) {
193195
0,
194196
SpdmMeasurementAttributes::RAW_BIT_STREAM_REQUESTED,
195197
SpdmMeasurementOperation::SpdmMeasurementQueryTotalNumber,
198+
None,
196199
&mut content_changed,
197200
&mut total_number,
198201
&mut spdm_measurement_record_structure,
@@ -252,6 +255,7 @@ async fn fuzz_send_receive_spdm_measurement(fuzzdata: Arc<Vec<u8>>) {
252255
0,
253256
SpdmMeasurementAttributes::empty(),
254257
SpdmMeasurementOperation::Unknown(4),
258+
None,
255259
&mut content_changed,
256260
&mut total_number,
257261
&mut spdm_measurement_record_structure,
@@ -339,6 +343,7 @@ async fn fuzz_send_receive_spdm_measurement(fuzzdata: Arc<Vec<u8>>) {
339343
0,
340344
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
341345
SpdmMeasurementOperation::SpdmMeasurementRequestAll,
346+
None,
342347
&mut content_changed,
343348
&mut total_number,
344349
&mut spdm_measurement_record_structure,

spdmlib/src/requester/get_measurements_req.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ impl RequesterContext {
2222
session_id: Option<u32>,
2323
measurement_attributes: SpdmMeasurementAttributes,
2424
measurement_operation: SpdmMeasurementOperation,
25+
spdm_nonce_struct: Option<SpdmNonceStruct>,
2526
content_changed: &mut Option<SpdmMeasurementContentChanged>,
2627
spdm_measurement_record_structure: &mut SpdmMeasurementRecordStructure,
2728
transcript_meas: &mut Option<ManagedBufferM>,
@@ -36,6 +37,7 @@ impl RequesterContext {
3637
session_id,
3738
measurement_attributes,
3839
measurement_operation,
40+
spdm_nonce_struct,
3941
content_changed,
4042
spdm_measurement_record_structure,
4143
transcript_meas,
@@ -60,6 +62,7 @@ impl RequesterContext {
6062
session_id: Option<u32>,
6163
measurement_attributes: SpdmMeasurementAttributes,
6264
measurement_operation: SpdmMeasurementOperation,
65+
spdm_nonce_struct: Option<SpdmNonceStruct>,
6366
content_changed: &mut Option<SpdmMeasurementContentChanged>,
6467
spdm_measurement_record_structure: &mut SpdmMeasurementRecordStructure,
6568
transcript_meas: &mut Option<ManagedBufferM>,
@@ -80,6 +83,7 @@ impl RequesterContext {
8083
let send_used = self.encode_spdm_measurement_record(
8184
measurement_attributes,
8285
measurement_operation,
86+
spdm_nonce_struct,
8387
slot_id,
8488
&mut send_buffer,
8589
)?;
@@ -109,12 +113,18 @@ impl RequesterContext {
109113
&mut self,
110114
measurement_attributes: SpdmMeasurementAttributes,
111115
measurement_operation: SpdmMeasurementOperation,
116+
spdm_nonce_struct: Option<SpdmNonceStruct>,
112117
slot_id: u8,
113118
buf: &mut [u8],
114119
) -> SpdmResult<usize> {
115120
let mut writer = Writer::init(buf);
116121
let mut nonce = [0u8; SPDM_NONCE_SIZE];
117-
crypto::rand::get_random(&mut nonce)?;
122+
123+
if let Some(n) = spdm_nonce_struct {
124+
nonce.copy_from_slice(&n.data)
125+
} else {
126+
crypto::rand::get_random(&mut nonce)?;
127+
}
118128

119129
let request = SpdmMessage {
120130
header: SpdmMessageHeader {
@@ -278,6 +288,7 @@ impl RequesterContext {
278288
slot_id: u8,
279289
spdm_measuremente_attributes: SpdmMeasurementAttributes,
280290
measurement_operation: SpdmMeasurementOperation,
291+
spdm_nonce_struct: Option<SpdmNonceStruct>,
281292
content_changed: &mut Option<SpdmMeasurementContentChanged>, // out, None if spdm version < 0x12
282293
out_total_number: &mut u8, // out, total number when measurement_operation = SpdmMeasurementQueryTotalNumber
283294
// number of blocks got measured.
@@ -289,6 +300,7 @@ impl RequesterContext {
289300
session_id,
290301
spdm_measuremente_attributes,
291302
measurement_operation,
303+
spdm_nonce_struct,
292304
content_changed,
293305
spdm_measurement_record_structure,
294306
transcript_meas,

test/spdm-requester-emu/src/main.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ async fn test_spdm(
268268
0,
269269
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
270270
SpdmMeasurementOperation::SpdmMeasurementRequestAll,
271+
None,
271272
&mut content_changed,
272273
&mut total_number,
273274
&mut spdm_measurement_record_structure,
@@ -519,6 +520,7 @@ async fn test_spdm(
519520
0,
520521
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
521522
SpdmMeasurementOperation::SpdmMeasurementQueryTotalNumber,
523+
None,
522524
&mut content_changed,
523525
&mut total_number,
524526
&mut spdm_measurement_record_structure,
@@ -754,6 +756,7 @@ async fn test_idekm_tdisp(
754756
0,
755757
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
756758
SpdmMeasurementOperation::SpdmMeasurementRequestAll,
759+
None,
757760
&mut content_changed,
758761
&mut total_number,
759762
&mut spdm_measurement_record_structure,

test/spdmlib-test/src/requester_tests/get_digests_req.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ fn issue_other_request_before_vca_negotiated() {
296296
0,
297297
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
298298
measurement_operation,
299+
None,
299300
&mut content_changed,
300301
&mut total_number,
301302
&mut spdm_measurement_record_structure,

test/spdmlib-test/src/requester_tests/get_measurements_req.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ fn test_case0_send_receive_spdm_measurement() {
130130
0,
131131
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
132132
measurement_operation,
133+
None,
133134
&mut content_changed,
134135
&mut total_number,
135136
&mut spdm_measurement_record_structure,
@@ -149,6 +150,7 @@ fn test_case0_send_receive_spdm_measurement() {
149150
0,
150151
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
151152
measurement_operation,
153+
None,
152154
&mut content_changed,
153155
&mut total_number,
154156
&mut spdm_measurement_record_structure,
@@ -168,6 +170,7 @@ fn test_case0_send_receive_spdm_measurement() {
168170
0,
169171
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
170172
measurement_operation,
173+
None,
171174
&mut content_changed,
172175
&mut total_number,
173176
&mut spdm_measurement_record_structure,
@@ -187,6 +190,7 @@ fn test_case0_send_receive_spdm_measurement() {
187190
0,
188191
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
189192
measurement_operation,
193+
None,
190194
&mut content_changed,
191195
&mut total_number,
192196
&mut spdm_measurement_record_structure,
@@ -518,6 +522,7 @@ fn test_case1_send_receive_spdm_measurement() {
518522
0,
519523
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
520524
measurement_operation,
525+
None,
521526
&mut content_changed,
522527
&mut total_number,
523528
&mut spdm_measurement_record_structure,
@@ -537,6 +542,7 @@ fn test_case1_send_receive_spdm_measurement() {
537542
0,
538543
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
539544
measurement_operation,
545+
None,
540546
&mut content_changed,
541547
&mut total_number,
542548
&mut spdm_measurement_record_structure,
@@ -717,6 +723,7 @@ fn test_case3_send_receive_spdm_measurement() {
717723
0,
718724
SpdmMeasurementAttributes::SIGNATURE_REQUESTED,
719725
measurement_operation,
726+
None,
720727
&mut content_changed,
721728
&mut total_number,
722729
&mut spdm_measurement_record_structure,
@@ -742,6 +749,7 @@ fn test_case3_send_receive_spdm_measurement() {
742749
SpdmMeasurementAttributes::empty()
743750
},
744751
SpdmMeasurementOperation::Unknown(i),
752+
None,
745753
&mut content_changed,
746754
&mut dummy_total_number,
747755
&mut spdm_measurement_record_structure,

0 commit comments

Comments
 (0)