@@ -12,6 +12,7 @@ use std::{
12
12
} ;
13
13
use tracing:: { error, warn} ;
14
14
15
+ use crate :: proto:: ctap2:: cbor;
15
16
use crate :: {
16
17
proto:: {
17
18
ctap2:: { Ctap2PublicKeyCredentialDescriptor , Ctap2PublicKeyCredentialType } ,
95
96
// signCount | 4
96
97
// attestedCredentialData | variable
97
98
// extensions | variable
98
- let mut res = self . rp_id_hash . to_vec ( ) ;
99
+ let mut res = cbor:: to_vec ( & self . rp_id_hash ) . map_err ( |e| {
100
+ error ! ( "Failed to create AuthenticatorData output vec at rp_id_hash: {e:?}" ) ;
101
+ Error :: Platform ( e. into ( ) )
102
+ } ) ?;
99
103
res. push ( self . flags . bits ( ) ) ;
100
104
res. write_u32 :: < BigEndian > ( self . signature_count )
101
105
. map_err ( |e| {
@@ -120,10 +124,11 @@ where
120
124
} ) ?;
121
125
res. extend ( & att_data. credential_id ) ;
122
126
let cose_encoded_public_key =
123
- serde_cbor :: to_vec ( & att_data. credential_public_key )
127
+ cbor :: to_vec ( & att_data. credential_public_key )
124
128
. map_err ( |e| {
125
129
error ! (
126
- "Failed to create AuthenticatorData output vec at attested_credential.credential_public_key: {e:?}"
130
+ %e,
131
+ "Failed to create AuthenticatorData output vec at attested_credential.credential_public_key"
127
132
) ;
128
133
Error :: Platform ( PlatformError :: InvalidDeviceResponse )
129
134
} ) ?;
@@ -132,8 +137,8 @@ where
132
137
133
138
if self . extensions . is_some ( ) || self . flags . contains ( AuthenticatorDataFlags :: EXTENSION_DATA )
134
139
{
135
- res. extend ( serde_cbor :: to_vec ( & self . extensions ) . map_err ( |e| {
136
- error ! ( "Failed to create AuthenticatorData output vec at extensions: {e:?} " ) ;
140
+ res. extend ( cbor :: to_vec ( & self . extensions ) . map_err ( |e| {
141
+ error ! ( %e , "Failed to create AuthenticatorData output vec at extensions" ) ;
137
142
Error :: Platform ( PlatformError :: InvalidDeviceResponse )
138
143
} ) ?) ;
139
144
}
@@ -215,9 +220,8 @@ impl<'de, T: DeserializeOwned> Deserialize<'de> for AuthenticatorData<T> {
215
220
let mut credential_id = vec ! [ 0u8 ; credential_id_len] ;
216
221
cursor. read_exact ( & mut credential_id) . unwrap ( ) ; // We checked the length
217
222
218
- let mut deserializer = serde_cbor:: Deserializer :: from_reader ( & mut cursor) ;
219
223
let credential_public_key: PublicKey =
220
- Deserialize :: deserialize ( & mut deserializer ) . map_err ( DesError :: custom) ?;
224
+ cbor :: from_reader ( & mut cursor ) . map_err ( DesError :: custom) ?;
221
225
222
226
attested_credential = Some ( AttestedCredentialData {
223
227
aaguid,
@@ -228,7 +232,7 @@ impl<'de, T: DeserializeOwned> Deserialize<'de> for AuthenticatorData<T> {
228
232
229
233
let extensions: Option < T > =
230
234
if flags. contains ( AuthenticatorDataFlags :: EXTENSION_DATA ) {
231
- serde_cbor :: from_reader ( & mut cursor) . map_err ( DesError :: custom) ?
235
+ cbor :: from_reader ( & mut cursor) . map_err ( DesError :: custom) ?
232
236
} else {
233
237
Default :: default ( )
234
238
} ;
0 commit comments