Commit graph

821 commits

Author SHA1 Message Date
Alex Barney
b5ccde1a29 Support NCAs with sparse partitions 2021-12-04 15:49:31 -07:00
Alex Barney
921fbab17a Improve IndirectStorage allocations
Make sure rented arrays are returned and remove delegate allocations by using lambda functions
2021-12-04 15:49:31 -07:00
Alex Barney
40925034e1 Update IndirectStorage and SparseStorage for 13.0 2021-12-04 15:49:31 -07:00
Alex Barney
f180bfeef9 Update BucketTree for 13.0 2021-12-04 15:49:31 -07:00
Alex Barney
771f2cdb26 Add ValueSubStorage 2021-12-04 15:49:31 -07:00
Alex Barney
280fe14b5f Consolidate the 2 separate Buffer types 2021-12-04 15:49:31 -07:00
Alex Barney
f526860599 Modify a few result names 2021-12-04 15:49:31 -07:00
Alex Barney
01ecd31110 hactoolnet: Add disablekeywarns option 2021-11-17 12:00:12 -07:00
Alex Barney
80e7466840 Add parameterless constructor to Fs.Path
We can finally initialize Fs.Path correctly thanks to C# 10 allowing parameterless constructors on structs
2021-11-14 18:36:53 -07:00
Alex Barney
34dda02c38 Use file-scoped namespaces 2021-11-14 18:36:53 -07:00
Alex Barney
6fe89a2966 Properly catch exceptions in LocalFileSystem.CleanDirectoryRecursively 2021-11-04 13:25:00 -07:00
Alex Barney
2793648d37 Remove deprecated classes 2021-11-04 13:02:25 -07:00
Alex Barney
0a8fb8a5c0 Update package1 and package2 readers to use SharedRef<T> 2021-11-03 23:08:50 -07:00
Alex Barney
2370f76c62 Bump version to 0.14.0 2021-11-03 23:08:50 -07:00
Alex Barney
257bdf0c46 Fix usages of SharedRef/UniqueRef 2021-11-03 23:08:50 -07:00
Alex Barney
f9f31056ef Use "in" instead of "ref" where appropriate in SharedRef<T> 2021-11-03 23:08:50 -07:00
Alex Barney
770cd222f1 Update Xci.HasPartition for the new path handling 2021-11-03 23:08:50 -07:00
Alex Barney
e14a20b4fa Use SharedRef in the bcat IPC interfaces 2021-11-03 23:08:50 -07:00
Alex Barney
f07e515048 Fix a new SubStorage bug and add NonCopyable attributes 2021-11-03 23:08:50 -07:00
Alex Barney
1f14a1c360 Fix some usages of SharedRef 2021-11-03 23:08:50 -07:00
Alex Barney
a23d01e934 Move code to use SharedRef instead of ReferenceCountedDisposable 2021-11-03 23:08:50 -07:00
Alex Barney
c28128c7dd Add SharedRef<T> and WeakRef<T> 2021-11-03 23:08:50 -07:00
Alex Barney
6082c10efa Fix bug in FileSystemServiceObjectAdapter.DoCreateDirectory 2021-11-03 23:08:50 -07:00
Alex Barney
01ca9e0412 Introduce UniqueRef<T> and use it in IFileSystem 2021-11-03 23:08:50 -07:00
Alex Barney
5f85c0b8e2 Use using statements to dispose Fs.Path variables 2021-11-03 23:08:50 -07:00
Alex Barney
39f727bc0d Address new warnings from Resharper 2021.2 2021-08-06 23:14:58 -07:00
Alex Barney
b244318e3a Add XML docs to Path 2021-08-06 18:51:55 -07:00
Alex Barney
689549fed7 Remove old path code 2021-08-05 12:59:57 -07:00
Alex Barney
aad87ec845 Update the FsSystem namespace to use Fs.Path 2021-08-05 11:59:05 -07:00
Alex Barney
6ba10074a3 Update the FsSrv namespace to use Fs.Path 2021-08-02 18:31:32 -07:00
Alex Barney
9a97e5ef3e Update lr client and LocationResolverSet 2021-08-02 18:30:00 -07:00
Alex Barney
6db134cae4 Update SaveDataFileSystemServiceImpl to use Path 2021-07-29 11:36:17 -07:00
Alex Barney
2f58e2fd5a Update ConcatenationFileSystem 2021-07-26 10:20:00 -07:00
Alex Barney
8bb6b0e824 Update FsSystem.Utility 2021-07-26 10:19:59 -07:00
Alex Barney
b86b57a4d3 Update SubdirectoryFileSystem and InMemoryFileSystem 2021-07-26 10:19:59 -07:00
Alex Barney
4efe313281 Update file system accessor classes 2021-07-26 10:19:59 -07:00
Alex Barney
77aef9166f Update tests to use the updated fsa interfaces 2021-07-26 10:19:59 -07:00
Alex Barney
4ceb925cde Update MultiCommitManager 2021-07-26 10:19:59 -07:00
Alex Barney
4934b1cbef Update FileSystemInterfaceAdapter 2021-07-26 10:19:58 -07:00
Alex Barney
8e162cc3c8 Update FileSystemServiceObjectAdapter 2021-07-26 10:19:58 -07:00
Alex Barney
7d3ceb5315 Update IFileSystem for nnsdk 12.x 2021-07-16 13:58:49 -07:00
Alex Barney
b7897c8553 Rename IFilesystem params 2021-07-16 00:14:02 -07:00
Alex Barney
8a5ecb18f8 Move new path code to the proper namespace 2021-07-13 19:44:14 -07:00
Alex Barney
a7f5c7c041 Implement nn::fs::Path 2021-07-13 19:44:14 -07:00
Alex Barney
79a4c62b2e Add version 12 implementations of path utility classes 2021-07-13 19:44:14 -07:00
Alex Barney
f444a999ba Add misc helper functions and fix null assertion text 2021-07-13 19:44:14 -07:00
Alex Barney
ec6eff156c Add missing "Unexpected" FS results 2021-07-13 19:44:14 -07:00
Alex Barney
8406bea563 Implement CharacterEncoding 2021-07-13 19:44:14 -07:00
Alex Barney
76e5a20e1d Handle old, pre-release cnmt files 2021-07-10 17:08:30 -07:00
Alex Barney
7cbbf023ff Add new key sources for key generation 12 2021-07-06 17:28:14 -07:00
Alex Barney
20dcbf8664 Fix a permissions bug when creating system save data 2021-06-29 19:27:49 -07:00
Alex Barney
496858c7a7 Fix incorrect assert in BucketTree.NodeBuffer.Allocate 2021-06-22 19:45:58 -07:00
Alex Barney
b3dc972881 Allow FS access log to be used without a backing FS server
Reduces the hactoolnet build size by ~260 KB due to fssrv code no longer being used
2021-06-15 01:55:19 -07:00
Alex Barney
44fd3eb0a4 Update package metadata and readme
Changes the description of the project to better reflect what it does
2021-06-15 00:07:50 -07:00
Alex Barney
c59e72606f Add CreateApplicationCacheStorage 2021-06-08 19:13:47 -07:00
Alex Barney
3018eeb8e8 Fix accidentally disposing an ISaveDataInfoReader 2021-06-01 17:39:53 -07:00
Alex Barney
f4d6d6b3c8 Add some docs and fix a permissions logic error 2021-06-01 10:38:17 -07:00
Alex Barney
b346280bc9 Make SaveDataManagement functions public and add tests 2021-06-01 10:38:17 -07:00
Alex Barney
3056c5c296 Implement extra data functions in SaveDataFileSystemService 2021-06-01 10:38:17 -07:00
Alex Barney
e99d05cc84 Make sure extra data is initialized in DirectorySaveDataFileSystem 2021-06-01 10:38:17 -07:00
Alex Barney
a1477cc9f9 Use a lock file for directory save data 2021-06-01 10:38:17 -07:00
Alex Barney
ccb8c078aa Write extra data when creating directory save data 2021-06-01 10:38:17 -07:00
Alex Barney
7294206116 Update ISaveDataFileSystemCreator.Create
Update method parameters and rewrite the method to use SaveDataSharedFileStorage.

