Skip to content

Releases: Thealexbarney/LibHac

v0.19.0

20 Oct 05:45
Compare
Choose a tag to compare

hactoolnet

  • #273/#285 Add key sources for system version 16.0.0 and 17.0.0
  • #287 Support opening the INI1 from kernels in system version 17.0.0
  • #287 Don't output unknown key warnings by default.

LibHac

  • #273/#285 Add key sources for system version 16.0.0 and 17.0.0
  • #287 Support opening the INI1 from kernels in system version 17.0.0
  • #281 Implement nn::gcsrv and nn::sdmmcsrv. These namespaces act as abstractions over the gamecard and sdmmc functionality.
  • #282 Add GetFileSystemAttribute to IFileSystem.
  • #286 Fix a bug in ConvertToFsCommonPath where it would not output the part of the path after the mount name.

v0.18.0

12 Feb 02:03
Compare
Choose a tag to compare

hactoolnet

  • #268 Reads personalized tickets in NSPs if eticket_rsa_keypair is in the key file.
  • #271 Read TSEC secrets from the key file and use them to derive TSEC KEKs.
  • #271 Validate the pk11 mac inside modern erista package1s if the proper key exists.
  • #265 Properly separate prod and dev derived device keys in the KeySet class.

LibHac

  • #268 Load eticket_rsa_keypair from the key file and use it to decrypt personalized tickets.
  • #270 Fix a bug in EnsureApplicationSaveData that wouldn't create a bcat save if any other bcat save already existed.
  • #271 Read TSEC secrets from the key file and use them to derive TSEC KEKs.
  • #271 Validate the pk11 mac inside modern erista package1s if the proper key exists.
  • #265 Properly separate prod and dev derived device keys in the KeySet class.
  • #269 Update to .NET 7 and C# 11 and use some of the new features
    • Use UTF-8 literals instead of manually defining byte spans.
    • Remove all uses of InlineIL.Fody.
    • Change the Ref() extension methods for UniqueRef/SharedRef to properties.
    • Use generic math throughout the project.
    • Use scoped and UnscopedRef so more lifetimes are tracked properly.

v0.17.0

20 Nov 21:08
Compare
Choose a tag to compare

hactoolnet

  • #259 Add key sources for system version 15.0.0
  • #260
    • Automatically import title keys from tickets.
    • Automatically apply updates when reading an XCI or NSP.
    • Allow listing all contained NCAs, programs or applications.
    • Allow specifying the title when an XCI or NSP contains more than one.
    • Allow extracting ExeFS or RomFS directly from an NSP.
  • #243
    • Ignore the relevant --section#(dir) option if the equivalent --exefs(dir) or --romfs(dir) option is set
    • Display a warning instead of completely erroring when trying to extract a section that doesn't exist
    • Fix extracting section 3 from NCAs

LibHac

  • #259 Add key sources for system version 15.0.0
  • #258 Remove some leftover debug code for CompressedStorage
  • #248 Implement DeviceOperator and add the FS client shim functions that use it
  • #245 Implement the new save data file system cache from 14.0.0
  • #247 Update FS shim classes for 14.0.0
  • #246 Update save data handling functions for 14.0.0
  • #263 Catch OutOfMemoryExceptions when calling RSA.VerifyData with an all-zero modulus on platforms that use OpenSSL 1.1
  • #244 Implement a lot of the classes that are used for reading NCAs

v0.16.1

07 Apr 07:11
Compare
Choose a tag to compare

hactoolnet

  • #242
    • Support reading XCI files that contain the initial data/key area.
    • Display more info when reading an XCI file.

LibHac

  • #239 Don't fail when EnsureApplicationSaveData tries to create a temporary storage that already exists.
  • #240 Fix not being able to use OpenDirectory on a PartitionFileSystemCore
  • #242
    • Add key sources for system version 14.0.0
    • Support reading XCI files that contain the initial data/key area.

v0.16.0

23 Feb 07:33
Compare
Choose a tag to compare

hactoolnet

  • #230 Support reading NCAs with compressed sections

