With the protocol supporting negotiable cipher suites, some additional changes to support a more flexible crypto config seem like they could be useful.
Motivations:
There may be situations where:
- A dependent project wishes to link with a specific crypto library (ex. libsodium) that does not offer AES-GCM on all systems (possibly depending on processor architecture / extensions).
- Additional ciphers (like the commented-out
k_ESteamNetworkingSocketsCipher_CHACHA20_POLY1305) with different performance characteristics or system / crypto library compatibility are desired.
- A dependent project is fine with advertising "best-effort" encryption, which falls back to advertising "null cipher"-only if a particular system + crypto library combination cannot support any.
Additionally (although not considered in-scope at this time, but the work in this should help):
- A dependent project may not wish to link GameNetworkingSockets with any of its supported crypto libraries (and may be fine with GameNetworkingSockets itself not implementing encryption at all, perhaps because it already handles this).
Tasks (WIP):
With the protocol supporting negotiable cipher suites, some additional changes to support a more flexible crypto config seem like they could be useful.
Motivations:
There may be situations where:
k_ESteamNetworkingSocketsCipher_CHACHA20_POLY1305) with different performance characteristics or system / crypto library compatibility are desired.Additionally (although not considered in-scope at this time, but the work in this should help):
Tasks (WIP):
(AES-GCM runtime availability check, Advertise / initialize AES-GCM cipher only if supported #197)
(AES-GCM runtime availability check, Advertise / initialize AES-GCM cipher only if supported #197)
k_ESteamNetworkingSocketsCipher_CHACHA20_POLY1305. (@fletcherdvalve: Should this be theIETF variant of ChaCha20-Poly1305?)