Skip to content

v1.9.3 - Sync for Proton (calendar upload fix)

Choose a tag to compare

@bolausson bolausson released this 06 Aug 19:37

A correctness release on top of v1.9.2. Recommended for everyone, and important if you use Proton's post-quantum encryption keys.

Calendar changes could stop uploading

Sending anything to Proton has to be signed with one of your address keys. The app kept a small signing key ring per address, and under one condition it closed the ring it was still pointing at. Every later attempt then failed with an internal "key ring is closed" error, so calendar edits and invitations stayed on the phone until the app was restarted. Nothing was lost, but nothing left the device either.

It needed the keys to be unlocked twice in one run of the app, which normally only happened after a re-authentication. On an account using post-quantum encryption keys it could happen on the very first sync, because such an account has two keys on one address (a classic one and a post-quantum one) and the second one displaced the first.

Keys are re-read while the app runs

Proton adds keys to a live account: turning on post-quantum encryption generates new user and address keys, and adding an address generates more. The app read your keys once and then trusted that copy for as long as it kept running, so a key created afterwards was invisible until the app was restarted. Calendar unlock in particular depends on the current primary address key, so a new one could stop a calendar decrypting.

Keys are now re-read periodically, and immediately if a calendar key fails to unlock, which is what a key added since the last read looks like.

This is the same class of problem Proton described when they paused their own post-quantum rollout: clients holding a key in memory and not noticing it had changed.


Install: add this repo in Obtainium, or download the APK below and sideload it.
Requires a subscription (7-day free trial): subscribe at https://apps.olausson.de/sync_provider_for_proton/checkout.html, then paste your sub_… id into the app under Settings, Subscription, Activate.

  • Version: 1.9.3 (versionCode 109003), minSdk 29 (Android 10+), localised in 25 languages
  • Signing cert SHA-256: c6e622ea0eb35e75b6281084dc20a2b8d5bdc346364ae6a0f8b82679aa68baa8 (stable across releases for Obtainium)