LibHac

  • #230 Support reading NCAs with compressed sections
  • #227, #229, #234, #236 Update many FS classes to be accurate with system version 13.1.0
  • #232 Fix checking the FS access control content owner info size
  • #231 Be more resilient to invalid DirectorySaveDataFileSystem extra data states

There are miscellaneous small breaking changes in this version.

  • Fixed-sized ArrayN<T> structs are used throughout the library instead of using other solutions such as structs with explicit layout. This may require some trivial changes in how these fields are accessed.
  • Ns.ApplicationControlProperty and its related structs and enums have been updated and tweaked. Its old U8SpanMutable properties are not defined by an ArrayN<byte> field and contain an additional U8Span <FieldName>String property. If methods like ToString() were called on the old properties, be sure to update them to use the new U8Span properties instead of the ArrayN<byte> fields.
  • Some FS client function signatures were updated to match those of the original functions.

v0.15.0

10 Jan 01:58
Compare
Choose a tag to compare

hactoolnet

  • Updated to use LibHac 0.15.0

LibHac

  • #222 Reorganize the namespaces in the library

This version contains large breaking changes for the namespaces of many classes in the libraries.

To make updating from v0.14.3 easier, v0.15.0 only contains changes that involve reorganization of the library's namespace structure. APIs of individual classes and library functionality shouldn't be changed at all.

Due to how LibHac started off and then evolved, there was a lot of clutter with how the namespaces are organized. v0.15.0 cleans things up by partially reorganizing the library's namespaces based on a couple guidelines:

  • The root LibHac namespace contains namespaces/code that follows the same structure as Nintendo's official code. e.g. "LibHac.FsSystem`
  • The LibHac.Tools namespace contains classes that do other things such as provide additional functionality (Like LibHac.Tools.Fs.SwitchFs), provide a more user-friendly API for working with things (Like LibHac.Tools.FsSystem.NcaUtils), etc.

v0.14.3

18 Dec 21:05
Compare
Choose a tag to compare

hactoolnet

  • #220 Fix extracting data on Linux

LibHac

  • #220 Fix LocalFileSystem on Linux
  • #221 Include new key sources from key generation 13

v0.14.2

17 Dec 03:47
Compare
Choose a tag to compare

hactoolnet

  • Updated to use LibHac 0.14.2

LibHac

  • #218 Include the PDB in published .nupkg packages so that symbols can be fetched from nuget.org. This works around a bug in Cecil that results in a bad PDB checksum when using Fody/Inline.IL

v0.14.1

17 Dec 03:41
Compare
Choose a tag to compare

hactoolnet

  • #211 Support reading NCAs with sparse partitions
  • #214 Fix a regression introduced in LibHac v14.0.0 when extracting the ExeFS from an NCA
  • #217 Fix regressions introduced in LibHac v14.0.0 when extracting certain file types

LibHac

  • #211
    • Update BucketTree and IndirectStorage for system version 13.0
    • Implement SparseStorage
    • Support reading NCAs with sparse partitions
  • #217 Allow deleting read-only files and directories in LocalFileSystem

v0.14.0

27 Nov 03:53
Compare
Choose a tag to compare

hactoolnet

  • #210 Add a --disablekeywarns option to suppress warnings when reading invalid external keys

LibHac

  • #204 Update to the new path handling code used as of 12.0.0
    • Fs.Fsa classes now use the Fs.Path struct for file paths
    • This is a breaking change for most operations on a raw IFileSystem
  • #207 Introduce SharedRef<T> and UniqueRef<T>
    • These types are somewhat analogous to std::shared_ptr and std::unique_ptr in C++. They are used to help ensure objects are properly disposed once they are not being used anymore
    • Many functions that returned IFileSystem/IFile/etc. objects now use these new types
    • This brings many breaking changes for code using most file system-related classes. In most cases updating is simple and mainly involves changing the returned type, and wrapping instances of the types in a using block
    • See #207 for rules on how to properly use these types
  • #206 Fix: Properly catch exceptions in LocalFileSystem.CleanDirectoryRecursively. Prevously exceptions wouldn't be caught and converted into Result codes
  • #208 Remove the deprecated Kip, Nacp, Nso, Package1 and Package2 classes in favor of their new versions.