|
|
|
@ -15,7 +15,7 @@ static VERSION: &str = "U2F_V2";
|
|
|
|
|
pub fn make_challenge(app_id: &str, challenge_bytes: Vec<u8>) -> Challenge {
|
|
|
|
|
let utc: DateTime<Utc> = Utc::now();
|
|
|
|
|
Challenge {
|
|
|
|
|
challenge: encode_config(&challenge_bytes, URL_SAFE_NO_PAD),
|
|
|
|
|
challenge: encode_config(challenge_bytes, URL_SAFE_NO_PAD),
|
|
|
|
|
timestamp: format!("{:?}", utc),
|
|
|
|
|
app_id: app_id.to_string(),
|
|
|
|
|
}
|
|
|
|
@ -35,10 +35,10 @@ pub fn verify_registration(
|
|
|
|
|
register_data: String,
|
|
|
|
|
client_data: String,
|
|
|
|
|
) -> crate::Result<String> {
|
|
|
|
|
let challenge_bytes = decode_config(&challenge, URL_SAFE_NO_PAD)?;
|
|
|
|
|
let challenge_bytes = decode_config(challenge, URL_SAFE_NO_PAD)?;
|
|
|
|
|
let challenge = make_challenge(&app_id, challenge_bytes);
|
|
|
|
|
let client_data_bytes: Vec<u8> = client_data.as_bytes().into();
|
|
|
|
|
let client_data_base64 = encode_config(&client_data_bytes, URL_SAFE_NO_PAD);
|
|
|
|
|
let client_data_base64 = encode_config(client_data_bytes, URL_SAFE_NO_PAD);
|
|
|
|
|
let client = U2f::new(app_id);
|
|
|
|
|
match client.register_response(
|
|
|
|
|
challenge,
|
|
|
|
@ -74,12 +74,12 @@ pub fn verify_signature(
|
|
|
|
|
key_handle: String,
|
|
|
|
|
pub_key: String,
|
|
|
|
|
) -> crate::Result<u32> {
|
|
|
|
|
let challenge_bytes = decode_config(&challenge, URL_SAFE_NO_PAD)?;
|
|
|
|
|
let challenge_bytes = decode_config(challenge, URL_SAFE_NO_PAD)?;
|
|
|
|
|
let chal = make_challenge(&app_id, challenge_bytes);
|
|
|
|
|
let client_data_bytes: Vec<u8> = client_data.as_bytes().into();
|
|
|
|
|
let client_data_base64 = encode_config(&client_data_bytes, URL_SAFE_NO_PAD);
|
|
|
|
|
let client_data_base64 = encode_config(client_data_bytes, URL_SAFE_NO_PAD);
|
|
|
|
|
let key_handle_bytes = decode_config(&key_handle, URL_SAFE_NO_PAD)?;
|
|
|
|
|
let pubkey_bytes = decode_config(&pub_key, URL_SAFE_NO_PAD)?;
|
|
|
|
|
let pubkey_bytes = decode_config(pub_key, URL_SAFE_NO_PAD)?;
|
|
|
|
|
let client = U2f::new(app_id);
|
|
|
|
|
let mut _counter: u32 = 0;
|
|
|
|
|
match client.sign_response(
|
|
|
|
|