diff --git a/libraries/cbor/src/macros.rs b/libraries/cbor/src/macros.rs index c6b5499..5814a2a 100644 --- a/libraries/cbor/src/macros.rs +++ b/libraries/cbor/src/macros.rs @@ -40,8 +40,8 @@ /// # let map = alloc::collections::BTreeMap::new(); /// read_cbor_map! { /// map, -/// x @ cbor_unsigned!(1), -/// y @ cbor_unsigned!(2), +/// x @ 1, +/// y @ 2, /// }; /// # } /// ``` @@ -65,7 +65,7 @@ macro_rules! read_cbor_map { #[cfg(test)] test_ordered_keys!($( $key, )+); - use $crate::values::{KeyType, Value}; + use $crate::values::{IntoCborKey, KeyType, Value}; use ::core::cmp::Ordering; use ::core::iter::Peekable; use ::alloc::collections::btree_map::IntoIter; @@ -73,7 +73,7 @@ macro_rules! read_cbor_map { let mut it: Peekable> = $map.into_iter().peekable(); $( let $variable: Option = { - let needle: KeyType = $key; + let needle: KeyType = $key.into_cbor_key(); loop { match it.peek() { None => break None, @@ -106,8 +106,9 @@ macro_rules! test_ordered_keys { ( $key1:expr, $key2:expr, $( $keys:expr, )* ) => { { - let k1: $crate::values::KeyType = $key1; - let k2: $crate::values::KeyType = $key2; + use $crate::values::{IntoCborKey, KeyType}; + let k1: KeyType = $key1.into_cbor_key(); + let k2: KeyType = $key2.into_cbor_key(); assert!( k1 < k2, "{:?} < {:?} failed. The read_cbor_map! macro requires keys in sorted order.", @@ -621,8 +622,8 @@ mod test { read_cbor_map! { extract_map(map), - x1 @ cbor_unsigned!(1), - x2 @ cbor_unsigned!(2), + x1 @ 1, + x2 @ 2, }; assert_eq!(x1, Some(cbor_unsigned!(10))); @@ -639,8 +640,8 @@ mod test { read_cbor_map! { extract_map(map), - _x2 @ cbor_unsigned!(2), - _x1 @ cbor_unsigned!(1), + _x2 @ 2, + _x1 @ 1, }; } @@ -660,8 +661,8 @@ mod test { read_cbor_map! { extract_map(map), - x3 @ cbor_unsigned!(3), - x7 @ cbor_unsigned!(7), + x3 @ 3, + x7 @ 7, }; assert_eq!(x3, Some(cbor_unsigned!(30))); @@ -678,12 +679,12 @@ mod test { read_cbor_map! { extract_map(map), - x0 @ cbor_unsigned!(0), - x1 @ cbor_unsigned!(1), - x2 @ cbor_unsigned!(2), - x3 @ cbor_unsigned!(3), - x4 @ cbor_unsigned!(4), - x5 @ cbor_unsigned!(5), + x0 @ 0, + x1 @ 1, + x2 @ 2, + x3 @ 3, + x4 @ 4, + x5 @ 5, }; assert_eq!(x0, None); diff --git a/src/ctap/command.rs b/src/ctap/command.rs index 03f38eb..7307c40 100644 --- a/src/ctap/command.rs +++ b/src/ctap/command.rs @@ -126,15 +126,15 @@ impl TryFrom for AuthenticatorMakeCredentialParameters { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - client_data_hash @ cbor_unsigned!(1), - rp @ cbor_unsigned!(2), - user @ cbor_unsigned!(3), - cred_param_vec @ cbor_unsigned!(4), - exclude_list @ cbor_unsigned!(5), - extensions @ cbor_unsigned!(6), - options @ cbor_unsigned!(7), - pin_uv_auth_param @ cbor_unsigned!(8), - pin_uv_auth_protocol @ cbor_unsigned!(9), + client_data_hash @ 1, + rp @ 2, + user @ 3, + cred_param_vec @ 4, + exclude_list @ 5, + extensions @ 6, + options @ 7, + pin_uv_auth_param @ 8, + pin_uv_auth_protocol @ 9, }; let client_data_hash = extract_byte_string(ok_or_missing(client_data_hash)?)?; @@ -208,13 +208,13 @@ impl TryFrom for AuthenticatorGetAssertionParameters { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - rp_id @ cbor_unsigned!(1), - client_data_hash @ cbor_unsigned!(2), - allow_list @ cbor_unsigned!(3), - extensions @ cbor_unsigned!(4), - options @ cbor_unsigned!(5), - pin_uv_auth_param @ cbor_unsigned!(6), - pin_uv_auth_protocol @ cbor_unsigned!(7), + rp_id @ 1, + client_data_hash @ 2, + allow_list @ 3, + extensions @ 4, + options @ 5, + pin_uv_auth_param @ 6, + pin_uv_auth_protocol @ 7, }; let rp_id = extract_text_string(ok_or_missing(rp_id)?)?; @@ -277,12 +277,12 @@ impl TryFrom for AuthenticatorClientPinParameters { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - pin_protocol @ cbor_unsigned!(1), - sub_command @ cbor_unsigned!(2), - key_agreement @ cbor_unsigned!(3), - pin_auth @ cbor_unsigned!(4), - new_pin_enc @ cbor_unsigned!(5), - pin_hash_enc @ cbor_unsigned!(6), + pin_protocol @ 1, + sub_command @ 2, + key_agreement @ 3, + pin_auth @ 4, + new_pin_enc @ 5, + pin_hash_enc @ 6, }; let pin_protocol = extract_unsigned(ok_or_missing(pin_protocol)?)?; diff --git a/src/ctap/data_formats.rs b/src/ctap/data_formats.rs index 0a5cab5..b34a709 100644 --- a/src/ctap/data_formats.rs +++ b/src/ctap/data_formats.rs @@ -33,9 +33,9 @@ impl TryFrom for PublicKeyCredentialRpEntity { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - rp_id @ cbor_text!("id"), - rp_icon @ cbor_text!("icon"), - rp_name @ cbor_text!("name"), + rp_id @ "id", + rp_icon @ "icon", + rp_name @ "name", }; let rp_id = extract_text_string(ok_or_missing(rp_id)?)?; @@ -65,10 +65,10 @@ impl TryFrom for PublicKeyCredentialUserEntity { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - user_id @ cbor_text!("id"), - user_icon @ cbor_text!("icon"), - user_name @ cbor_text!("name"), - user_display_name @ cbor_text!("displayName"), + user_id @ "id", + user_icon @ "icon", + user_name @ "name", + user_display_name @ "displayName", }; let user_id = extract_byte_string(ok_or_missing(user_id)?)?; @@ -143,8 +143,8 @@ impl TryFrom for PublicKeyCredentialParameter { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - alg @ cbor_text!("alg"), - cred_type @ cbor_text!("type"), + alg @ "alg", + cred_type @ "type", }; let cred_type = PublicKeyCredentialType::try_from(ok_or_missing(cred_type)?)?; @@ -212,9 +212,9 @@ impl TryFrom for PublicKeyCredentialDescriptor { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - key_id @ cbor_text!("id"), - key_type @ cbor_text!("type"), - transports @ cbor_text!("transports"), + key_id @ "id", + key_type @ "type", + transports @ "transports", }; let key_type = PublicKeyCredentialType::try_from(ok_or_missing(key_type)?)?; @@ -261,8 +261,8 @@ impl TryFrom for MakeCredentialExtensions { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - cred_protect @ cbor_text!("credProtect"), - hmac_secret @ cbor_text!("hmac-secret"), + cred_protect @ "credProtect", + hmac_secret @ "hmac-secret", }; let hmac_secret = hmac_secret.map_or(Ok(false), extract_bool)?; @@ -287,7 +287,7 @@ impl TryFrom for GetAssertionExtensions { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - hmac_secret @ cbor_text!("hmac-secret"), + hmac_secret @ "hmac-secret", }; let hmac_secret = hmac_secret @@ -310,9 +310,9 @@ impl TryFrom for GetAssertionHmacSecretInput { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - cose_key @ cbor_unsigned!(1), - salt_enc @ cbor_unsigned!(2), - salt_auth @ cbor_unsigned!(3), + cose_key @ 1, + salt_enc @ 2, + salt_auth @ 3, }; let cose_key = extract_map(ok_or_missing(cose_key)?)?; @@ -339,9 +339,9 @@ impl TryFrom for MakeCredentialOptions { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - rk @ cbor_text!("rk"), - up @ cbor_text!("up"), - uv @ cbor_text!("uv"), + rk @ "rk", + up @ "up", + uv @ "uv", }; let rk = match rk { @@ -373,9 +373,9 @@ impl TryFrom for GetAssertionOptions { fn try_from(cbor_value: cbor::Value) -> Result { read_cbor_map! { extract_map(cbor_value)?, - rk @ cbor_text!("rk"), - up @ cbor_text!("up"), - uv @ cbor_text!("uv"), + rk @ "rk", + up @ "up", + uv @ "uv", }; if let Some(options_entry) = rk { @@ -630,11 +630,11 @@ impl TryFrom for ecdh::PubKey { fn try_from(cose_key: CoseKey) -> Result { read_cbor_map! { cose_key.0, - key_type @ cbor_int!(1), - algorithm @ cbor_int!(3), - curve @ cbor_int!(-1), - x_bytes @ cbor_int!(-2), - y_bytes @ cbor_int!(-3), + key_type @ 1, + algorithm @ 3, + curve @ -1, + x_bytes @ -2, + y_bytes @ -3, }; let key_type = extract_integer(ok_or_missing(key_type)?)?;