proton-protoncore_ios/vendor
Lukas Burkhalter aa22fbcb66
chore(crypto): Remove the multiversion crypto lib builds
The default builds contain the v3 API from now.
2025-11-21 12:12:51 +01:00
..
Crypto+Search-Go Update all crypto go libraries 2025-10-02 15:09:32 +00:00
Crypto+VPN-patched-Go Update all crypto go libraries 2025-10-02 15:09:32 +00:00
Crypto-Go feat(crypto): Update Crypto-Go and Crypto-patched-Go 2025-11-21 11:39:51 +01:00
Crypto-patched-Go feat(crypto): Update Crypto-Go and Crypto-patched-Go 2025-11-21 11:39:51 +01:00
VCard Update the VCard library to support the anniversary field in contact 2023-11-01 10:23:18 +08:00
README.md History Split 2023-08-17 14:06:36 +02:00

Golang libraries

Proton uses some core libraries written in golang, to have a shared implementation for mobile platforms.

Flavors

The way golang bindings are generated imposes to have at most one golang runtime per process. That means that we have to bundle all golang libraries into a single framework. As some clients require different libraries for product specific features, we provide different flavors of the golang build.

Crypto

The crypto build contains the cryptographic libraries used by all clients:

  • go-srp : used for signup and login authentication
  • gopenpgp: used for OpenPGP crypto

VPN

In addition to the cryptographic libraries, the VPN flavor includes a vpn specific library:

In addition to the cryptographic libraries, the Search flavor includes a mail specific library:

Golang version

The ideal situation is to have all clients using the latest stable version of golang. In practice, some clients have experienced crashes when trying to upgrade, and some clients need to support iOS versions that are no longer supported by the latest version of golang. To resolve this situation, we provide frameworks built with different golang versions. The goal is to have all the clients independently experiment with upgrading the builds to the highest golang version that supports their target OS version.

The 1.15.15 and 1.18.3 builds are legacy builds, and clients should upgrade to 1.17.9 if they need support for iOS 11 and 1.19.2 if they don't.

Golang 1.15.15

  • Builds:
  • This is a legacy build, clients should try to upgrade to 1.17.9 or 1.19.2
  • Changes in golang >= 1.16 brought some instability for iOS, which blocked some clients from upgrading.
    • New builds use a forked version of golang, made to patch the reported issues.
  • Has a known issue (crash can happen) that was fixed in 1.17.6
  • iOS Support: iOS >=10

Golang 1.17.9

Golang 1.18.3

  • Builds:
  • This is a legacy build, clients should try to upgrade to 1.19.2
  • Built with a fork of golang to patch known issues that blocked the upgrade from 1.15.15
  • iOS Support:
    • VPN Build targets iOS >=12
    • Other builds target iOS >=13

Golang 1.19.2

  • Builds:
  • This is the latest version of golang at the time of build
  • Built with a fork of golang to patch known issues that blocked the upgrade from 1.15.15
  • iOS Support:
    • VPN Build targets iOS >=12
    • Other builds target iOS >=13

Golang 1.19.2 - macOS patch