Quake-III-Arena/code
Ryan C. Gordon ece37f1390 Initial add of rsa_tools.
This is just a simple RSA public key digital signature thing built on
libtomcrypt. The gist:

Some admin will generate a public/private key with rsa_make_keys, keeping the
private key secret. Using the private key and rsa_sign, the admin will sign
the autoupdater manifests, generating manifest.txt.sig.

The public key ships with the game (adding 270 bytes to the download), the
.sig is downloaded with the manifest by the autoupdater (256 bytes extra
download), then the autoupdater checks the manifest against the signature
with the public key. if the signature isn't valid (the manifest was tampered
with or corrupt), the autoupdater refuses to continue.

If the manifest is to be trusted, it lists sha256 checksums for every file to
download, so there's no need to sign every file; if they can't tamper with the
manifest, they can't tamper with any other file to be updated since the file's
listed sha256 won't match.

If the private key is compromised, we generate new keys and ship new
installers, so new installations will be able to update but existing ones
will need to do a new install to keep getting updates. Don't let the private
key get compromised. The private key doesn't go on a public server. Maybe it
doesn't even live on the admin's laptop hard drive.

If the download server is compromised and serving malware, the autoupdater
will reject it outright if they haven't compromised the private key, generated
a new manifest, and signed it with the private key.

libtomcrypt is sort of a big pile of source code, so instead of putting it
in revision control, we have a script to download it. Most things don't need
it. It lives on GitHub, so we _could_ do a git submodule, but most people
don't need it, so why waste their disk and bandwidth? That said, when compiled
you end up with a few hundred kilobytes of binary code to verify a signature
and no external dependencies, so it seems like a win.
2017-06-03 20:26:07 -04:00
..
AL 5882 - Update OpenAL Headers to OpenAL Soft 1.15.1 2013-02-17 07:34:41 -06:00
asm Remove unused fpucw from snapvector.asm 2015-07-09 18:35:45 -05:00
autoupdater Initial add of rsa_tools. 2017-06-03 20:26:07 -04:00
botlib Fix swapping AAS bboxes 2017-02-27 18:18:15 -06:00
cgame Draw disconnect icon over lagometer in Team Arena too 2017-06-02 22:11:52 -05:00
client Make Team Arena server list sub-sort clients by max clients 2017-06-01 17:24:06 -05:00
game Fix "brought in 1 skulls" Harvester message 2017-06-02 22:11:52 -05:00
jpeg-8c Mark JPEG lib changes, file provided by Simon McVittie 2012-07-01 18:07:56 +00:00
libcurl-7.35.0/curl Fix building with curl on Linux PPC and Sparc 2014-09-09 13:18:28 -04:00
libogg-1.3.2 Rename (already updated) libogg-1.3.1 to libogg-1.3.2 2017-05-23 11:47:26 -05:00
libs Add stripped SDL2 reference dll's to repo 2016-08-16 10:50:24 -04:00
libvorbis-1.3.5 Rename (already updated) libvorbis-1.3.4 to libvorbis-1.3.5 2017-05-23 11:47:26 -05:00
null [null/null_glimp.c] Fix up bitrot in null impl 2016-07-26 10:52:15 +01:00
opus-1.1.4 Rename (already updated) opus-1.1 to opus-1.1.4 2017-05-23 11:47:27 -05:00
opusfile-0.8 Rename (already updated) opusfile-0.5 to opusfile-0.8 2017-05-23 11:47:27 -05:00
q3_ui Replace constant value with UIAS_GLOBAL1 2017-06-01 17:24:06 -05:00
qcommon Fix comment 2017-05-25 09:44:18 +01:00
renderercommon Add vao cache for static surfaces. 2017-04-28 02:13:25 -07:00
renderergl1 Avoid 'register' declarations 2016-11-01 16:37:38 +00:00
renderergl2 Add vao cache for static surfaces. 2017-04-28 02:13:25 -07:00
sdl Correct test for GL_EXT_texture_env_add support 2017-01-26 00:14:31 -08:00
SDL2/include Update SDL2 to 2.0.4 2016-08-15 22:20:00 -04:00
server Refresh master server address cache every 24 hours 2017-05-30 18:33:15 -05:00
sys Merge pull request #290 from rcgordon/autoupdater 2017-06-02 22:46:22 -10:00
tools [botlib] Use floating point absolute value rather than truncate to integer 2016-07-25 18:36:31 +01:00
ui Fix hitch when opening Team Arena find friend menu 2017-06-01 18:54:28 -05:00
zlib drop some useless return statements 2013-05-30 15:43:21 -05:00