public void Authenticate(Action successAction, Action failAction) { FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(Android.App.Application.Context); const int flags = 0; /* always zero (0) */ CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); // Using the Support Library classes for maximum reach FingerprintManagerCompat fingerPrintManager = FingerprintManagerCompat.From(Android.App.Application.Context); // AuthCallbacks is a C# class defined elsewhere in code. FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new AuthenticationCallBack(); var page = new FingerprintAuthenticationPage((int)Android.OS.Build.VERSION.SdkInt); Xamarin.Forms.Application.Current.MainPage.Navigation.PushPopupAsync(page); MessagingCenter.Subscribe <string, string>("FingerprintAuthentication", "Authenticate", (sender, arg) => { string result = arg; if (arg == "true") { MessagingCenter.Unsubscribe <string, string>("FingerprintAuthentication", "Authenticate"); Device.BeginInvokeOnMainThread(() => { Xamarin.Forms.Application.Current.MainPage.Navigation.PopPopupAsync(); }); //Do the thing when success to pass if (successAction != null) { successAction.Invoke(); } } else if (arg == "false") { Device.BeginInvokeOnMainThread(() => { page.SetFailLabelText("Fail to authenticate!"); }); } else { MessagingCenter.Unsubscribe <string, string>("FingerprintAuthentication", "Authenticate"); Device.BeginInvokeOnMainThread(() => { Xamarin.Forms.Application.Current.MainPage.Navigation.PopPopupAsync(); }); //Do the thing when fail to pass if (failAction != null) { failAction.Invoke(); } } }); cancellationSignal = new Android.Support.V4.OS.CancellationSignal(); // Here is where the CryptoObjectHelper builds the CryptoObject. fingerprintManager.Authenticate(cryptoHelper.BuildCryptoObject(), flags, cancellationSignal, authenticationCallback, null); }
private void LogUserIn() { var authenticationCallback = new AuthenticationCallback(this, _userId); Toast.MakeText(this, "Place fingerprint on sensor", ToastLength.Long).Show(); _fingerprintManager.Authenticate(null, 0, _cancellationSignal, authenticationCallback, null); }
private async Task <bool> Authenticate() { SimpleAuthCallbacks callback = new SimpleAuthCallbacks(); Android.Content.Context context = Android.App.Application.Context; Permission isUsingFingerprint = ContextCompat.CheckSelfPermission(context, Manifest.Permission.UseFingerprint); if (isUsingFingerprint == Permission.Granted) { Android.Support.V4.OS.CancellationSignal cancellationSignal = new Android.Support.V4.OS.CancellationSignal(); CryptoObjectHelper cryptHelper = new CryptoObjectHelper(); FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context); fingerprintManager.Authenticate( cryptHelper.BuildCryptoObject(), (int)FingerprintAuthenticationFlags.None, /* flags */ cancellationSignal, callback, null ); } while (callback.IsWaiting) { await Task.Delay(87); } return(callback.Status == SimpleAuthCallbacks.AuthenticateResult.Success); }
private void LogUserIn() { _cancelation = new global::Android.Support.V4.OS.CancellationSignal(); FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new AuthenticationCallback(this, _userId); Toast.MakeText(this, "Place fingerprint on sensor", ToastLength.Long).Show(); _fingerprintManagerCompat.Authenticate(null, 0, _cancelation, authenticationCallback, null); }
public void GetFingerprint(EventHandler evt, bool encrypt, byte[] data) { //make sure the device is secured KeyguardManager keyguardManager = (KeyguardManager)Application.Context.GetSystemService(Context.KeyguardService); if (!keyguardManager.IsKeyguardSecure) { return; } //make sure fingerprints are enrolled if (!m_fingerprintManager.HasEnrolledFingerprints) { return; } //check permissions Android.Content.PM.Permission permissionResult = ContextCompat.CheckSelfPermission(Application.Context, Manifest.Permission.UseFingerprint); if (permissionResult != Android.Content.PM.Permission.Granted) { return; } m_evt = evt; m_data = data; m_mode = encrypt ? CipherMode.EncryptMode : CipherMode.DecryptMode; CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); cancellationSignal = new Android.Support.V4.OS.CancellationSignal(); //prompt user to scan their fingerprint m_fingerprintManager.Authenticate(cryptoHelper.BuildCryptoObject(m_mode), 0, cancellationSignal, this, null); }
public bool Login() { var retVal = true; Android.Content.PM.Permission permissionResult = ContextCompat.CheckSelfPermission(context, Manifest.Permission.UseFingerprint); if (permissionResult == Android.Content.PM.Permission.Granted) { } else { // No permission. // https://developer.android.com/training/permissions/requesting.html } FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context); const int flags = 0; CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); // cancellationSignal - stop scanning _cancellationSignal = new Android.Support.V4.OS.CancellationSignal(); fingerprintManager = FingerprintManagerCompat.From(context); // Callback method FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new AuthResultsCallback(); // Start scanning fingerprintManager.Authenticate(cryptoHelper.BuildCryptoObject(), flags, _cancellationSignal, authenticationCallback, null); return(retVal); }
private void LogUserIn() { var cancellation = new Android.Support.V4.OS.CancellationSignal(); FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new AuthenticationCallback(this, userId); Toast.MakeText(this, "Поднесите палец к сенсору", ToastLength.Long).Show(); fingerprintManager.Authenticate(null, 0, cancellation, authenticationCallback, null); }
private void UserFPMLogin() { var cancel = new global::Android.Support.V4.OS.CancellationSignal(); FingerprintManagerCompat.AuthenticationCallback authentication = new AuthenticationCallback(this, UserId); Toast.MakeText(this, "Place fingerprint on sensor", ToastLength.Long).Show(); fpm.Authenticate(null, 0, cancel, authentication, null); }
/// <summary> /// Initialize fingerprint authentication mechanism /// </summary> /// <param name="activity">Root activity</param> public static void FingerprintAuthenticate(Activity activity) { FingerprintManagerCompat fingerprint = FingerprintManagerCompat.From(activity); KeyguardManager keyGuard = activity.GetSystemService(Context.KeyguardService) as KeyguardManager; Android.Content.PM.Permission permission = activity.CheckSelfPermission(Android.Manifest.Permission.UseFingerprint); if (fingerprint.IsHardwareDetected && keyGuard.IsKeyguardSecure && fingerprint.HasEnrolledFingerprints && permission == Android.Content.PM.Permission.Granted) { const int flags = 0; CryptoObjectFactory cryptoHelper = new CryptoObjectFactory(); FingerprintManagerCompat.AuthenticationCallback authCallback = new AuthCallback(activity as Activities.LoginActivity); fingerprint.Authenticate(cryptoHelper.BuildCryptoObject(), flags, new Android.Support.V4.OS.CancellationSignal(), authCallback, null); } }
public void StartScanning() { const int flags = 0; /* always zero (0) */ CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); // cancellationSignal can be used to manually stop the fingerprint scanner. // On: cancellationSignal.Cancel(); cancellationSignal = new CancellationSignal(); // NOTE: For more security, like online transactions,etc... // Consider using Asymmetric keys // Send public key to server to identity user // When bio-auth succeed, send private to server to decrypted // https://android-developers.googleblog.com/2015/10/new-in-android-samples-authenticating.html // Start the fingerprint scanner. fingerprintManager.Authenticate(cryptoHelper.BuildCryptoObject(), flags, cancellationSignal, RegisterAuthCallback(), null); System.Diagnostics.Debug.WriteLine("Start scanning..."); }
public Task <bool> Scan() { tcs = new TaskCompletionSource <bool>(); var Context = Android.App.Application.Context; // Using the Android Support Library v4 FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(Context); if (!fingerprintManager.IsHardwareDetected) { Toast.MakeText(Context, "FingerPrint authentication permission not enable", ToastLength.Short).Show(); tcs.SetResult(false); return(tcs.Task); } if (!fingerprintManager.HasEnrolledFingerprints) { Toast.MakeText(Context, "Register at least one fingerprint in Settings", ToastLength.Short).Show(); } else { const int flags = 0; /* always zero (0) */ // CryptoObjectHelper is described in the previous section. CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); // cancellationSignal can be used to manually stop the fingerprint scanner. var cancellationSignal = new Android.Support.V4.OS.CancellationSignal(); // AuthenticationCallback is a base class that will be covered later on in this guide. //FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new MyAuthCallbackSample(this); // Start the fingerprint scanner. fingerprintManager.Authenticate(cryptoHelper.BuildCryptoObject(), flags, cancellationSignal, this, null); Toast.MakeText(Context, "Put your finger to scan", ToastLength.Short).Show(); } return(tcs.Task); }
public void fingerPrintDetection(Activity context) { // Using the Android Support Library v4 FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context); if (fingerprintManager.IsHardwareDetected) { if (fingerprintManager.HasEnrolledFingerprints) { // The context is typically a reference to the current activity. Android.Content.PM.Permission permissionResult = ContextCompat.CheckSelfPermission(context, Manifest.Permission.UseFingerprint); if (permissionResult == Android.Content.PM.Permission.Granted) { // Permission granted - go ahead and start the fingerprint scanner. CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); var cancellationSignal = new Android.Support.V4.OS.CancellationSignal(); // AuthCallbacks is a C# class defined elsewhere in code. FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new SimpleAuthCallbacks(context); // Here is where the CryptoObjectHelper builds the CryptoObject. fingerprintManager.Authenticate(cryptoHelper.BuildCryptoObject(), (int)FingerprintAuthenticationFlags.None, cancellationSignal, authenticationCallback, null); } else { // No permission. Go and ask for permissions and don't start the scanner. See // http://developer.android.com/training/permissions/requesting.html } } else { //user has not enrolled for fingerprint } } else { //Device is not compatible for fingerprint scanning } }
/// <summary> /// Starts the authentication. /// </summary> public void StartAuthentication() { // Stop any previous scan. StopAuthentication(); if (!InternalIsFingerprintAvailable()) { return; } try { mCancellationSignal = new CancellationSignal(); _fingerprintManager.Authenticate(CryptoObjectBuilder.Build(), (int)FingerprintAuthenticationFlags.None, mCancellationSignal, new AuthenticationCallbacks(this), null); } catch (Exception ex) { _authenticationCallback.AuthenticationError(AuthenticationErrorCodes.Unexpected, ex.Message); } }
internal void StartAuthentication(FingerprintManagerCompat fingerprintManager, FingerprintManagerCompat.CryptoObject cryptoObject) { CancellationSignal cancellationSignal = new CancellationSignal(); fingerprintManager.Authenticate(cryptoObject, 0, cancellationSignal, this, null); }
private void LogUserIn() { fingerprintStatusTextView.Text = "Authenticating..."; FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new AuthenticationCallback(this, "user321032"); fingerprintManagerCompat.Authenticate(null, 0, cancelationSignal, authenticationCallback, null); }
public static async System.Threading.Tasks.Task Authenticate(DialogConfiguration dialogConfiguration) { //Android 10+ Q SdkInt 29+ if ((int)Build.VERSION.SdkInt >= 29) { CancellationSignal BiometricCancellationSignal = new CancellationSignal(); //Android 10 BiometricCancellationSignal = new CancellationSignal(); BiometricPrompt biometricPrompt; if (dialogConfiguration.IsUseAlternativeAuthentication) { //Allow using PIN / Passcode as alternative, will disable crypto in authentication biometricPrompt = new BiometricPrompt .Builder(Configuration.CurrentActivity) .SetTitle(dialogConfiguration.DialogTitle) .SetDescription(dialogConfiguration.DialogDescription) .SetDeviceCredentialAllowed(true) .Build(); } else { biometricPrompt = new BiometricPrompt .Builder(Configuration.CurrentActivity) .SetTitle(dialogConfiguration.DialogTitle) .SetDescription(dialogConfiguration.DialogDescription) .SetNegativeButton(dialogConfiguration.AlternativeActionMessage, Configuration.CurrentActivity.MainExecutor, new NegativeButtonOnClickListener(() => { BiometricCancellationSignal.Cancel(); dialogConfiguration.AlternativeAction?.Invoke(); })) .Build(); } BiometricPrompt.AuthenticationCallback authenticationCallback = new BiometricAuthenticationCallback(); AuthenticationResult = null; AuthenticationResult = (arg) => { string result = arg; if (arg == SystemMessages.Success) { BiometricCancellationSignal.Cancel(); dialogConfiguration.SuccessAction?.Invoke(); } else if (arg == SystemMessages.Error) { BiometricCancellationSignal.Cancel(); dialogConfiguration.FailedAction?.Invoke(); } }; if (dialogConfiguration.IsUseAlternativeAuthentication) { //Secret key is not allowed to use when SetDeviceCredentialAllowed is true biometricPrompt.Authenticate(BiometricCancellationSignal, Configuration.CurrentActivity.MainExecutor, authenticationCallback); } else { if (Configuration.IsUseSecretKey) { CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); biometricPrompt.Authenticate(cryptoHelper.BuildBiometricPromptCryptoObject(), BiometricCancellationSignal, Configuration.CurrentActivity.MainExecutor, authenticationCallback); } else { biometricPrompt.Authenticate(BiometricCancellationSignal, Configuration.CurrentActivity.MainExecutor, authenticationCallback); } } } //Android 9+ P SdkInt 28 else if ((int)Build.VERSION.SdkInt >= 28) { //Android 9 try { CancellationSignal BiometricCancellationSignal = new CancellationSignal(); BiometricPrompt biometricPrompt; biometricPrompt = new BiometricPrompt .Builder(Configuration.CurrentActivity) .SetTitle(dialogConfiguration.DialogTitle) .SetDescription(dialogConfiguration.DialogDescription) .SetNegativeButton(dialogConfiguration.AlternativeActionMessage, Configuration.CurrentActivity.MainExecutor, new NegativeButtonOnClickListener(() => { BiometricCancellationSignal.Cancel(); dialogConfiguration.AlternativeAction?.Invoke(); })) .Build(); BiometricCancellationSignal = new CancellationSignal(); BiometricPrompt.AuthenticationCallback authenticationCallback = new BiometricAuthenticationCallback(); AuthenticationResult = null; AuthenticationResult = (arg) => { string result = arg; if (arg == SystemMessages.Success) { BiometricCancellationSignal.Cancel(); dialogConfiguration.SuccessAction?.Invoke(); } else if (arg == SystemMessages.Error) { BiometricCancellationSignal.Cancel(); dialogConfiguration.FailedAction?.Invoke(); } }; if (Configuration.IsUseSecretKey) { CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); biometricPrompt.Authenticate(cryptoHelper.BuildBiometricPromptCryptoObject(), BiometricCancellationSignal, Configuration.CurrentActivity.MainExecutor, authenticationCallback); } else { biometricPrompt.Authenticate(BiometricCancellationSignal, Configuration.CurrentActivity.MainExecutor, authenticationCallback); } } catch (Exception ex) { Configuration.CurrentActivity.RunOnUiThread(() => { Toast.MakeText(Configuration.CurrentActivity, $"Throw exception : {ex.Message}", ToastLength.Long).Show(); }); } } //Android 6+ to 8.x SdkInt 23 else if ((int)Build.VERSION.SdkInt >= 23) { //Android 6+ to 8.x FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(Configuration.CurrentActivity); const int flags = 0; /* always zero (0) */ CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(); // Using the Support Library classes for maximum reach FingerprintManagerCompat fingerPrintManager = FingerprintManagerCompat.From(Configuration.CurrentActivity); // AuthCallbacks is a C# class defined elsewhere in code. Android.Support.V4.OS.CancellationSignal FingerprintCancellationSignal = new Android.Support.V4.OS.CancellationSignal(); FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new AuthenticationCallBack(); Android.Support.V4.App.FragmentTransaction transcation = ((FragmentActivity)Configuration.CurrentActivity).SupportFragmentManager.BeginTransaction(); FingerprintDialog fingerprintDialog = new FingerprintDialog(dialogConfiguration, authenticationCallback, FingerprintCancellationSignal); fingerprintDialog.Show(transcation, "Dialog Fragment"); AuthenticationResult = null; AuthenticationResult = (arg) => { string result = arg; if (arg == SystemMessages.Success) { FingerprintCancellationSignal.Cancel(); dialogConfiguration.SuccessAction?.Invoke(); } else if (arg == SystemMessages.Error) { FingerprintCancellationSignal.Cancel(); dialogConfiguration.FailedAction?.Invoke(); } }; try { fingerprintManager.Authenticate(cryptoHelper.BuildFingerprintManagerCompatCryptoObject(), flags, FingerprintCancellationSignal, authenticationCallback, null); } catch (Exception ex) { Toast.MakeText(Configuration.CurrentActivity, $"Throw exception : {ex.Message}", ToastLength.Long); } } }