public FingerprintEncryption(FingerprintModule fingerprint, string keyId) : base(fingerprint, keyId) { _keyGen = fingerprint.KeyGenerator; Kp2aLog.Log("FP: CreateKey "); CreateKey(); }
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) { if (requestCode == FINGERPRINT_PERMISSION_REQUEST_CODE && grantResults[0] == Android.Content.PM.Permission.Granted) { Button encButton = FindViewById <Button>(Resource.Id.MyButton); Button decButton = FindViewById <Button>(Resource.Id.Decrypt); encButton.Visibility = ViewStates.Visible; encButton.Enabled = true; var fingerprint = new keepass2android.FingerprintModule(this); encButton.Click += (sender, args) => { var fingerprintEnc = new FingerprintEncryption(fingerprint, _keyId); if (fingerprintEnc.InitCipher()) { fingerprintEnc.StartListening(new EncryptionCallback(this, fingerprintEnc, prefKey)); } else { Toast.MakeText(this, "Error initiating cipher", ToastLength.Long).Show(); } }; decButton.Click += (sender, args) => { var fingerprintDec = new FingerprintDecryption(fingerprint, _keyId, this, prefKey); if (fingerprintDec.InitCipher()) { fingerprintDec.StartListening(new DecryptionCallback(this, fingerprintDec, prefKey)); } else { Toast.MakeText(this, "Error initiating cipher", ToastLength.Long).Show(); } }; if (!fingerprint.KeyguardManager.IsKeyguardSecure) { encButton.Enabled = false; // Show a message that the user hasn't set up a fingerprint or lock screen. Toast.MakeText(this, "Secure lock screen hasn't set up.\n" + "Go to 'Settings -> Security -> Fingerprint' to set up a fingerprint", ToastLength.Long).Show(); return; } if (!fingerprint.FingerprintManager.HasEnrolledFingerprints) { encButton.Enabled = false; // This happens when no fingerprints are registered. Toast.MakeText(this, "Go to 'Settings -> Security -> Fingerprint' " + "and register at least one fingerprint", ToastLength.Long).Show(); return; } } }
public FingerprintCrypt(FingerprintModule fingerprint, string keyId) { _keyId = keyId; _cipher = fingerprint.Cipher; _keystore = fingerprint.Keystore; _fingerprintManager = fingerprint.FingerprintManager; }
public FingerprintCrypt(FingerprintModule fingerprint, string keyId) { Kp2aLog.Log("FP: Create " + this.GetType().Name); _keyId = keyId; _cipher = fingerprint.Cipher; _keystore = fingerprint.Keystore; _fingerprintManager = fingerprint.FingerprintManager; }
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) { if (requestCode == FingerprintPermissionRequestCode && grantResults[0] == Permission.Granted) { FingerprintModule fpModule = new FingerprintModule(this); if (!fpModule.FingerprintManager.IsHardwareDetected) { //seems like not all Samsung Devices (e.g. Note 4) don't support the Android 6 fingerprint API if (!TrySetupSamsung()) { SetError(Resource.String.fingerprint_hardware_error); } UpdateKeyboardCheckboxVisibility(); return; } if (!fpModule.FingerprintManager.HasEnrolledFingerprints) { SetError(Resource.String.fingerprint_no_enrolled); return; } ShowRadioButtons(); UpdateKeyboardCheckboxVisibility(); } }
public FingerprintDecryption(FingerprintModule fingerprint, string keyId, Context context, string prefKey) : base(fingerprint, keyId) { _context = context; _iv = Base64.Decode(PreferenceManager.GetDefaultSharedPreferences(context).GetString(GetIvPrefKey(prefKey), null), 0); }
public FingerprintDecryption(FingerprintModule fingerprint, string keyId, byte[] iv) : base(fingerprint, keyId) { _iv = iv; }
private bool InitFingerprintUnlock() { Kp2aLog.Log("InitFingerprintUnlock"); if (_fingerprintIdentifier != null) { Kp2aLog.Log("Already listening for fingerprint!"); return(true); } var btn = FindViewById <ImageButton>(Resource.Id.fingerprintbtn); try { FingerprintUnlockMode um; Enum.TryParse(PreferenceManager.GetDefaultSharedPreferences(this).GetString(App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintModePrefKey, ""), out um); btn.Visibility = (um != FingerprintUnlockMode.Disabled) ? ViewStates.Visible : ViewStates.Gone; if (um == FingerprintUnlockMode.Disabled) { _fingerprintIdentifier = null; return(false); } if (_fingerprintPermissionGranted) { FingerprintModule fpModule = new FingerprintModule(this); Kp2aLog.Log("fpModule.FingerprintManager.IsHardwareDetected=" + fpModule.FingerprintManager.IsHardwareDetected); if (fpModule.FingerprintManager.IsHardwareDetected) //see FingerprintSetupActivity { _fingerprintIdentifier = new FingerprintDecryption(fpModule, App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey, this, App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey); } } if ((_fingerprintIdentifier == null) && (!FingerprintDecryption.IsSetUp(this, App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey))) { try { Kp2aLog.Log("trying Samsung Fingerprint API..."); _fingerprintIdentifier = new FingerprintSamsungIdentifier(this); btn.Click += (sender, args) => { if (_fingerprintIdentifier.Init()) { _fingerprintIdentifier.StartListening(this, this); } }; Kp2aLog.Log("trying Samsung Fingerprint API...Seems to work!"); } catch (Exception) { Kp2aLog.Log("trying Samsung Fingerprint API...failed."); _fingerprintIdentifier = null; } } if (_fingerprintIdentifier == null) { FindViewById <ImageButton>(Resource.Id.fingerprintbtn).Visibility = ViewStates.Gone; return(false); } btn.Tag = GetString(Resource.String.fingerprint_unlock_hint); if (_fingerprintIdentifier.Init()) { Kp2aLog.Log("successfully initialized fingerprint."); btn.SetImageResource(Resource.Drawable.ic_fp_40px); _fingerprintIdentifier.StartListening(this, this); return(true); } else { Kp2aLog.Log("failed to initialize fingerprint."); HandleFingerprintKeyInvalidated(); } } catch (Exception e) { Kp2aLog.Log("Error initializing Fingerprint Unlock: " + e); btn.SetImageResource(Resource.Drawable.ic_fingerprint_error); btn.Tag = "Error initializing Fingerprint Unlock: " + e; _fingerprintIdentifier = null; } return(false); }