fix(android): protect credentials with Android Keystore - #838
Merged
H-Chris233 merged 13 commits intoJul 18, 2026
Conversation
Contributor
PR Reviewer Guide 🔍(Review updated until commit 11fb522)Here are some key observations to aid the review process:
|
Contributor
|
Persistent review updated to latest commit b34870a |
Contributor
|
Persistent review updated to latest commit 470de3b |
Contributor
|
Persistent review updated to latest commit aa1ddbe |
Contributor
|
Persistent review updated to latest commit f8296bf |
Contributor
|
Persistent review updated to latest commit c163070 |
Contributor
|
Persistent review updated to latest commit e28772a |
Contributor
|
Persistent review updated to latest commit 3c186cb |
Contributor
|
Persistent review updated to latest commit 1cb899e |
Contributor
|
Persistent review updated to latest commit 11fb522 |
3 tasks
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.
User description
Fixes #817
Summary
Validation
8d015882b6d549288f5762baac281c802913d1b1bbe7d0bff213767cc25e1238a1dacbafea0463c71cf17f251ed23b57a5f54135f8296bff48d4e855a5d4718b39cef5c68c052957npm testpassed all 24 frontend/contract tests after initializing the pinned submodulePR Type
Bug fix, Enhancement, Tests
Description
Protect Android credentials with Keystore-backed AES-256-GCM
Add crash-safe migration scrubbing Marketplace tokens
Implement JNI bridge and Kotlin Keystore vault classes
Add JVM, instrumentation, and CI test coverage
Diagram Walkthrough
flowchart LR legacy["Base64 Envelope"] -->|read & sanitize| sanitized["Bearer-free Base64"] sanitized -->|migrate| new_env["V2 AES-GCM Envelope"] new_env -->|decrypt/encrypt| keystore["Android KeyStore"] keystore -->|rollback barrier| marker["Migration Complete Marker"] new_env -->|fail-closed| secure_remove["Secure Erase on Failure"]File Walkthrough
5 files
New Keystore-backed credential store moduleIntegrate Keystore vault with migrationAdd JNI bridge for Keystore operationsKotlin Keystore vault facadePure AES-GCM packet codec3 files
Register android_credentials moduleCopy test scaffolding to generated projectAdd Android x86_64 CI and emulator tests3 files
JVM unit tests for AES-GCM cipherInstrumented Keystore integration testsContract tests for Keystore implementation