private void AuthenticateToServer(Fido2AuthenticationResponse fido2AuthenticationResponse) { string Tag = "AuthenticateToServer"; if (!fido2AuthenticationResponse.IsSuccess) { log.Error(Tag, GetString(Resource.String.authn_fail), fido2AuthenticationResponse); return; } IFidoServer fidoServer = new FidoServerSimulator(); if (fidoServer == null) { log.Error(Tag, GetString(Resource.String.connect_server_err)); return; } ServerAssertionResultRequest request = ServerUtils.ConvertToServerAssertionResultRequest(fido2AuthenticationResponse.AuthenticatorAssertionResponse); ServerResponse response = fidoServer.GetAssertionResult(request); if (!ServerStatus.Ok.Equals(response.GetStatus())) { log.Error(Tag, GetString(Resource.String.authn_fail) + response.GetErrorMessage()); return; } Log.Info(Tag, GetString(Resource.String.authn_success)); }
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (resultCode != Result.Ok) { ShowToast("Unknown error."); return; } switch (requestCode) { case Fido2ClientCommon.RegistrationRequest: { Fido2RegistrationResponse fido2RegistrationResponse = fido2Client.GetFido2RegistrationResponse(data); RegisterToServer(fido2RegistrationResponse); log.Info(Tag, "fido2RegistrationResponse", fido2RegistrationResponse); } break; case Fido2ClientCommon.AuthenticationRequest: { Fido2AuthenticationResponse fido2AuthenticationResponse = fido2Client.GetFido2AuthenticationResponse(data); if (fido2AuthenticationResponse.AuthenticatorAssertionResponse == null || fido2AuthenticationResponse.AuthenticatorAssertionResponse.Signature == null) { break; } AuthenticateToServer(fido2AuthenticationResponse); log.Info(Tag, "fido2AuthenticationResponse", fido2AuthenticationResponse); } break; default: break; } }