Release 0.11.1 - #153
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
By submitting a PR to this repository, you agree to the terms within the Auth0 Code of Conduct. Please see the contributing guidelines for how to create and submit a high-quality PR for this repo.
Description
This PR prepares the 0.11.1 release of the Guardian Android SDK. It bumps the version in .version from 0.11.0 to 0.11.1 and adds the corresponding CHANGELOG.md entry.
0.11.1 is a patch release that ships the fix already merged to master in #151: RichConsentsAPIClient previously signed the DPoP assertion by casting the enrollment PrivateKey to java.security.interfaces.RSAPrivateKey. Hardware-backed Android Keystore keys (AndroidKeyStoreRSAPrivateKey) do not implement that interface, so fetching a rich consent crashed with a ClassCastException for any enrollment whose key lives in the Android Keystore. The fix signs the assertion via java.security.Signature ("SHA256withRSA"), which accepts any PrivateKey.
No API changes, no breaking changes. The signing change is backwards compatible: Signature.initSign(PrivateKey) works for both hardware-backed Keystore keys and plain in-memory RSA keys, so existing enrollments continue to work unchanged. This PR itself contains only the version bump and changelog — the code fix landed in #151.
References
Testing
The fix in #151 added a regression test, RichConsentsAPIClientTest#shouldFetchRichConsentWithKeystorePrivateKey, which fails with ClassCastException on the pre-fix code and passes with the fix.
Reviewers can verify:
Beyond unit tests, the fix was validated end-to-end on a physical Android device against the production Guardian app: the crash was reproduced on the pre-fix SDK (AndroidKeyStoreRSAPrivateKey cannot be cast to RSAPrivateKey), and with the patched SDK the rich-consent request was signed and reached the server successfully — no crash.
Developed on: Android SDK (Java), Gradle 8.13 / AGP 8.12.2, JDK 17 (Corretto 17), Robolectric unit tests on @config(sdk = 23).
Checklist