feat: Implement Constellation service for RCS phone verification #3269
+16,393
−1
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.
Summary
Implements the Constellation service (GMS Service ID 155) for phone number verification, which is required for RCS provisioning in Google Messages.
This builds on @benwaffle's excellent research and partial implementation from the
constellationbranch. Key improvements:droidguard_result(proto field 2, marked Required) instead of onlydroidguard_token(field 1, optional). This is likely the cause of the "invalid argument" error from SyncRequest.@RequiresApi(VANILLA_ICE_CREAM): The code doesn't use any Android 15-specific APIs. Added runtime version checks for API 33+ telephony calls instead.entitlement-server.example.complaceholder, extract the entitlement URL from the Ts43Challenge in the SyncResponse.What this enables
The Constellation service was previously a DummyService returning
API_DISABLED, which caused Google Messages to get stuck at theVerifyMsisdnStateduring RCS provisioning. This implementation provides:verifyPhoneNumber- Full SyncRequest → TS43 → ProceedRequest flowgetIidToken- IID token generation with ECDSA signatureArchitecture
Module structure
play-services-constellation/- AIDL interfaces and parcelable typesplay-services-constellation/core/- Service implementation + TS43 entitlement libraryplay-services-core-proto/phonenumberverification.proto- Wire protobuf schemaplay-services-core/.../ConstellationService.kt- Service wrapperTesting status
assembleVtmDefaultReleaseKnown limitations
Addresses #2994
🤖 Generated with Claude Code