Skip to content

Releases: Thealexbarney/LibHac

v0.4.0

31 May 20:37
Compare
Choose a tag to compare

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 to LibHac.Fs
  • Revamp NCA classes
  • Add NCA2 support
  • Add remaining functions to IFileSystem and implement missing functions in IFileSystem classes
  • Finish write support for SaveDataFileSystemCore
  • Add fstrim functionality to savedata
  • Add DirectorySaveDataFileSystem
  • Add ReadOnlyFileSystem
  • Add Partition FS builder

v0.3.1

23 Feb 03:03
Compare
Choose a tag to compare
  • 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 the Storage if requested

v0.3.0

17 Feb 02:55
Compare
Choose a tag to compare

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 and SaveDataFileSystem for accessing their respective file types
    • ConcatenationFileSystem 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 card
    • LocalFileSystem presents a local directory as an IFileSystem
    • 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

12 Dec 01:10
Compare
Choose a tag to compare

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 of Stream
    • 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() and IStorage.AsStream() methods are provided for switching between Stream and IStorage
  • 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

22 Oct 23:18
Compare
Choose a tag to compare
  • 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

21 Sep 02:42
Compare
Choose a tag to compare
  • 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 and Savefile.ctor now have an additional parameter for enabling integrity checks

v0.1.1

04 Sep 03:21
Compare
Choose a tag to compare
  • 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

26 Jul 19:51
Compare
Choose a tag to compare

Initial release