SaveDataFileSystemCreator now requires a FileSystemServer at construction time, so DefaultFsServerObjects must be created after FileSystemServer construction but before FileSystemServer initialization.
2021-06-01 10:38:17 -07:00
Alex Barney
d1a49b989a Add SaveDataSharedFileStorage 2021-06-01 10:38:17 -07:00
Alex Barney
9f3e6db545 Auto-format SaveDataManagement 2021-06-01 10:38:17 -07:00
Alex Barney
5c6f78e751 Implement all defined methods in SaveDataManagement 2021-06-01 10:38:17 -07:00
Alex Barney
7122052565 Add more methods to SaveDataManagement
Skeleton most of the remaining methods in SaveDataManagement.
Implement the methods directly reading and writing save data extra data.
Add PosixTime.cs
FS shim macros now call nn::fs::detail::LogResultErrorMessage before aborting instead of nn::fs::detail::LogErrorMessage
2021-06-01 10:38:17 -07:00
Alex Barney
86be94e9b5 Fill out cache storage functions in SaveDataFileSystemService 2021-06-01 10:38:17 -07:00
Alex Barney
f67d51cb37 Add save data extra data functions to SaveDataFileSystemServiceImpl
Adds ReadSaveDataFileSystemExtraData and WriteSaveDataFileSystemExtraData
Auto-format SaveDataFileSystemServiceImpl
Use SdkRecursiveMutexType instead of SdkRecursiveMutex in SaveDataExtraDataAccessorCacheManager
2021-06-01 10:38:17 -07:00
Alex Barney
7aae39c358 Use save data caches in SaveDataFileSystemServiceImpl 2021-06-01 10:38:17 -07:00
Alex Barney
ed8ef13bfd Add SaveDataResultConvertFileSystem 2021-06-01 10:38:17 -07:00
Alex Barney
6f6201cb6d Add SaveDataFileSystemCacheRegisterBase 2021-06-01 10:38:17 -07:00
Alex Barney
f1caabf82b Add SaveDataFileSystemCacheManager 2021-06-01 10:38:17 -07:00
Alex Barney
d06731f464 Add SaveDataExtraDataAccessorCacheManager 2021-06-01 10:38:17 -07:00
Alex Barney
44229f5986 Rename some save data results 2021-06-01 10:38:17 -07:00
Alex Barney
25b94292b3 Modify ISaveDataFileSystemCreator 2021-06-01 10:38:17 -07:00
Alex Barney
649c72e5e6 Add extra data handling to DirectorySaveDataFileSystem 2021-06-01 10:38:17 -07:00
Alex Barney
3bf8826a5b Fill out SaveDataFileSystemServiceImpl.Configuration 2021-06-01 10:38:17 -07:00
Alex Barney
433e7bb98e Fix access control debug mask 2021-04-25 15:42:48 -07:00
Alex Barney
b03e7aa7e9 Fix MetaLoader KernelCapabilityOffset bug 2021-04-25 15:42:48 -07:00
Alex Barney
52c0903f61 Add Ncm.ProgramLocation 2021-04-25 15:42:48 -07:00
Alex Barney
1744e0a562 Actually implement IDisposable on DirectoryHandle 2021-04-19 12:27:07 -07:00
Alex Barney
17b8bc5b62 Make fssrv interface adapters public 2021-04-19 12:01:16 -07:00
Alex Barney
4d3a1418f6 Use more accurate Sf IFile and IStorage function signatures 2021-04-19 11:16:38 -07:00
Alex Barney
880916e117 Make FileHandle and DirectoryHandle implement IDisposable 2021-04-19 11:16:38 -07:00
Alex Barney
646055de5a Update version to 0.13.0 2021-04-18 19:34:37 -07:00
Alex Barney
a730c17bc5 Add Loader.MetaLoader 2021-04-16 14:55:30 -07:00
Alex Barney
bb2c870f27 Update DirectorySaveDataFileSystem to 11.0.0 2021-04-15 16:30:12 -07:00
Alex Barney
4ea2896b72 Improve LocalFileSystem
- Add case-sensitive mode.
- Avoid TargetLocked results by waiting and retrying a few times.
- Allow getting either windows or unix timestamps.
- Try a finite number of times if an entry has been deleted before returning TargetLocked.
2021-04-01 01:26:23 -07:00
Alex Barney
8848959831 Add most FS results 2021-03-28 23:13:06 -07:00
Alex Barney
0c255e0f49 Update common path handling code
- Updates path handling code to system version 11.0.0.
- Changes InMemoryFileSystem to normalize all incoming paths.
2021-03-28 16:03:05 -07:00
Alex Barney
7269c0a215 Add new assert system
Mostly imitates nnsdk's assert system. The assert handler object is global because passing around a HorizonClient object just to do asserts would be annoying
2021-03-27 21:28:13 -07:00
Alex Barney
12fe47c91c Rename "Detail" namespaces to "Impl" 2021-03-19 16:57:11 -07:00
Alex Barney
0ab26fdd69 Rename FsSrv.Creators to FsSrv.FsCreator 2021-03-19 16:57:11 -07:00
Alex Barney
d8b8e3088e Use SkipParamInit for handling unwritten out values
Use this function in all places out values that set in the original code because of errors. Unmanaged values will stay uninitialized while managed values will be zeroed.
2021-03-19 16:57:11 -07:00
Alex Barney
d2c327377d Remove "--removefeature:EventSource" compile option 2021-03-12 01:34:14 -07:00
Alex Barney
e2f1d74ae5 Remove some old logging classes 2021-03-12 01:34:14 -07:00
Alex Barney
6e55d8c362 Fill out FS access log code 2021-03-12 01:34:14 -07:00
Alex Barney
39977d8e90 Add the logger from nn::diag 2021-03-12 01:34:14 -07:00
Alex Barney
7950a91dd0 Add ReaderWriterLock 2021-03-12 01:34:14 -07:00
Alex Barney
6360a18fbf Add padding options to U8StringBuilder 2021-03-12 01:34:14 -07:00
Alex Barney
6641109d94 Update FS shims for new Horizon and access log code
Makes all current FS shims more accurate, including using rewritten access log and system tick handling code.
2021-03-12 01:34:14 -07:00
Alex Barney
684fcd460f Swap in the new fsa code except for some access log calls 2021-03-12 01:34:14 -07:00
Alex Barney
0dc433d8a2 Implement UserFileSystem and mount registration 2021-03-12 01:34:14 -07:00
Alex Barney
a11e84cc81 Implement or skeleton fsa file system code 2021-03-12 01:34:14 -07:00
Alex Barney
61654298d2 Implement or skeleton some mounting code 2021-03-12 01:34:14 -07:00
Alex Barney
596a8bef7c Rewrite file system accessors 2021-03-12 01:34:14 -07:00
Alex Barney
270e61a501 Add properties to FileSystemServerImpl and StorageService 2021-02-07 00:53:40 -07:00
Alex Barney
e50078d939 Move initialization code out of FileSystemServer 2021-02-07 00:26:20 -07:00
Alex Barney
a94bb81c54 Add FsSrv.Impl.FileSystemProxyServiceObject 2021-02-06 22:04:00 -07:00
Alex Barney
e3c14dfa4f Add FileSystemProxyServiceObject for the FileSystemClient
Moves all the Get*ServiceObject functions to their own file.
Adds InitializeDfcFileSystemProxyServiceObject.
2021-02-06 00:29:47 -07:00
Alex Barney
58e94e99a9 Pass in a FileSystemServer to more classes 2021-02-05 15:18:08 -07:00
Alex Barney
dadc019439 Use globals in more places
Adds globals for FileSystemProxyImpl, ProgramRegistryImpl, AccessControl and StorageDeviceManagerFactory
2021-02-02 21:11:51 -07:00
Alex Barney
e9918fa5aa Add AccessFailureManagementService 2021-01-31 01:23:38 -07:00
Alex Barney
e9f518ddc1 Convert tabs to spaces because spaces are better. Fight me.
No idea how this one file got formatted with tabs.
2021-01-30 02:31:17 -07:00
Alex Barney
3463c977dd Implement the rest of TimeServiceImpl 2021-01-30 02:14:12 -07:00
Alex Barney
d0e608775e Flesh out FileSystemProxy functions a bit more including 11.0.0 ones 2021-01-30 01:54:43 -07:00
Alex Barney
2f9fbdb818 Add StatusReportService 2021-01-29 17:41:12 -07:00
Alex Barney
e5291eb06a Fix IFatFileSystemCreator 2021-01-29 01:03:23 -07:00
Alex Barney
119809a965 Add Mmc and SD card portions of Fssrv.Storage 2021-01-29 01:03:06 -07:00
Alex Barney
b315e14da0 Add IDeviceEventSimulator and implement some of the Os namespace 2021-01-28 23:24:24 -07:00
Alex Barney
981b902606 Move Results to their correct namespaces 2021-01-19 21:30:02 -07:00
Alex Barney
65f8ab671f Mark abstract results as such 2021-01-19 21:30:02 -07:00
Alex Barney
9eeed9c225 Allow defining abstract Results 2021-01-19 21:30:02 -07:00
Alex Barney
7b38708c11 Add missing IFileSystemProxy methods 2021-01-19 21:30:02 -07:00
Alex Barney
e9ffc5a5e6 Move IFileSystemProxy to the Sf namespace 2021-01-19 21:30:02 -07:00
Alex Barney
5367d7c5cd Add save data transfer sf interfaces 2021-01-19 21:30:02 -07:00
Alex Barney
f2f68958a8 Pull in some results from Atmosphere 2021-01-19 21:30:02 -07:00
Alex Barney
6b8b1515c2 Compress result name data 2021-01-19 21:30:02 -07:00
Alex Barney
2c7291b9ae Update CoreRT/Native AOT version 2021-01-19 21:30:02 -07:00
Alex Barney
4bf7060ec7
Update ReSharper var style and warnings (#172)
ReSharper 2020.Something modified the var style again so that arrays of built-in types also count as built-in types, meaning the type should always be explicit.
2021-01-19 19:49:58 -07:00
Alex Barney
4efd95f94c Add BufferedStorage with some supporting classes 2021-01-18 23:48:37 -07:00
Alex Barney
32a3750a92 Add FileSystemBufferManager 2021-01-18 23:48:37 -07:00
Alex Barney
8e1eb0d057 Add FileSystemBuddyHeap 2021-01-18 23:48:37 -07:00
Alex Barney
454f38f1bb Rename Assert.AssertTrue to Assert.True 2021-01-18 23:48:37 -07:00
Alex Barney
acce155341 Move some functions from Utilities to LibHac.Util.* 2021-01-18 23:48:37 -07:00
Alex Barney
7fcb0054e4 Support NCA0 sections using IVFC hashes 2020-11-25 23:40:43 -06:00
Alex Barney
369784ff12 Use SkipInit for initializing path string types 2020-11-17 22:41:54 -06:00
Alex Barney
25f8115600 Move to .NET 5.0 2020-11-17 22:41:54 -06:00
Alex Barney
57c0a5065c Rename FsSrv.Sf file system and storage interfaces 2020-11-10 22:03:54 -07:00
Alex Barney
0efaafd101 Add more NcaFileSystemService functions 2020-11-10 15:07:28 -07:00
Alex Barney
6b6a31dcea Add BaseStorageService 2020-11-05 01:15:21 -07:00
Alex Barney
c29fed67c1 Add TimeService 2020-11-05 01:14:53 -07:00
Alex Barney
9826178fb6 Add AccessLogService 2020-11-04 00:46:39 -07:00
Alex Barney
a3220cc8df Fix method signatures in IFileSystemProxy 2020-11-02 17:05:13 -07:00
Alex Barney
882e6bc937 Separate fssrv save code to SaveDataFileSystemService 2020-11-01 23:54:00 -07:00
Alex Barney
3837ed7eea Add more FS IPC interfaces with adapters 2020-10-14 15:19:15 -07:00
Alex Barney
5dc7c57851 Fully implement LR client and LocationResolverSet 2020-10-14 15:11:35 -07:00
Alex Barney
4113bc2d36 Rename FileSystemProxy to FileSystemProxyImpl 2020-10-14 14:57:19 -07:00
Alex Barney
2bd7bb7892 Use BaseFileSystemService in FileSystemProxy 2020-10-14 14:50:51 -07:00
Alex Barney
be55aa7e9c Add BaseFileSystemService 2020-10-14 14:48:34 -07:00
Alex Barney
9f81b933e8 KeySet.DeriveKeys now derives both sets automatically 2020-10-13 21:34:08 -07:00
Alex Barney
9bb2c3a843 Support more key parser situations
Support comments, ignoring lines that are too long, properly reading the last line in a file. Probably some bug fixes too.
2020-10-13 20:55:48 -07:00
Alex Barney
b6499a6c12 Rename IsEmpty to IsZeros
Renames the IsEmpty() functions that check if an array is all zeros. This helps avoid confusion because Span has an IsEmpty property that returns true if the span's length is 0.

The change actually revealed a tiny bug in KeyDerivation where the property was accidentally used instead of the function.
2020-10-11 23:47:26 -07:00
Alex Barney
c39895080b hactoolnet: Always read both prod and dev key sets 2020-10-11 22:25:02 -07:00
Alex Barney
8f011387a0 Improve key parser performance a bit 2020-10-11 01:26:43 -07:00
Alex Barney
b5dabe78f5 Replace hex string converter and move StringUtils 2020-10-10 20:17:07 -07:00
Alex Barney
a9632c8d00 Rewrite the key file parser 2020-10-10 17:19:40 -07:00
Alex Barney
fa79db2285 Split ExternalKeyReader 2020-10-07 17:54:29 -07:00
Alex Barney
bac541947f Embed key sources in the library
Embedded keys are generated at build-time from the IncludedKeys.txt file under the build directory.

A separate codegen build project was created because generating the embedded keys requires the same LibHac that is being built.

_buildCodeGen.csproj is located under CodeGen because NUKE doesn't like having two build projects in the same directory.
2020-10-06 22:18:34 -07:00
Alex Barney
770406e9c2 Remove the old Keyset class 2020-10-05 12:25:39 -07:00
Alex Barney
e3bb1f1fac Allow reading dev keys from key files 2020-10-05 01:26:54 -07:00
Alex Barney
7a7cded4f2 Add RSA keys 2020-10-04 20:18:30 -07:00
Alex Barney
333ef8729f Fix RSA regression from 5f755bc7 and add a test 2020-10-02 01:33:44 -07:00
Alex Barney
f7030aef4f Add a new KeySet class 2020-10-01 18:06:32 -07:00
Alex Barney
61ce892697 Rewrite the Package1 class, updating it to handle newer package1s 2020-09-28 01:18:15 -07:00
Alex Barney
49711b12db Tweaks and cleanup for PR #164
- Fully span-ify CalculateCmac and update callers.
- Modify CalculateCmac signature to match Nintendo's.
- Avoid doing stackalloc based on an input length parameter.
- Use ReadOnlySpan instead of Span where appropriate.
- Standardize XML comments to use triple slashes.
- Make use of the entire rented buffer when copying.

Unrelated to the PR
- Slip in a missed enum to string conversion in hactoolnet for CoreRT reflection-free mode.
2020-09-05 21:10:39 -07:00
Xpl0itR
265147b678
Changes to CryptoOld
- Remove AES functions and replace references with functions from the Crypto.Aes class
- Edit and move the AES-CMAC function into the Crypto.Aes class
- Move BigInteger functions to the Utilities class
- Reduce duplication between the RSA functions
- Edit and move the Rsa parameter recovery function into the Crypto.Rsa class
2020-09-02 19:09:27 +01:00
Xpl0itR
49a8ffd3e2
Expose bufferSize as a variable in CopyTo and CopyToStream 2020-08-30 10:32:52 +01:00
Xpl0itR
771663786d
Use LibHac's RentedArray<T> struct 2020-08-30 10:32:52 +01:00
Alex Barney
d138a52d06 Add some docs for EmulatedBisFileSystemCreator 2020-08-29 21:53:45 -07:00
Alex Barney
30f306f637 Add additional documentation to the access control classes 2020-08-26 17:10:12 -07:00
Alex Barney
4552a2d94f Add permission checks to DeleteSaveDataFileSystem 2020-08-26 17:10:12 -07:00
Alex Barney
1f25b87d20 Add RegisterProgramIndexMapInfo shim and tests 2020-08-26 17:10:12 -07:00
Alex Barney
6496a2c1bc Honor permissions in OpenFileSystemWithId. Add basic AC test 2020-08-26 17:10:12 -07:00
Alex Barney
3184e6ca7e Add IFileSystemProxyForLoader and IProgramRegistry interfaces 2020-08-26 17:10:12 -07:00
Alex Barney
071b608f5f Tweak how the Horizon class and service manager work
- Store IServiceObjects in the service manager that return the usable objects instead of storing the objects directly
- Register FS services in the service manager instead of giving them special treatment
- Give each created HorizonClient its own "process ID"
2020-08-26 17:10:12 -07:00
Alex Barney
deaf111ac3 Add functions to ProgramRegistryService
Adds RegisterProgramIndexMapInfo and GetProgramIndexForAccessLog to both FileSystemProxy and ProgramRegistryService
2020-08-26 17:10:12 -07:00
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