*Create an IStorage interface and Storage abstract class to use instead of Stream
* Improve AES-XTS performance by ~16x
* Double AES-CTR performance: 800 MB/s -> 1600 MB/s on a 6700K
* Add AES-XTS tests
* Add AES benchmark and AES-CTR writing
* Add support for a hashed FAT in save files
* Add option to export decrypted NCA
* Allow opening decrypted package1 and package2
* Make sure romfs disposal can cascade all the way down
* Validate NCA, NPDM and package2 signatures
- Read only the NCA header when first opening an NCA. This allows for reading of partial NCAs and slightly improves performance when opening an NCA.
- Add a separate NCA method to validate master hashes now that it's not automatically done when opening the NCA.
- Fix possible hang when reading BKTR sections.
- When keys required to decrypt an NCA are missing, throw an exception with information about the missing keys.
- Add more sanity checks when reading an NCA.
Hactoolnet: Don't hard-crash when hitting an unhandled exception
Previously multiple streams could share the same base stream. This meant that you couldn't alternate between streams. If you read from one stream, the state of other streams sharing the same base stream would be messed up and would silently return bad data.
This commit introduces a SharedStream class that allows multiple SharedStreams to share the same base class and not interfere with each other.
I don't know about this. It seems really easy to screw something up.
Allows using the same code for reading the raw nand and reading a normal file system