Tests SPDM requester ↔ responder communication using two separate processes connected via an MCTP loopback server.
Unlike the spdm-loopback-test (single process, manual packet transfer), this test uses three separate userspace processes communicating over Pigweed IPC channels:
BufferSender loopback (no physical transport needed)generate_get_version, requester_send_request, requester_process_message) to execute the VCA flowresponder_process_message) to handle incoming SPDM requests┌─ spdm_requester ──┐ ┌─ mctp_loopback_server ─────────┐ ┌─ spdm_responder ─┐ │ IpcMctpClient │─IPC─▶│ Server(EID 8) ←loopback→ │◀─IPC─│ IpcMctpClient │ │ MctpSpdmTransport │ │ Server(EID 42) │ │ MctpSpdmTransport │ │ SpdmContext │ │ (BufferSender cross-wired) │ │ SpdmContext │ └────────────────────┘ └──────────────────────────────────┘ └───────────────────┘
The requester executes the SPDM VCA (Version, Capabilities, Algorithms) flow:
GET_VERSION → VERSIONGET_CAPABILITIES → CAPABILITIESNEGOTIATE_ALGORITHMS → ALGORITHMSOn success, the requester calls debug_shutdown(Ok(())).
bazel build --platforms=//target/ast1060-evb:ast1060-evb \ //target/ast1060-evb/spdm-req-resp-test:spdm_req_resp_test
bazel test --platforms=//target/ast1060-evb:ast1060-evb \ //target/ast1060-evb/spdm-req-resp-test:spdm_req_resp_test_qemu
bazel test --platforms=//target/ast1060-evb:ast1060-evb \ //target/ast1060-evb/spdm-req-resp-test:spdm_req_resp_test_uart_test \ --test_env=UART_DEVICE=/dev/ttyUSB0