- Future plan would be not to use OpenSSL directly, but to go via PlatformCrypto or something like it which could provide platform specific RSA functionality if it exists
- Also contains some compensation code for platforms that are still stuck on an older version of OpenSSL (everything except windows)
- On platforms that use OpenSSL < 1.1.1, register a locking callback so we can provide mutexes and stop it crashing horribly when the same RSA key is used concurrently on different threads
Changed default key size in the CryptoKeys plugin to 4096 bits.
#jira UE-71377
#rb ian.fox, robert.manuszewski, ryan.gerleve
[CL 5447433 by Graeme Thornton in 4.22 branch]
- CryptoKeys plugin can now be told how many bits to use for keys. Defaults to 2048 as a happy medium between security and performance
- After creating the OpenSSL RSA key, use the exp/mod values directly rather than recomputing from primes
- Added RSA.h with some TBigInt based helpers for RSA keys
- Added FPakSignatureFile to wrap the contents of the pak .sig file, including determining that it is of a new format that supports versioning. Wraps the encryption and decryption of he master table hash
- Changed pak master signature hash from crc to SHA1
- Modified access to executable embedded public key data so that it is just an array of bytes. Will allow custom key sizes in the future.
#rb joe.barrett, stefan.boberg
#jira UE-71280, UE-71377
[CL 5381335 by Graeme Thornton in 4.22 branch]
- Prevents CRC from crashing when writing the config files on exit.
#rnx
#rb Josh.Adams, Brandon.Schaefer
#ROBOMERGE-AUTHOR: Arciel.Rekman
#ROBOMERGE-SOURCE: CL 4846937 via CL 4846952 via CL 4848372 via CL 4850934
[CL 4851162 by peter knepley in Main branch]
- Added memory mapped IO concept to the engine
- Implemented and tested on Windows and IOS
- Not in use by anything yet, however, as the use cases are narrow and special (bulk data that does not need massaging after load - so it can be swapped out and back in silently by OS)
[FYI] gil.gribb,chris.babcock
#ROBOMERGE-SOURCE: CL 4842051 via CL 4845281
[CL 4845299 by josh adams in Main branch]
Workaround for UE-58013, though not a full fix. Requires setting bAllowNonUFSIniWhenCooked in the Target.cs and using a cooked build with pak files.
#rb bob.tellez
#jira UE-58013
#ROBOMERGE-SOURCE: CL 4487659 in //UE4/Release-4.21/...
#ROBOMERGE-BOT: RELEASE (Release-4.21 -> Release-Staging-4.21)
[CL 4487660 by marcus wassmer in Staging-4.21 branch]
- Added support for compression plugins
- Removed the Custom compression concept, now using plugins properly
- Modified UnrealPak to use FNames, and allow for multiple compression methods (fallbacks on error or unavailability, etc)
- Added project settings for compression method selection for UnrealPak, and additional settings to be passed to UnrealPak (for instance, to control compression size/speed, etc)
- Deprecated a bunch of old function calls
- Improved pak file "old format" reading ability
- Brought over some changes from Fortnite for pak file encryption and memory savings
- Implemented a parallel compression pull request (#4129) to speed up pak file compression
#jira UE-51294
#rb ben.marsh
[CL 4480944 by Josh Adams in Dev-Core branch]