Skip to content

Commit bf578c2

Browse files
committed
CI: add PQC (ML-DSA + ML-KEM) build and test
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
1 parent 9e558af commit bf578c2

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

.github/workflows/main.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ jobs:
4646
- runs-on: windows-latest
4747
run_requester_features: "spdm-ring,hashed-transcript-data,async-executor"
4848
run_responder_features: "spdm-ring,hashed-transcript-data,async-executor"
49+
- runs-on: ubuntu-latest
50+
run_requester_features: "spdm-ring,hashed-transcript-data,async-executor,spdm-aws-lc"
51+
run_responder_features: "spdm-ring,hashed-transcript-data,async-executor,spdm-aws-lc"
4952
# The type of runner that the job will run on
5053
runs-on: ${{ matrix.runs-on }}
5154

sh_script/build.sh

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,14 @@ build() {
107107

108108
echo "Building spdm-responder-emu..."
109109
echo_command cargo build -p spdm-responder-emu
110+
111+
echo "Building spdm-requester-emu with PQC (spdm-aws-lc)..."
112+
echo_command export SPDM_CONFIG="etc/pqc_config.json"
113+
echo_command cargo build -p spdm-requester-emu --no-default-features --features="spdm-ring,hashed-transcript-data,async-executor,spdm-aws-lc"
114+
115+
echo "Building spdm-responder-emu with PQC (spdm-aws-lc)..."
116+
echo_command cargo build -p spdm-responder-emu --no-default-features --features="spdm-ring,hashed-transcript-data,async-executor,spdm-aws-lc"
117+
echo_command unset SPDM_CONFIG
110118
}
111119

112120
RUN_REQUESTER_FEATURES=${RUN_REQUESTER_FEATURES:-spdm-ring,hashed-transcript-data,async-executor}
@@ -116,6 +124,8 @@ RUN_RESPONDER_MUTAUTH_FEATURES="${RUN_RESPONDER_FEATURES},mut-auth"
116124
RUN_RESPONDER_MANDATORY_MUTAUTH_FEATURES="${RUN_RESPONDER_FEATURES},mandatory-mut-auth"
117125
RUN_REQUESTER_CHUNK_CAP_FEATURES="${RUN_REQUESTER_FEATURES},chunk-cap"
118126
RUN_RESPONDER_CHUNK_CAP_FEATURES="${RUN_RESPONDER_FEATURES},chunk-cap"
127+
RUN_REQUESTER_PQC_FEATURES="${RUN_REQUESTER_FEATURES},spdm-aws-lc,chunk-cap"
128+
RUN_RESPONDER_PQC_FEATURES="${RUN_RESPONDER_FEATURES},spdm-aws-lc,chunk-cap"
119129

120130

121131
run_with_spdm_emu() {
@@ -239,6 +249,20 @@ run_rust_spdm_emu_raw_pub_key() {
239249
cleanup
240250
}
241251

252+
run_rust_spdm_emu_pqc() {
253+
echo "Running requester and responder with PQC (ML-DSA + ML-KEM)..."
254+
echo_command export SPDM_CONFIG="etc/pqc_config.json"
255+
export SPDMRS_USE_PQC=true
256+
export SPDMRS_USE_RAW_PUB_KEY=true
257+
echo_command cargo run -p spdm-responder-emu --no-default-features --features="$RUN_RESPONDER_PQC_FEATURES" &
258+
sleep 20
259+
echo_command cargo run -p spdm-requester-emu --no-default-features --features="$RUN_REQUESTER_PQC_FEATURES"
260+
unset SPDMRS_USE_PQC
261+
unset SPDMRS_USE_RAW_PUB_KEY
262+
echo_command unset SPDM_CONFIG
263+
cleanup
264+
}
265+
242266
run_with_spdm_emu_raw_pub_key() {
243267
echo "Running cross test with spdm-emu raw public key..."
244268
pushd test_key
@@ -261,12 +285,41 @@ run_with_spdm_emu_raw_pub_key() {
261285
unset SPDMRS_USE_RAW_PUB_KEY
262286
}
263287

288+
run_with_spdm_emu_pqc() {
289+
echo "Running cross test with spdm-emu PQC (ML-DSA + ML-KEM)..."
290+
echo_command export SPDM_CONFIG="etc/pqc_config.json"
291+
pushd test_key
292+
chmod +x ./spdm_responder_emu
293+
echo_command ./spdm_responder_emu --trans PCI_DOE --cap CACHE,CHAL,MEAS_SIG,MEAS_FRESH,ENCRYPT,MAC,KEY_EX,ENCAP,HBEAT,KEY_UPD,HANDSHAKE_IN_CLEAR,PUB_KEY_ID,CHUNK --slot_id 0xFF --mut_auth NO --pqc_asym ML_DSA_87 --kem ML_KEM_1024 --pqc_first TRUE &
294+
popd
295+
sleep 5
296+
export SPDMRS_USE_PQC=true
297+
export SPDMRS_USE_RAW_PUB_KEY=true
298+
echo_command cargo run -p spdm-requester-emu --no-default-features --features="$RUN_REQUESTER_PQC_FEATURES"
299+
unset SPDMRS_USE_PQC
300+
unset SPDMRS_USE_RAW_PUB_KEY
301+
cleanup
302+
303+
export SPDMRS_USE_PQC=true
304+
export SPDMRS_USE_RAW_PUB_KEY=true
305+
echo_command cargo run -p spdm-responder-emu --no-default-features --features="$RUN_RESPONDER_PQC_FEATURES" &
306+
sleep 20
307+
pushd test_key
308+
chmod +x ./spdm_requester_emu
309+
echo_command ./spdm_requester_emu --trans PCI_DOE --cap CHAL,ENCRYPT,MAC,KEY_EX,ENCAP,HBEAT,KEY_UPD,PUB_KEY_ID,CHUNK --slot_id 0xFF --mut_auth NO --pqc_asym ML_DSA_87 --kem ML_KEM_1024 --pqc_first TRUE --exe_conn CHAL,MEAS --exe_session KEY_EX,KEY_UPDATE,HEARTBEAT,MEAS
310+
popd
311+
unset SPDMRS_USE_PQC
312+
unset SPDMRS_USE_RAW_PUB_KEY
313+
echo_command unset SPDM_CONFIG
314+
}
315+
264316
run() {
265317
run_basic_test
266318
run_rust_spdm_emu
267319
run_rust_spdm_emu_raw_pub_key
268320
run_rust_spdm_emu_mut_auth
269321
run_rust_spdm_emu_mandatory_mut_auth
322+
run_rust_spdm_emu_pqc
270323
}
271324

272325
CHECK_OPTION=false
@@ -323,6 +376,7 @@ main() {
323376
run_with_spdm_emu_raw_pub_key
324377
run_with_spdm_emu_mut_auth
325378
run_with_spdm_emu_mandatory_mut_auth
379+
run_with_spdm_emu_pqc
326380
fi
327381
fi
328382
}

0 commit comments

Comments
 (0)