Skip to content

Commit

Permalink
Add 1.3 Challenge dump
Browse files Browse the repository at this point in the history
Signed-off-by: Jiewen Yao <[email protected]>
  • Loading branch information
jyao1 committed Nov 20, 2023
1 parent 005c4df commit 2cbaf0c
Showing 1 changed file with 34 additions and 6 deletions.
40 changes: 34 additions & 6 deletions spdm_dump/spdm/spdm_dump_spdm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1161,6 +1161,13 @@ void dump_spdm_challenge(const void *buffer, size_t buffer_size)
}

spdm_request = buffer;
if (spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) {
message_size = sizeof(spdm_challenge_request_t) + SPDM_REQ_CONTEXT_SIZE;
if (buffer_size < message_size) {
printf("\n");
return;
}
}

m_cached_measurement_summary_hash_type = spdm_request->header.param2;

Expand All @@ -1176,8 +1183,13 @@ void dump_spdm_challenge(const void *buffer, size_t buffer_size)

if (m_param_all_mode) {
printf("\n Nonce(");
dump_data(spdm_request->nonce, 32);
dump_data(spdm_request->nonce, SPDM_NONCE_SIZE);
printf(")");
if (spdm_request->header.spdm_version >= SPDM_MESSAGE_VERSION_13) {
printf("\n ReqContext(");
dump_data((uint8_t *)(spdm_request + 1), SPDM_REQ_CONTEXT_SIZE);
printf(")");
}
}
}

Expand All @@ -1196,6 +1208,7 @@ void dump_spdm_challenge_auth(const void *buffer, size_t buffer_size)
uint8_t *nonce;
uint8_t *measurement_summary_hash;
uint8_t *opaque_data;
uint8_t *req_context;
uint8_t *signature;

printf("SPDM_CHALLENGE_AUTH ");
Expand All @@ -1210,7 +1223,7 @@ void dump_spdm_challenge_auth(const void *buffer, size_t buffer_size)
spdm_dump_get_measurement_summary_hash_size(
m_cached_measurement_summary_hash_type);

message_size = sizeof(spdm_challenge_auth_response_t) + hash_size + 32 +
message_size = sizeof(spdm_challenge_auth_response_t) + hash_size + SPDM_NONCE_SIZE +
measurement_summary_hash_size + sizeof(uint16_t);
if (buffer_size < message_size) {
printf("\n");
Expand All @@ -1220,14 +1233,21 @@ void dump_spdm_challenge_auth(const void *buffer, size_t buffer_size)
opaque_length =
*(uint16_t *)((size_t)buffer +
sizeof(spdm_challenge_auth_response_t) + hash_size +
32 + measurement_summary_hash_size);
SPDM_NONCE_SIZE + measurement_summary_hash_size);
message_size += opaque_length + signature_size;
if (buffer_size < message_size) {
printf("\n");
return;
}

spdm_response = buffer;
if (spdm_response->header.spdm_version >= SPDM_MESSAGE_VERSION_13) {
message_size += + SPDM_REQ_CONTEXT_SIZE;
if (buffer_size < message_size) {
printf("\n");
return;
}
}

if (!m_param_quite_mode) {
printf("(Attr=0x%02x(", spdm_response->header.param1);
Expand All @@ -1247,9 +1267,9 @@ void dump_spdm_challenge_auth(const void *buffer, size_t buffer_size)
printf(")");
nonce = cert_chain_hash + hash_size;
printf("\n Nonce(");
dump_data(nonce, 32);
dump_data(nonce, SPDM_NONCE_SIZE);
printf(")");
measurement_summary_hash = nonce + 32;
measurement_summary_hash = nonce + SPDM_NONCE_SIZE;
if (measurement_summary_hash_size != 0) {
printf("\n MeasurementSummaryHash(");
dump_data(measurement_summary_hash,
Expand All @@ -1267,7 +1287,15 @@ void dump_spdm_challenge_auth(const void *buffer, size_t buffer_size)
printf(")");
dump_spdm_opaque_data(spdm_response->header.spdm_version,
opaque_data, opaque_length);
signature = opaque_data + opaque_length;
if (spdm_response->header.spdm_version >= SPDM_MESSAGE_VERSION_13) {
req_context = opaque_data + opaque_length;
printf("\n ReqContext(");
dump_data(req_context, SPDM_REQ_CONTEXT_SIZE);
printf(")");
signature = req_context + SPDM_REQ_CONTEXT_SIZE;
} else {
signature = opaque_data + opaque_length;
}
printf("\n Signature(");
dump_data(signature, signature_size);
printf(")");
Expand Down

0 comments on commit 2cbaf0c

Please sign in to comment.