*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
* Npdm Support
from Ryujinx with adjustments
* move to namespace
* all classes public
* read the nacp as Stream & add Language to the descriptions
* better naming & fix binary reader
* Tweak formatting and naming
- 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.
- Add a cache to prevent validation an IntegrityVerificationStream block twice.
- Add section validation for all hashed NCA sections
- Fix a bug in ConbinationStream when reading across boundaries
- Add option to verify NCAs in a SwitchFS or SD card
- Don't error if the an patch NCA's base NCA has no RomFS