use passkey_types::webauthn::CreatedPublicKeyCredential;
#[derive(Default)]
pub(crate) enum QuirkyRp {
#[default]
NotQuirky,
Adobe,
Hyatt,
}
impl QuirkyRp {
pub fn from_rp_id(rp_id: &str) -> Self {
match rp_id {
"adobe.com" => QuirkyRp::Adobe,
"hyatt.com" => QuirkyRp::Hyatt,
_ => QuirkyRp::NotQuirky,
}
}
#[inline]
pub fn map_create_credential(
&self,
response: CreatedPublicKeyCredential,
) -> CreatedPublicKeyCredential {
match self {
Self::NotQuirky => response,
Self::Adobe | Self::Hyatt => remove_authenticator_display_name(response),
}
}
}
#[inline]
fn remove_authenticator_display_name(
mut response: CreatedPublicKeyCredential,
) -> CreatedPublicKeyCredential {
if let Some(cp) = response.client_extension_results.cred_props.as_mut() {
cp.authenticator_display_name = None;
}
response
}