Skip to content

Releases: Mauin/RxFingerprint

v3.0.0-RC-1

05 Apr 06:10
Compare
Choose a tag to compare
v3.0.0-RC-1 Pre-release
Pre-release

This release is the first release candidate of the new RxFingerprint v3. This release is not production ready and meant for testing the new Android P support. RxFingerprint v3 is scheduled to be released once the Android P APIs are finalized.

Changes

Major breaking changes:

  • RxFingerprint now has to be created via a Builder.
  • Support for Android P and the new FingerprintDialog.

Deprecations

  • RxFingerprint.isHardwareDetected. Prefer rxFingerprint.isAvailable()
  • RxFingerprint.hasEnrolledFingerprints. Prefer rxFingerprint.isAvailable()

Details

RxFingerprint.Builder

Instead of having a growing class of static methods RxFingerprint now has to be created and configured with a Builder.

new RxFingerprint.Builder(context)
    .encryptionMethod(EncryptionMethod.RSA)
    .keyInvalidatedByBiometricEnrollment(true)
    .dialogTitleText("RxFingerprint")
    .dialogSubtitleText("Android P FingerprintDialog support coming soon...")
    .dialogDescriptionText("And it will keep supporting the good old FingerprintManager for devices running M and N.")
    .dialogNegativeButtonText("Cancel")
    .build();

When using the created instance the calls to authenticate, encrypt and decrypt are then greatly simplified and deduplicated.

Android P support

FingerprintDialog

RxFingerprint now supports the new FingerprintDialog provided in Android P. Depending on the Android OS version of the device RxFingerprint will either chose FingerprintDialog for devices running Android P or above or the old FingerprintManager implementation on older devices with fingerprint hardware.

The FingerprintDialog APIs will automatically show standardized UI that prompts the user to interact with their fingerprint sensor. The UI can be customized with the following methods in the RxFingerprint Builder:

  • dialogTitleText Title of the dialog
  • dialogSubtitleText Subtitle of the dialog
  • dialogDescriptionText Description shown in the dialog
  • dialogNegativeButtonText Text shown on the button that cancels the fingerprint operation

Prompting users to register a Fingerprint

Android P supports opening the system preferences and leading the user to the Fingerprint setup screen.
This can be done by calling rxFingerprint.launchFingerprintEnrollment().

Feedback

Please provide any feedback, issues or bugs you encounter while testing this version of RxFingerprint in the Issues.

v2.2.1

12 Dec 18:46
Compare
Choose a tag to compare

This release adds a fix for issues with the Fingerprint API on Android Oreo not reporting KeyPermanentlyInvalidatedException. Devices on Android Oreo were seen incorrectly reporting IllegalBlockSizeException which now gets mapped to the KeyPermanentlyInvalidatedException.

Improvements:

  • #71 Fix Android Oreo not reporting KeyPermanentlyInvalidatedException correctly.
  • #73 Implement toString() for Fingerprint result classes.

v2.2.0

27 Nov 20:33
Compare
Choose a tag to compare

This release adds support to configure the invalidation behavior of encryption keys. Encryption methods now (optionally) take an extra parameter to specify if the keys should be invalidated in case the user changes their fingerprint setup on the device (by adding/removing fingerprints in the system settings) or not.

Additionally the RxFingerprint class got some more nullability annotations which should make the interop with Kotlin a slight bit more convenient.

API Enhancements:

  • #67 Allow key to be not invalidated upon biometric enrollment.

v2.1.0

26 Apr 06:23
Compare
Choose a tag to compare

This release introduces support for RSA encryption/decryption. When using RxFingerprint for encryption and decryption it is now possible to select between AES encryption and RSA encryption which differ in behavior of the fingerprint sensor.

Encrypting values with RSA does not require the user to authenticate with their fingerprint sensor. The authentication step is however still required for decrypting the value.

Encryption and decryption always has to use the same EncryptionMethod so when migrating from AES to RSA encryption, it is required to encrypt the data again using a new key. All encrypt/decrypt methods without the EncryptionMethod parameter will still use the AES EncryptionMethod as before.

API Enhancements:

  • #50 Add support for RSA encryption.
  • #46 Add support for custom log implementations and allow to disable all logging.

