Privileged system service that performs KeyMint attestation and calls the backend. Apps never see the certificate chain.
- Default backend URLs are read from
/product/etc/unifiedattestation.xml(OEM-provided).
Sample XML (in /product/etc/unifiedattestation.xml):
<backends>
<backend url="http://localhost:3001" />
</backends>IUnifiedAttestationService.getProviderSet(projectId)returns enabled backendIds.requestIntegrityToken(backendId, projectId, requestHash, callback)performs attestation and returns token.- Binding requires
net.uattest.service.BIND_UNIFIED_ATTESTATION(signature|privileged).
- Alias format:
ua:<packageName>:<backendId>. - EC P-256,
SIGN|VERIFY, SHA-256.
- Add backend by URL (resolves backendId via
/api/v1/info). - Enable/disable backend.
- Refresh health checks.
- Sanity check triggers a local request hash and full flow.
cd Android-Service
./gradlew assembleDebugInstall the APK as a privileged system app for production use.