Releases: Mauin/RxFingerprint
v3.0.0-RC-1
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 aBuilder
.- Support for Android P and the new
FingerprintDialog
.
Deprecations
RxFingerprint.isHardwareDetected
. PreferrxFingerprint.isAvailable()
RxFingerprint.hasEnrolledFingerprints
. PreferrxFingerprint.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 dialogdialogSubtitleText
Subtitle of the dialogdialogDescriptionText
Description shown in the dialogdialogNegativeButtonText
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
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:
v2.2.0
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
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 ofEncryptionMethod
decrypt(EncryptionMethod, Context, String, String)
to decrypt a value with choice ofEncryptionMethod
setLogger(RxFingerprintLogger)
to set a custom logger implementationdisableLoging()
to disable all logging of RxFingerprint
Dependency changes:
- Update support library to
v25.3.0
- Update RxJava2 to
v2.0.8
v2.0.3
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 aKeyPermanentlyInvalidatedException
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:
v1.2.3
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 useFingerprintManager
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 ofIllegalAccessException
when RxFingerprint operations are called even thoughRxFingerprint.isAvailable(...)
returnsfalse
Dependency changes:
- Removes usages of the Android Support Library
compat
package - Updates Support Annotations to
v25.1.1
v2.0.2
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 useFingerprintManager
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 ofIllegalAccessException
when RxFingerprint operations are called even thoughRxFingerprint.isAvailable(...)
returnsfalse
Dependency changes:
- Removes usages of the Android Support Library
compat
package - Updates Support Annotations to
v25.1.1