Releases: Thealexbarney/LibHac
Releases · Thealexbarney/LibHac
v0.4.0
hactoolnet
- Add option to completely replace the contents of a savedata file
- Add savedata trimming
- Add Partition FS builder
- Add option to load dev keys from
dev.keys
LibHac
- Rename
LibHac.IO
namespace toLibHac.Fs
- Revamp NCA classes
- Add NCA2 support
- Add remaining functions to
IFileSystem
and implement missing functions inIFileSystem
classes - Finish write support for
SaveDataFileSystemCore
- Add fstrim functionality to savedata
- Add
DirectorySaveDataFileSystem
- Add
ReadOnlyFileSystem
- Add Partition FS builder
v0.3.1
- Do system version 6.2.0 key derivation
- Fix a bug in
HierarchicalRomFileTable
that didn't allow files to be added to the table, and prevented the creation of RomFS files - Fix a bug in
StorageStream
that would read past the end of theStorage
if requested
v0.3.0
hactoolnet
- Add a RomFS builder
- Add a delta fragment reader
- Fix signature checks not working on Mono
LibHac
- Introduce an
IFileSystem
interface that all filesystem-like objects implement instead of them each being their own thing- Examples:
RomFsFileSystem
,PartitionFileSystem
andSaveDataFileSystem
for accessing their respective file typesConcatenationFileSystem
reads and writes the system of split files the Switch uses.AesXtsFileSystem
reads and writes a filesystem of NAX0 files used for the external SD cardLocalFileSystem
presents a local directory as anIFileSystem
LayeredFileSystem
Layers multiple filesystems so their combined contents are treated as a single filesystem
- Add extensions for performing common queries or tasks on an
IFileSystem
- Add support for applying delta fragment patches
- Add a class for reading and writing the dictionary data structure used in RomFS files
- Greatly improve RomFS open and access time by using RomFS' internal dictionary
- Add a RomFS builder.
v0.2.0
A single-exe version of hactoolnet has been added to the downloads for convenience over using an exe with dlls
LibHac
- Use a new
IStorage
interface throughout the library instead ofStream
- This interface is more similar to the
IStorage
interface used by Horizon. - Instead of having a Stream that keeps track of the current position, IStorage accepts an offset, buffer, and length when reading or writing.
- Unlike a Stream, an IStorage instance can be shared between multiple consumers without issue
Stream.AsStorage()
andIStorage.AsStream()
methods are provided for switching betweenStream
andIStorage
- This interface is more similar to the
- Improve AES-XTS performance by ~16x
- Improve AES-CTR performance by 2x
- Add AES-XTS tests
- Add benchmarks for AES-XTS and AES-CTR
- Ability to open a decrypted IStorage of an NCA, Package1 or Package2
- Validate NCA, NPDM and package2 signatures
- Add NPDM parsing support
- Allow more disposal methods to cascade down to the base storage
- Support writing version 5 of
JournalStorage
used in newer save data files - Fix a fatal save allocation table bug that would occur if the last block of the save data FS was read
- Add a build script
hactoolnet
- Add the ability to replace files in a save data file (Currently the new file must be the same size as the old file)
- Add benchmarks for AES-XTS and AES-CTR
- Change how Switch FS title info is displayed, and add an option to display info on all NCAs
v0.1.3
- Add basic save file editing. Any files already in the save file can be written to
- Check validity of save files
- Check validity of PFS files
- Check validity of SwitchFS and SD cards
- Check file hashes in HFS archives
- Partial NSO support
- 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.
- 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.
- Fix bug in CombinationStream when reading across boundaries
hactoolnet-specific
- Add option to verify SwitchFS and SD cards
- Add option to export all keys
- Add PFS0 extraction
- Print more information about save files
Breaking changes
- The "Savefile" namespace has been renamed to "Save"
- The value passed to various functions to enable integrity checks is now an enum instead of a bool
- Probably a few other things
v0.1.2
- Savefile reading is feature-complete. Extraction should now be 100% accurate
- Add save key, BIS key and device key derivation
- Add package1 support
- Add package2 support
- Add INI1/KIP1 support
- Add the option to perform integrity checks on the fly when reading a RomFS or savefile
- Validate XCI signatures
- Validate savefile signatures and resign savefiles
- Read title key files that use pipes as delimiters
Breaking changes
Keyfile
keys were renamed to match the standard naming convention- Setters were removed from most keys in
Keyfile
- Methods like
Nca.OpenSection
andSavefile.ctor
now have an additional parameter for enabling integrity checks
v0.1.1
- Increased AES-CTR decryption speed by 6-8x
- XCI reading
- Additional key generation
- Improved savefile support by adding Duplex FS and file allocation table handling
- ExeFS detection
- Full NACP parsing
- Partition FS creation
- Add a
SharedStream
class to add the ability to share a single stream between multiple consumers
hactoolnet changes:
- Extract RomFS and ExeFS from XCI
- Raw RomFS exporting from patches
- Option to load a RomFS from a file
- NSP creation from SD card files
v0.1.0
Initial release