The RxFingerprint class gains 4 additional methods:

  • encrypt(EncryptionMethod, Context, String, String) to encrypt with choice of EncryptionMethod
  • decrypt(EncryptionMethod, Context, String, String) to decrypt a value with choice of EncryptionMethod
  • setLogger(RxFingerprintLogger) to set a custom logger implementation
  • disableLoging() to disable all logging of RxFingerprint

Dependency changes:

  • Update support library to v25.3.0
  • Update RxJava2 to v2.0.8

v2.0.3

08 Feb 19:08
Compare
Choose a tag to compare

This release will improve behavior of the library when KeyPermanentlyInvalidatedExceptions are thrown because the user has changed his lockscreen setup.
From this release on RxFingerprint will remove and renew the given key in the Android Keystore if a KeyPermanentlyInvalidatedException is thrown during encryption.

The overall behavior is unchanged:

  • You receive a onError notification containing a KeyPermanentlyInvalidatedException letting you know that you need to re-encrypt the users secrets.
  • The next time you call RxFingerprint.encrypt() the given key will now be renewed to make it usable again. (see issue #24 which raised the issue that it was not usable again before)

Fixes:

  • #34 Remove and renew keys on encrypt when KeyPermanentlyInvalidated exception is thrown
  • #38 Adds additional checks to ensure that the Fingerprint APIs are available on the device (this is a follow up to the FingerprintManagerCompat workaround in v2.0.2)

v1.2.3

08 Feb 19:08
Compare
Choose a tag to compare

This release backports all changes made to the 2.x version of RxFingerprint in the v2.0.2 and v2.0.3 release to work with the RxJava1 version.

Fixes:

  • #31 Remove usages of Support Library FingerprintManagerCompat and use FingerprintManager directly instead. This works around the issue of some devices not specifying the Fingerprint APIs correctly and being unable to detect the Fingerprint sensor with recent Support Libraries.
  • #29 Removes Retrolambda from the library. This caused issues for Apps using ProGuard and not using Retrolambda. (see Issue #27)
  • #34 Remove and renew keys on encrypt when KeyPermanentlyInvalidated exception is thrown
  • #38 Adds additional checks to ensure that the Fingerprint APIs are available on the device

Behaviour Changes:

  • #32 Emit FingerprintUnavailableException instead of IllegalAccessException when RxFingerprint operations are called even though RxFingerprint.isAvailable(...) returns false

Dependency changes:

  • Removes usages of the Android Support Library compat package
  • Updates Support Annotations to v25.1.1

v2.0.2

05 Feb 18:33
Compare
Choose a tag to compare

This release fixes issues with devices not being able to detect the Fingerprint APIs correctly after updating to the recent Support Libraries.

Fixes:

  • #31 Remove usages of Support Library FingerprintManagerCompat and use FingerprintManager directly instead. This works around the issue of some devices not specifying the Fingerprint APIs correctly and being unable to detect the Fingerprint sensor with recent Support Libraries.
  • #29 Removes Retrolambda from the library. This caused issues for Apps using ProGuard and not using Retrolambda. (see Issue #27)

Behaviour Changes:

  • #32 Emit FingerprintUnavailableException instead of IllegalAccessException when RxFingerprint operations are called even though RxFingerprint.isAvailable(...) returns false

Dependency changes:

  • Removes usages of the Android Support Library compat package
  • Updates Support Annotations to v25.1.1

v2.0.1

23 Nov 20:37
Compare
Choose a tag to compare

This release fixes an issue with disposing the FingerprintObservables in v2.0.0

Bugfixes:

  • #21 Prevent onError to throw after Observable was disposed of

Dependency updates:

  • #22 Upgrade RxJava to 2.0.1

v2.0.0

05 Nov 11:08
Compare
Choose a tag to compare

This release updates RxFingerprint to use RxJava 2!

Dependency updates:

  • #18 Upgrade RxJava to 2.0.0

There is no new functionality in this release other than compatiblity with RxJava2.

v1.2.2

20 Oct 07:40
Compare
Choose a tag to compare

Internal changes:

  • #16 No longer throws exceptions when invalid decryption output is given, but emits Throwable in onError with more detailed error message.