@@ -16,7 +16,7 @@ use srp::{
1616 client:: { SrpClient , SrpClientVerifier } ,
1717 groups:: G_2048 ,
1818} ;
19- use log:: { debug, error, warn} ;
19+ use log:: { debug, error, info , warn} ;
2020use tokio:: sync:: Mutex ;
2121use uuid:: Uuid ;
2222
@@ -175,6 +175,7 @@ pub struct TrustedPhoneNumber {
175175#[ derive( Deserialize ) ]
176176#[ serde( rename_all = "camelCase" ) ]
177177pub struct AuthenticationExtras {
178+ #[ serde( default ) ]
178179 pub trusted_phone_numbers : Vec < TrustedPhoneNumber > ,
179180 pub recovery_url : Option < String > ,
180181 pub cant_use_phone_number_url : Option < String > ,
@@ -809,7 +810,12 @@ impl<T: AnisetteProvider> AppleAccount<T> {
809810 warn ! ( "Got auth response {}" , base64:: encode( & body) ) ;
810811 return Err ( Error :: FailedGetting2FAConfig ) ;
811812 }
812- let mut new_state = req. json :: < AuthenticationExtras > ( ) . await ?;
813+ let resp = req. bytes ( ) . await ?;
814+ info ! ( "Got gsa auth extras {:?}" , str :: from_utf8( & resp) . unwrap( ) ) ;
815+ let mut new_state: AuthenticationExtras = serde_json:: from_slice ( & resp) ?;
816+ if new_state. trusted_phone_numbers . is_empty ( ) {
817+ return Err ( Error :: HardwareKeyError ) ;
818+ }
813819 if status == 201 {
814820 new_state. new_state = Some ( LoginState :: NeedsSMS2FAVerification ( VerifyBody {
815821 phone_number : PhoneNumber {
0 commit comments