| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -269,12 +269,17 @@ fn activate_u2f(data: JsonUpcase<EnableU2FData>, headers: Headers, conn: DbConn) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if let Some(tf_challenge) = tf_challenge { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let challenge: Challenge = serde_json::from_str(&tf_challenge.data).unwrap(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let challenge: Challenge = serde_json::from_str(&tf_challenge.data) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            .expect("Can't parse U2fRegisterChallenge data"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        tf_challenge | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            .delete(&conn) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            .expect("Error deleting U2F register challenge"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let response: RegisterResponse = serde_json::from_str(&data.DeviceResponse).unwrap(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        println!("RegisterResponse {:#?}", &data.DeviceResponse); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let response: RegisterResponse = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            serde_json::from_str(&data.DeviceResponse).expect("Can't parse DeviceResponse data"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        match U2F.register_response(challenge.clone(), response) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Ok(registration) => { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -349,7 +354,9 @@ impl Into<Registration> for RegistrationCopy { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					fn _parse_registrations(registations: &str) -> Vec<Registration> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let registrations_copy: Vec<RegistrationCopy> = serde_json::from_str(registations).unwrap(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    println!("Registrations {:#?}", registations); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let registrations_copy: Vec<RegistrationCopy> = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        serde_json::from_str(registations).expect("Can't parse RegistrationCopy data"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    registrations_copy.into_iter().map(Into::into).collect() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -377,7 +384,10 @@ pub fn validate_u2f_login(user_uuid: &str, response: &str, conn: &DbConn) -> Api | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let challenge = match tf_challenge { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Some(tf_challenge) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            let challenge: Challenge = serde_json::from_str(&tf_challenge.data).unwrap(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            println!("challenge {:#?}", &tf_challenge.data); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            let challenge: Challenge = serde_json::from_str(&tf_challenge.data) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                .expect("Can't parse U2fLoginChallenge data"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            tf_challenge | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                .delete(&conn) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                .expect("Error deleting U2F login challenge"); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -395,11 +405,8 @@ pub fn validate_u2f_login(user_uuid: &str, response: &str, conn: &DbConn) -> Api | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    println!("response {:#?}", response); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let response: SignResponse = serde_json::from_str(response).unwrap(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    println!("client_data {:#?}", response.client_data); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    println!("key_handle {:#?}", response.key_handle); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    println!("signature_data {:#?}", response.signature_data); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let response: SignResponse = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        serde_json::from_str(response).expect("Can't parse SignResponse data"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let mut _counter: u32 = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for registration in registrations { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |