Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 55 additions & 67 deletions src/migtd/src/migration/rebinding.rs
Original file line number Diff line number Diff line change
Expand Up @@ -392,98 +392,86 @@ pub async fn start_rebinding(
// Exchange policy firstly because of the message size limitation of TLS protocol
const PRE_SESSION_TIMEOUT: Duration = Duration::from_secs(60); // 60 seconds
if info.rebinding_src == 1 {
let local_data =
InitData::get_from_local(&[0u8; 64]).ok_or(MigrationResult::InvalidParameter)?;
let init_migtd_data = info
.init_migtd_data
.as_ref()
.or(Some(&local_data))
.ok_or(MigrationResult::InvalidParameter)?;
let remote_policy = Box::pin(with_timeout(
PRE_SESSION_TIMEOUT,
rebinding_old_pre_session_data_exchange(&mut transport, &init_migtd_data.init_policy),
))
.await
.map_err(|e| {
log::error!(
"start_rebinding: rebinding_old_pre_session_data_exchange timeout error: {:?}\n",
e
);
e
})?
.map_err(|e| {
log::error!(
"start_rebinding: rebinding_old_pre_session_data_exchange error: {:?}\n",
e
);
e
})?;
#[cfg(not(feature = "spdm_attestation"))]
match info.operation {
MIGTD_REBIND_OP_PREPARE => {
let local_data = InitData::get_from_local(&[0u8; 64])
.ok_or(MigrationResult::InvalidParameter)?;
let init_migtd_data = info
.init_migtd_data
.as_ref()
.or(Some(&local_data))
.ok_or(MigrationResult::InvalidParameter)?;
let remote_policy = Box::pin(with_timeout(
PRE_SESSION_TIMEOUT,
rebinding_old_pre_session_data_exchange(&mut transport, &init_migtd_data.init_policy),
))
.await
.map_err(|e| {
log::error!(
"start_rebinding: rebinding_old_pre_session_data_exchange timeout error: {:?}\n",
e
);
e
})?
.map_err(|e| {
log::error!(
"start_rebinding: rebinding_old_pre_session_data_exchange error: {:?}\n",
e
);
e
})?;
#[cfg(not(feature = "spdm_attestation"))]
rebinding_old_prepare(transport, info, &init_migtd_data, data, remote_policy)
.await?
}
MIGTD_REBIND_OP_FINALIZE => rebinding_old_finalize(info, data).await?,
_ => return Err(MigrationResult::InvalidParameter),
}
.await?;

#[cfg(feature = "spdm_attestation")]
match info.operation {
MIGTD_REBIND_OP_PREPARE => {
#[cfg(feature = "spdm_attestation")]
rebinding_old_prepare(
transport,
info,
data,
#[cfg(feature = "policy_v2")]
remote_policy,
)
.await?
.await?;
}
MIGTD_REBIND_OP_FINALIZE => rebinding_old_finalize(info, data).await?,
_ => return Err(MigrationResult::InvalidParameter),
}
} else {
let pre_session_data = Box::pin(with_timeout(
PRE_SESSION_TIMEOUT,
rebinding_new_pre_session_data_exchange(&mut transport),
))
.await
.map_err(|e| {
log::error!(
"start_rebinding: rebinding_new_pre_session_data_exchange timeout error: {:?}\n",
e
);
e
})?
.map_err(|e| {
log::error!(
"start_rebinding: rebinding_new_pre_session_data_exchange error: {:?}\n",
e
);
e
})?;

#[cfg(not(feature = "spdm_attestation"))]
match info.operation {
MIGTD_REBIND_OP_PREPARE => {
rebinding_new_prepare(transport, info, data, pre_session_data).await?
}
MIGTD_REBIND_OP_FINALIZE => rebinding_new_finalize(info, data).await?,
_ => return Err(MigrationResult::InvalidParameter),
}

#[cfg(feature = "spdm_attestation")]
match info.operation {
MIGTD_REBIND_OP_PREPARE => {
let pre_session_data = Box::pin(with_timeout(
PRE_SESSION_TIMEOUT,
rebinding_new_pre_session_data_exchange(&mut transport),
))
.await
.map_err(|e| {
log::error!(
"start_rebinding: rebinding_new_pre_session_data_exchange timeout error: {:?}\n",
e
);
e
})?
.map_err(|e| {
log::error!(
"start_rebinding: rebinding_new_pre_session_data_exchange error: {:?}\n",
e
);
e
})?;

#[cfg(not(feature = "spdm_attestation"))]
rebinding_new_prepare(transport, info, data, pre_session_data).await?;

#[cfg(feature = "spdm_attestation")]
rebinding_new_prepare(
transport,
info,
data,
#[cfg(feature = "policy_v2")]
pre_session_data,
)
.await?
.await?;
}
MIGTD_REBIND_OP_FINALIZE => rebinding_new_finalize(info, data).await?,
_ => return Err(MigrationResult::InvalidParameter),
Expand Down
Loading