Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
        }