Commit graph

543 commits

Author SHA1 Message Date
Alex Barney
0b050d2189 Add ProgramIndexMapInfoManager 2020-08-26 17:10:12 -07:00
Alex Barney
004e46cacc Add the program registry 2020-08-26 17:10:12 -07:00
Alex Barney
76d21263da Add AccessControl 2020-08-26 17:10:12 -07:00
Alex Barney
3a3c4822be hactoolnet: Remove use of enum reflection 2020-08-19 11:07:28 -07:00
Alex Barney
2242fc6371 Miscellaneous code style cleanup 2020-08-18 21:47:46 -07:00
Alex Barney
71824f06dc Fixes in Nca and U8Span 2020-08-17 19:23:30 -07:00
Alex Barney
f2f2111729 hactoolnet: Add functions to convert some enums to strings 2020-08-17 19:23:30 -07:00
Alex Barney
a005b40022 Build updates
Use the version in the .csproj if there is no local git repository.
Always use Windows line endings in codegen output.
Update build dependency versions. We're still using GitVersion 5.1.3 because of https://github.com/nuke-build/nuke/issues/509.
2020-08-15 23:34:48 -07:00
Alex Barney
30273bf3ef Avoid false positives in detection of unencrypted NCAs 2020-08-15 17:13:28 -07:00
Alex Barney
a07e17c369 Make file option struct constructors public. 2020-08-14 23:40:03 -07:00
Alex Barney
f20337d774 Add support for NCA0 files.
Any operation that is supported with other NCAs is supported NCA0s. This includes reading both encrypted and decrypted NCA0s, and encrypting and decrypting NCA0s.
2020-08-14 22:09:11 -07:00
Alex Barney
6bab1d9273 Support extracting INI binaries embedded in the kernel 2020-08-12 14:27:58 -07:00
Alex Barney
8491ec2117 Add Package2StorageReader and InitialProcessBinaryReader 2020-08-12 14:27:58 -07:00
Alex Barney
81340027fc Rename FsService to FsSrv 2020-08-07 18:32:01 -07:00
Alex Barney
24ba7c6b5b Set the next version to 0.12.0 2020-08-07 10:22:14 -07:00
Alex Barney
9e57cc174e Add documentation for SaveDataIndexer and related classes 2020-08-07 10:02:50 -07:00
Alex Barney
c1b9eb8903 Change ref to in where possible in SaveDataIndexer and kvdb 2020-08-07 10:02:50 -07:00
Alex Barney
d575415b0e Remove the old KeyValueDatabase 2020-08-07 10:02:50 -07:00
Alex Barney
a551360da0 Use FlatMapKeyValueStore in SaveDataIndexer
FS 10.0 tweaks how the SaveDataIndexerManager is accessed. SaveDataFileSystemServiceImpl's configuration now includes an ISaveDataIndexerManager instead of using global state.

FS 10.0 uses the new nn::fssrv::storage namespace for abstracting the interface to nn::gc and nn::sdmmc. A tiny bit of the namespace has been added so we can create mock SD card handles for SaveDataIndexerManager.

ReferenceCountedDisposable<T> is now being used for returning ISaveDataInfoReader objects from IFileSystemProxy. I've tried coming up with a pattern to cleanly return a ReferenceCountedDisposable<T>, but the lack of features like RAII or move semantics makes this difficult without either lots of allocations or lots of boilerplate code.
2020-08-07 10:02:50 -07:00
Alex Barney
37251968c0 Add FlatMapKeyValueStore with tests 2020-08-07 10:02:50 -07:00
Alex Barney
672a0016b3 Use "in" instead of "ref" for read-only SpanHelper methods 2020-08-07 10:02:50 -07:00
Alex Barney
717e54fe4e Rename TitleId to ProgramId and add other NCM ID types 2020-08-07 10:02:50 -07:00
Alex Barney
3819cfdca7 Flesh out NCA encryption
Allows opening decrypted NCAs.
Allows opening encrypted and decrypted storages of any NCA, whether encrypted or decrypted.
hactoolnet: Allow saving an encrypted version of any NCA.
2020-07-24 22:41:45 -07:00
Xpl0itR
e0ddf17945 Implement function in NCA class to re-encrypt decrypted NCAs 2020-07-24 22:41:45 -07:00
leo60228
c56c8ba8ed Include title ID in --listapps when possible 2020-07-24 15:35:20 -07:00
Alex Barney
7dd21ae05b SubStorage in AesXtsFile should be resizable 2020-07-06 11:43:48 -07:00
Alex Barney
d04e713356 Add some docs to SubStorage 2020-07-06 11:43:48 -07:00
Alex Barney
d7ae809cf3 Add TruncatedSubStorage 2020-07-06 11:43:48 -07:00
Alex Barney
e9c38dc7ba Remove old SubStorage 2020-07-06 11:43:48 -07:00
Alex Barney
f02c84e8dd Add ReferenceCountedDisposable<T>
This class is meant to be used in the same types of places std::shared_ptr is used but with manual instead of automatic ref counting.

