Summary
Android AppSupport currently provides only a software keystore. Apps that create hardware-backed keys and require key attestation fail. In Norway this blocks Vipps (and with it Vipps MobilePay in DK/FI), and likely other banking and eID apps across the Nordics. I’d like to request that AppSupport expose the device’s real KeyMint/TEE to Android apps, together with verified boot, so that these apps can be supported.
What happens today (Jolla Phone 2026, SFOS 5.2.0.20, microG with Google account)
Vipps 10.41.1 gets through BankID login and Play Integrity (requestIntegrityToken() success), then fails when the PIN is set up. Right before, keystore2 reports:
Failed to get rpc for sec level TRUSTED_ENVIRONMENT
Error::Km(HARDWARE_TYPE_UNAVAILABLE)
Error::Km(CANNOT_ATTEST_IDS)
So the integrity check passes; what fails is the missing TEE-backed key and attestation.
What Vipps requires
I asked Vipps directly. Their answer, summarised: Vipps works on GrapheneOS when the bootloader is locked, Google Play Services runs sandboxed, and the app is installed from the Play Store. They are aware this isn’t enough for everyone and are not actively trying to block such setups.
Notably, GrapheneOS does not pass Google’s “device integrity” verdict. This suggests Vipps relies on hardware key attestation with a locked bootloader (GrapheneOS’s verified-boot key being accepted), not on full Google certification. In other words, Sailfish would not need to become a certified Google device. It would need what GrapheneOS provides: a real TEE-backed keystore and a verifiable boot state.
Proposal
- KeyMint bridge: expose the vendor KeyMint/Keymaster HAL (already present on the device for libhybris) to keystore2 inside the AppSupport container, instead of the software implementation. keystore2’s per-uid separation would keep app keys isolated.
- Verified boot: support a locked bootloader with verified boot on official Jolla devices, and publish Sailfish’s verified-boot key, so attestation can report a trustworthy boot state.
- Talk to Vipps (and others): with 1 and 2 in place, ask Vipps to accept Sailfish’s boot key the same way they accept GrapheneOS’s. Vipps states they are not hostile to such setups, so this seems realistic.
Questions for Jolla
- Does the Jolla Phone’s TEE have factory-provisioned attestation keys that chain to Google’s attestation root? If not, is there an alternative route?
- Is a locked-bootloader/verified-boot configuration planned for official devices?
- Would Jolla be willing to approach Vipps MobilePay (and possibly the BankID operators) directly? A request from the OS vendor carries far more weight than individual users.
Why it matters
Vipps, BankID and banking apps are effectively part of public infrastructure in Norway and the other Nordic countries. Today they are the single biggest reason people can’t use Sailfish as their only phone. Hardware-backed keys would also make AppSupport more secure in general, and the same capability is likely needed for the EU Digital Identity Wallet.
Full logs available on request.