ValveSoftware / ValveSoftware/GameNetworkingSockets

More flexible crypto config

Open
#196 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
9.9k
Forks
749
Avg merge
1d 2h
Merged PRs (30d)
1

Description

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):
  • AES-GCM runtime availability check
    (#197)
  • Advertise / initialize AES_GCM cipher only if supported
    (#197)
  • Support building with libsodium on non-x86/x86_64 CPUs (with an appropriate default warning that this means there will not be AES-GCM support).
  • Add support for k_ESteamNetworkingSocketsCipher_CHACHA20_POLY1305. (@fletcherdvalve: Should this be the
    IETF variant of ChaCha20-Poly1305?)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points. Start by reading issue #197 and the listed motivation and WIP tasks; done would require resolving the scope and completing the runtime availability, cipher advertisement and initialization, non-x86 libsodium, and ChaCha20-Poly1305 items.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cryptography, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.