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); }
public override async Task <SecureFingerprintAuthenticationResult> AuthenticateSecureNoDialogAsync(IAuthenticationFailedListener failedListener, string key, CancellationToken cancellationToken) { using (var cancellationSignal = new Android.Support.V4.OS.CancellationSignal()) using (cancellationToken.Register(() => cancellationSignal.Cancel())) { CryptoObjectHelper crypto = new CryptoObjectHelper(); var callback = new SecureFingerprintAuthenticationCallback(failedListener, key); GetServiceCompat().Authenticate(crypto.BuildCryptoObject(), (int)FingerprintAuthenticationFlags.None, cancellationSignal, callback, null); return(await callback.GetTask()); } }
public void Authenticate(byte[] secret, FingerprintSignOp operation) { const int flags = 0; /* Sempre zero */ if (!IsReady()) { throw new Exception(Resources.GetString(Resource.String.errFpNotRead)); } // Estrae l'initialization vector byte[] iv = new byte[] { }; if (operation == FingerprintSignOp.Decrypt) { string data = System.Text.Encoding.UTF8.GetString(secret); string[] base64Data = data.Split(new char[] { ';' }); if (base64Data.Length < 2) { throw new Exception("Invalid data"); } secret = Convert.FromBase64String(base64Data[0]); iv = Convert.FromBase64String(base64Data[1]); } // Oggetto per la verifica dell'integrità dell'impronta digitale CurrentOperation = operation; CryptoObjectHelper cryptoHelper = new CryptoObjectHelper(operation == FingerprintSignOp.Crypt ? CipherMode.EncryptMode : CipherMode.DecryptMode, iv); // Segnale per la cancellazione manuale della lettura dell'impronta FingerprintCancel = new Android.Support.V4.OS.CancellationSignal(); // Oggetto per la gestione della callback di autenticazione FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new FingerprintAuthCallback(this, secret); // Avvia lo scanner FingerprintManager.Authenticate(cryptoHelper.BuildCryptoObject(), flags, FingerprintCancel, authenticationCallback, null); }