SubStorage now uses the class to optionally dispose its base storage object.
2020-07-06 11:43:48 -07:00
Alex Barney
b6eac5ddb5 Rename Util class to Utilities
Preparation to split it up into the Util namespace and to add nn::util code
2020-07-06 11:43:48 -07:00
Alex Barney
88983d39e5 Remove use of code that involves reflection
This allows over 40% of the CoreRT native binary size to be removed by removing reflection capabilities.

The "--noreflection" option for the build script can be used to build hactoolnet with no reflection.

The Linux build won't always work because creating a new thread for the progress bar runs into some issue with EventSource being removed.
2020-06-27 16:28:32 -07:00
Alex Barney
83dc874df1 Rent arrays in BucketTree.Visitor 2020-06-26 09:11:06 -07:00
Alex Barney
33b414a15c Remove old BucketTree 2020-06-25 20:50:54 -07:00
Alex Barney
d3abdeacc4 Use the new BucketTree in Aes128CtrExStorage 2020-06-25 19:03:51 -07:00
Alex Barney
33af34cefc Rewrite IndirectStorage 2020-06-25 15:26:55 -07:00
Alex Barney
c2247e583f Address compiler warnings 2020-06-19 22:01:22 -07:00
Alex Barney
4b4b354a7e Use IStorage for the bucket tree builder instead of Spans 2020-06-19 22:01:22 -07:00
Alex Barney
9589f681a6 Add a bucket tree builder 2020-06-19 22:01:22 -07:00
Alex Barney
0c06d9e0b3 Implement most of Nintendo's bucket tree code 2020-06-19 22:01:22 -07:00
Alex Barney
9ec00eed3b
Merge pull request #146 from Thealexbarney/fs-classes
Change the file system accessor interfaces to abstract classes
2020-06-14 20:19:56 -07:00
Alex Barney
395fabd171 Make IStorage an abstract class 2020-06-13 00:37:21 -07:00
Alex Barney
49d42c5d1f Fix some checks being ignored in savedata classes
- Return an error when an allocation table seek fails
- Fix a copy/paste bug to properly error when resizing an AllocationTableStorage with not enough free space
2020-06-10 16:27:43 -07:00
Alex Barney
106c36492b Move IFileSystem etc. into fsa namespace 2020-06-09 22:55:59 -07:00
Alex Barney
ef1481b04c Replace old fsa classes with new ones 2020-06-07 15:23:51 -07:00
Alex Barney
ba1bf2f1c8 Add XML docs 2020-06-07 00:05:33 -07:00
Alex Barney
7c9584a6af Add new IFileSystem and IDirectory 2020-06-06 22:48:20 -07:00
Alex Barney
dd54249125 Rename FileBase "Impl" methods 2020-06-06 15:20:02 -07:00
Alex Barney
e1ff89060c Add new IFile 2020-06-06 15:18:50 -07:00
Alex Barney
064da36453 Rename old IFile option enums 2020-06-06 14:18:03 -07:00
Alex Barney
8c61820e46 Increment version to 0.11.3 and apply "var" code style 2020-06-05 22:59:00 -07:00
Alex Barney
5dd1ed2687 hactoolnet: Allow listing an XCI's program RomFS files 2020-06-05 22:32:16 -07:00
Alex Barney
13648b4cec
Merge pull request #140 from Thealexbarney/build-ver-fix
Fix a logic error in the build script loader and update MyGet publishing
2020-06-04 11:27:26 -07:00
Alex Barney
3de2a4b90b Update MyGet package publishing 2020-06-04 11:17:30 -07:00
Alex Barney
dfb2560707 Fix ini1 reading and fix a blz decompression bug 2020-06-04 01:09:27 -07:00
Alex Barney
a59dc611c2 Don't timeout when ensuring a local FS entry is deleted 2020-06-02 23:32:50 -07:00
Xpl0itR
2171f2ae21 Update Calibration 2020-06-02 21:15:45 -07:00
Alex Barney
99f6a0054b Version 0.11.2 2020-05-12 19:23:05 -07:00
Alex Barney
8d5e24d061 Ensure csv column counts are consistent 2020-05-12 19:02:48 -07:00
Alex Barney
cb8b088487
Misc additions and warning fixes (#134)
* Run codegen and fix DeliveryCacheFileMetaEntry layout

* Use KipReader instead of Kip

* Ensure feature parity between U8String structs

* Don't use the obsolete Nacp class

* Add some null checks

* Address ReSharper warnings

* The Result structs should be readonly
2020-05-12 17:06:55 -07:00
Alex Barney
44e4c7a311
Add some fssystem utility functions and use them in DirectorySaveDataFileSystem (#133)
* Accurately implement DirectorySaveDataFileSystem

* DirectorySaveDataFileSystem updates from FS 10.0
2020-05-12 13:17:06 -07:00
Alex Barney
0188c4579c Update version to 0.11.1 2020-04-30 14:21:34 -07:00
Alex Barney
32405fee5f Add EnumerateDeliveryCacheDirectory 2020-04-30 14:08:31 -07:00
Alex Barney
1974adb33e Don't use in-place decompression for NSOs
Move back to using in-place decompression in the future when the decompress function has been fixed
2020-04-28 23:03:33 -07:00
Alex Barney
fdf11b2621
Merge pull request #129 from Thealexbarney/bcat-storage
Implement BCAT delivery cache access

- Add BCAT delivery cache reading services
- Add methods to `U8StringBuilder` for writing formatted values
- Add a `HorizonClient` class which mimics nnsdk from Horizon
- Add a simple service manager that tracks registered objects
2020-04-28 22:54:58 -07:00
Alex Barney
be29ad714f Add the option to initialize Horizon with a FileSystemServer 2020-04-24 11:35:04 -07:00
Alex Barney
e80be498e5 Add a simple service manager and HorizonClient class
Modifies bdat to use the HorizonClient and adds an ArpClient. The arp server still needs to be provided.
2020-04-23 17:49:15 -07:00
Alex Barney
9b1ced7d3b Small tweaks to U8StringBuilder 2020-04-22 13:47:01 -07:00
Alex Barney
f3452bb314 BCAT fixes. Tweak how U8StringBuilder is used 2020-04-11 22:18:43 -07:00
Alex Barney
6e4372ce58 Implement DeliveryCacheDirectoryService 2020-04-10 11:31:46 -07:00
Alex Barney
ef36568a8d Implement DeliveryCacheFileService and supporting code 2020-04-10 10:54:37 -07:00
Alex Barney
939c495db6 Add U8StringBuilder format options 2020-04-10 10:49:44 -07:00
makigumo
6473a0cc0d NsoHeader.cs: fix _reserved6C field offset 2020-04-09 21:52:44 -07:00
Alex Barney
da78e7e8ce Add BCAT storage skeleton 2020-04-07 00:22:12 -07:00
Alex Barney
5018bbad6a hactoolnet: Use FileSystemClient instead of Horizon 2020-04-06 22:17:04 -07:00
Alex Barney
12775895eb Add non-system BCAT mount shim 2020-04-04 14:19:36 -07:00
Alex Barney
7bcb09b714 Add BIS shim functions with tests 2020-04-04 14:16:17 -07:00
Alex Barney
405bbeff9e Add some FspPathPrintf functionality and change a constant name 2020-04-02 21:54:26 -07:00
Alex Barney
e5c851e7a3 Add KipReader class and add kip decompression to hactoolnet 2020-03-29 22:12:00 -07:00
Alex Barney
f59c7c6a84 Add NsoReader 2020-03-26 22:52:49 -07:00
Alex Barney
9cc60e22ec Add loader and libhac results 2020-03-26 22:45:59 -07:00
Alex Barney
b8b2c26457 Tweak duplicate result detection 2020-03-23 16:04:49 -07:00
Alex Barney
0bb3446a8b Make path parser check for a null terminator 2020-03-23 15:54:11 -07:00
Alex Barney
ef72729391 Mark Nacp as deprecated 2020-03-23 10:32:22 -07:00
Alex Barney
d68ca84f07 Update versions to 0.10 2020-03-23 09:40:41 -07:00
Alex Barney
f44b09ec1f Add some Results 2020-03-23 09:10:55 -07:00
Alex Barney
95ef1c9529 Don't write to a read-only file 2020-03-22 17:52:27 -07:00
Alex Barney
8ead72ed84 Add OpenMultiCommitManager to IFileSystemProxy 2020-03-22 00:12:25 -07:00
Alex Barney
0ab96f67bf Add new functions to existing classes deriving from IFileSystem 2020-03-21 23:37:32 -07:00
Alex Barney
ce54ae111c Add MultiCommitManager
- Recovering from an interrupted commit isn't implemented yet
2020-03-21 22:44:38 -07:00
Alex Barney
d1110392b4 Add a function to specify that a returned Result is unused 2020-03-21 22:39:07 -07:00
Alex Barney
0e26c31a2f Enable OpenHostFileSystem in FileSystemProxy and add XML docs 2020-03-16 15:07:09 -07:00
Alex Barney
f7957b4cc8 Remove some old code 2020-03-14 23:27:49 -07:00
Alex Barney
0c6447daac Use U8StringBuilder instead of PathBuilder 2020-03-14 23:22:34 -07:00
Alex Barney
7b4df4671c Add fs_Host shims 2020-03-14 00:18:42 -07:00
Alex Barney
a006816a2e Allow opening directories with OpenFileSystem 2020-03-13 00:09:44 -07:00
Alex Barney
036e048208 Finish OpenFileSystemWithId enough to work with most content 2020-03-10 15:07:06 -07:00
Alex Barney
281fc8aac3 Add TryOpenNsp 2020-03-09 23:44:28 -07:00
Alex Barney
c79053eac3 Add more to OpenFileSystem 2020-03-09 23:44:28 -07:00
Alex Barney
a1eca88378 Add some of OpenFileSystemWithId 2020-03-09 23:44:28 -07:00
Alex Barney
328968c630 Use U8Span more in FilleSystemClient 2020-03-09 00:06:39 -07:00
Alex Barney
c141b72912 Use U8Span in IFileSystem instead of string 2020-03-08 01:00:02 -07:00
Alex Barney
d6fede0893 Don't return duplicate entries in LayeredFS. Add tests 2020-03-03 18:19:11 -07:00
Alex Barney
1f6046ba63 Remove DirectoryEntryType.NotFound 2020-03-03 18:16:29 -07:00
Alex Barney
7ce9ea09e6 Misc build updates 2020-02-29 01:36:23 -07:00
Alex Barney
4d8ace968f Bump version to 0.9.0 2020-02-28 23:58:29 -07:00
Alex Barney
24f293c27a Add names to Results missing them 2020-02-27 23:31:38 -07:00
Alex Barney
14dd2190a5 Add a default, reflection-less Result name resolver 2020-02-27 11:33:39 -07:00
Alex Barney
53c8dceb87 Add XML docs and a header to the Result files 2020-02-26 14:45:58 -07:00
Alex Barney
27618bbc45 Indent results based on hierarchy 2020-02-26 00:55:53 -07:00
Alex Barney
07d8b7c21e Add results found in a Unity game 2020-02-25 17:32:30 -07:00
Alex Barney
5345d2747e Generate Results from a .csv file 2020-02-24 14:45:51 -07:00
Alex Barney
7bef4c6cd9 Combine common code in EnsureApplicationSaveData 2020-02-22 03:05:04 -07:00
Alex Barney
cfb79f5780 Add EnsureApplicationCacheStorage 2020-02-18 23:12:23 -07:00
Alex Barney
44ff25ee9b Add cache storage and an emulated SD card 2020-02-13 17:21:24 -07:00
Alex Barney
4ff12ec21b Fix AesXtsFileSystem 2020-02-12 03:04:04 -07:00
Alex Barney
ea8cc33003 Always allow opening directory savedata 2020-02-12 03:04:04 -07:00
Alex Barney
ecf7bcd8ad Rewrite SubdirectoryFileSystem 2020-02-12 03:04:04 -07:00
Alex Barney
1c28c08c94 Add PathNormalizer 2020-02-12 03:04:04 -07:00
Alex Barney
cb6827e6c2 Add PathTool.IsSubpath 2020-02-12 03:04:04 -07:00
Alex Barney
bc11d7ceaf Implement Nintendo's path normalization functions 2020-02-12 03:04:04 -07:00
Alex Barney
3139f6900e Add common IFileSystem tests
Change GetFileAttributes method signature
2020-01-29 17:33:42 -07:00
Alex Barney
de13c71a0d Add some Result XML docs 2020-01-26 15:34:26 -07:00
Alex Barney
0040db1153 Add IResultLogger and IResultNameResolver 2020-01-26 15:34:26 -07:00
Alex Barney
5910b9f9c2 Add some results from Atmosphere 2020-01-26 15:34:26 -07:00
Alex Barney
9034c54318 Refactor the Result struct 2020-01-26 15:34:26 -07:00
Alex Barney
35b82f5d6e
Misc tweaks (#111)
- Use System.HashCode in GetHashCode methods
- Update master key revisions.
- Remove some unneeded utility functions
- Suppress a spurious ReSharper warning
2020-01-19 23:31:23 -07:00
Alex Barney
1ae973a346 Add InMemoryFileSystem 2020-01-19 14:55:34 -07:00
Alex Barney
da467a10b0 Add ToU8String method to U8Span. Add PathTools.GetFileName 2020-01-19 14:55:34 -07:00
Alex Barney
b742a37012 Rewrite MemoryStorage 2020-01-19 14:55:34 -07:00
Alex Barney
857bde67ee Simplify CoreRT build 2020-01-17 00:20:24 -07:00
Alex Barney
3c7f1692b7 Create temporary savedata in EnsureApplicationSaveData 2020-01-13 21:31:18 -07:00
Alex Barney
5b0c81fcf9 Clean temp storage on FileSystemServer init 2020-01-13 21:31:18 -07:00
Alex Barney
5c1a7920d2 Open temp directory savedata properly 2020-01-13 21:31:18 -07:00
Alex Barney
9c402df18a Add SaveDataIndexerLite 2020-01-13 21:31:18 -07:00
Alex Barney
6abe565de1 Add more savedata shim functions 2020-01-13 21:31:18 -07:00
Alex Barney
b868c8f51a Cast enums to int before formatting in string 2020-01-03 22:06:18 -07:00
Alex Barney
76598cfac9 Filter savedata info rank correctly 2020-01-03 22:06:18 -07:00
Alex Barney
e8bef8af6a
Update SourceLink package/info and target .NET Core 3.1 with hactoolnet (#106)
Make hactoolnet target the LTS .NET Core version.
LibHac still targets .NET Core 3.0.
2019-12-30 23:05:29 -07:00
Alex Barney
5e4ea459cb Update var usage based on ReSharper "when apparent" rules 2019-12-28 15:16:21 -07:00
Alex Barney
496250f094 hactoolnet: add nax0 support 2019-12-27 19:18:29 -07:00
Alex Barney
d68062c8b4 Fix keyblob key derivation regression 2019-12-26 23:16:46 -07:00
Alex Barney
70a879917a hactoolnet: Print the key used to sign/verify savedata 2019-12-26 23:16:46 -07:00
Alex Barney
dd74f44297 hactoolnet: Improve save processing error messages
Return a message indicating keys may be missing when a commit fails after replacing files in a save.
2019-12-18 11:59:23 -06:00
Alex Barney
2b828bb50f Use runtime instead of compile-time conditionals for result logging 2019-12-18 11:59:23 -06:00
Alex Barney
47f2f4954a Ensure returned result codes are logged 2019-12-18 11:59:23 -06:00
Alex Barney
5d6dce7e1f Properly pass the missing rights ID to MissingKeyException 2019-12-18 11:59:23 -06:00
Alex Barney
d08e6b060c Add PartitionFileSystemCore 2019-12-07 16:12:49 -06:00
Alex Barney
0c4aad32a0 Ignore key name case when parsing a key file 2019-12-07 16:12:49 -06:00
Alex Barney
ba2a923296 Update FS enum and structure names
The new names should be all or mostly all official
2019-12-07 16:12:49 -06:00