-
Notifications
You must be signed in to change notification settings - Fork 113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RequestResync
Error Code Handling
#3022
Comments
RequestResync
Error Code Handling
If the Responder has been completely reset, and does not remember that there even was a connection, then it should reply with I am somewhat sure that |
Interestingly the passage
was added in the SPDM 1.2 specification. So I guess that does not apply to your example, where the version is 1.0/1.1? Also the "General ordering rules" section says
but what about messages that do not eventually get signed, such as On the Responder side I think the fundamental question is
which hopefully the SPDM Working Group will answer on Thursday. |
It is mentioned in the 1.1 specification that if the Responder completes the firmware update, it should either respond with a RequestResynch or discard the message. This issue is also observed in version 1.2. It is a version-independent issue that can occur if the Responder resets after a firmware update and the Requester sends a command request. |
When checking the SPDM functionality using storage controller, synchronization is not reestablished if the responder experiences a reset and loses the last negotiated state.
The sequence of events is as follows:
spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context); if (spdm_response->header.spdm_version == 0) { /* if version is not negotiated, then use default version 1.0 */ spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10; }
/* -=[Validate Response Phase]=- */ if (spdm_response_size < sizeof(spdm_message_header_t)) { status = LIBSPDM_STATUS_INVALID_MSG_SIZE; goto receive_done; } if (spdm_response->header.spdm_version != spdm_request->header.spdm_version) { status = LIBSPDM_STATUS_INVALID_MSG_FIELD; goto receive_done; } if (spdm_response->header.request_response_code == SPDM_ERROR) { status = libspdm_handle_error_response_main( spdm_context, session_id, &spdm_response_size, (void **)&spdm_response, SPDM_GET_DIGESTS, SPDM_DIGESTS); if (LIBSPDM_STATUS_IS_ERROR(status)) { goto receive_done; } }
The text was updated successfully, but these errors were encountered: