Commit graph

88 commits

Author SHA1 Message Date
Alex Barney
3d50085e22
Use Storage throughout the library instead of Stream (#18)
*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
2018-11-18 23:20:34 -05:00
Alex Barney
92d0a2e6c2 Version 0.1.3 2018-10-22 18:00:52 -05:00
Alex Barney
7a7946a26c Add Savefile.CommitHeader method 2018-10-18 18:18:39 -05:00
Alex Barney
f83a284b96 Add verification option to save files 2018-10-18 17:54:24 -05:00
Alex Barney
da5eec1b3d Writing for all save file layers 2018-10-17 17:15:57 -05:00
Alex Barney
4a43c330b6 Add RemapStorage class 2018-10-15 20:53:49 -05:00
Alex Barney
ae649182ce Rename "Savefile" namespace to "Save" 2018-10-13 15:12:10 -05:00
Alex Barney
e9602d35da Modify check for ExeFS NCA sections 2018-10-12 21:28:05 -05:00
Alex Barney
75dafd9cbe Remove old classes 2018-10-12 21:08:16 -05:00
Alex Barney
6213111af9 Add option to verify SwitchFS and SD cards 2018-10-12 17:52:15 -05:00
Alex Barney
fb089b0700 Integrity verification improvements
- Add a cache to prevent validation an IntegrityVerificationStream block twice.
- Add section validation for all hashed NCA sections
2018-10-09 18:10:44 -05:00
Alex Barney
24e6434765 Use an enum instead of a bool for integrity checking levels 2018-10-09 15:33:56 -05:00
Alex Barney
a64cbeca5b Continue NCA improvements
- 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
2018-10-08 21:04:39 -05:00
Alex Barney
209d81187a NCA reading improvements
Add on-the-fly Partition FS hash verification
Do some cleanup on NCA classes
2018-10-07 20:29:27 -05:00
Alex Barney
47a3eda0ed Fix key printing 2018-10-05 12:29:52 -05:00
jonnysp
d12f419d8d Add Partition FS extraction (#12)
Add Partition FS extraction + misc. changes
2018-10-03 14:14:23 -06:00
Alex Barney
e798a8dd45 Add key file exporting to hactoolnet 2018-10-02 22:00:57 -05:00
Alex Barney
e740d13bbe Enforce "var" style 2018-10-02 17:25:58 -05:00
Alex Barney
372370db82 Code style naming fixes 2018-10-01 13:07:20 -05:00
Alex Barney
a21283bf44 Print information about save files 2018-10-01 12:55:10 -05:00
Alex Barney
64c98df5b3 Fix hactoolnet build 2018-09-24 14:42:06 -05:00
jonnysp
235ace8b1b added XCI File and Partition HashValidity 2018-09-21 14:37:30 +02:00
Alex Barney
ab565fe83e Version 0.1.2 2018-09-20 21:26:25 -05:00
Alex Barney
e92c686d77 Add save file integrity verification 2018-09-20 20:34:40 -05:00
Alex Barney
ed6c3c2bed Add the option to enable IVFC integrity checks 2018-09-20 16:16:40 -05:00
Alex Barney
f04fc33b07 Read INI1 2018-09-17 19:52:22 -05:00
Alex Barney
8b8aa3277f Read KIP1 files 2018-09-17 19:20:56 -05:00
Alex Barney
4bfaafc301 Add package2 support 2018-09-16 20:26:16 -05:00
Alex Barney
087008f7f4 Add save file signing capability 2018-09-15 22:31:06 -05:00
Alex Barney
e651eb731c Validate save signature 2018-09-15 22:10:42 -05:00
Alex Barney
1f62706d4c Add XCI signature checks and info output 2018-09-13 17:58:40 -05:00
Alex Barney
8230b0ba75 Split hactoolnet processing into multiple files 2018-09-12 20:28:50 -05:00
Alex Barney
8022d193df Add package1 support. Update usage 2018-09-12 19:51:21 -05:00
Alex Barney
49a1f0b5a4 Read save files from SD card 2018-09-10 22:09:35 -05:00
Alex Barney
01f5ed7ccf Update usage text 2018-09-09 20:48:17 -05:00
Alex Barney
643d603732 Add project information to csproj file 2018-09-03 21:23:47 -05:00
Alex Barney
1a7e452a89 Add Duplex FS handler for save files 2018-09-01 14:23:45 -05:00
Alex Barney
5a793d61d6 Rename SdFs to SwitchFs 2018-08-31 11:07:46 -05:00
Alex Barney
93afb840ca Rename libhac to LibHac 2018-08-31 10:50:28 -05:00
Alex Barney
12b2825475 Redo SectorStream classes 2018-08-30 16:18:27 -05:00
Alex Barney
7f016f875b Fix regression caused by decrypting multiple AES blocks at a time 2018-08-28 13:49:55 -05:00
Alex Barney
38dca5c526 Add romfs support to CLI 2018-08-28 12:33:24 -05:00
Alex Barney
e7f5702477 Generate keys from master key + source 2018-08-27 17:40:06 -05:00
Alex Barney
d7929fc458 Use .NET 4.6+ built-in RSA-OAEP decryption 2018-08-25 11:42:33 -05:00
Alex Barney
d701fdd28b Add null check when creating Bktr 2018-08-25 11:37:22 -05:00
Alex Barney
80cf0b43fb Use SharedStreams with savefile reading. Fixes #4 2018-08-24 18:22:48 -05:00
Alex Barney
35475ac5a8 Move streams to Streams namespace 2018-08-23 11:28:45 -05:00
Alex Barney
a68426751f Introduce multi-instance, thread-safe streams
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.
2018-08-22 15:54:34 -05:00
Alex Barney
8433b2c91a Extract ExeFS and RomFS for more input types 2018-08-22 15:36:06 -05:00
Alex Barney
7b0ae0c954 Option to export raw RomFS from XCI 2018-08-22 09:58:36 -05:00