Commit graph

341 commits

Author SHA1 Message Date
Alex Barney
3d7ff652e0 Add CommonMountNames 2019-12-07 16:12:49 -06:00
Alex Barney
ac70990fa0 Add Slice functions to U8Strings 2019-12-07 16:12:49 -06:00
Alex Barney
a6161e693c Add MountContent shims 2019-12-07 16:12:49 -06:00
Alex Barney
c6a261eeee Rename LocalAccessLogMode to AccessLogTarget 2019-12-07 16:12:49 -06:00
Alex Barney
57586d75fd
Target netstandard2.1 and netcoreapp3.0 (#99)
.NET Core 2.1 introduced some runtime changes to support Span<T> and ByReference. Along with this comes the ability to do things like reinterpret memory as a different type. In .NET Framework the garbage collector couldn't track these references. These features proved useful enough that support for .NET Framework was dropped.

* Target netstandard2.1 and netcoreapp3.0
* Build: Zip native builds. Put version in zip filename
* Always build native exe on AppVeyor
2019-11-29 13:11:04 -06:00
Alex Barney
fdc3a11692 Bump version to 0.7.0 2019-11-26 20:49:55 -06:00
Alex Barney
e18481b3b7 Use Sha256Generator throughout the library 2019-11-26 18:13:30 -06:00
Alex Barney
1efcf3327c Add SHA-256 benchmark with the option to display cycles per byte 2019-11-26 18:13:30 -06:00
Alex Barney
1aa5c9438e Add Sha256Generator 2019-11-26 18:13:30 -06:00
Alex Barney
f9232b9f12 Add ICipherWithIv interface 2019-11-25 11:39:57 -06:00
Alex Barney
99522b748e Add optimized functions for decrypting a single AES block 2019-11-25 11:39:57 -06:00
Alex Barney
abce62dd4f Avoid running into problems from a GC hole in runtimes that don't support fast span.
Support for .NET Framework probably needs to be removed soon. Having runtime support for CreateSpan has turned out to be rather useful.
2019-11-23 21:05:37 -06:00
Alex Barney
2f6b75a8eb Remove use of Enum.TryParse 2019-11-23 20:06:19 -06:00
Alex Barney
3395ebff44 Improve AES key expansion performance 2019-11-23 20:05:05 -06:00
Alex Barney
e02e719ea5 Add crypto benchmarks 2019-11-23 18:56:31 -06:00
Alex Barney
ff23a9179c Add some NACP enums 2019-11-22 19:53:55 -06:00
Alex Barney
a7c733f96c Slightly change some BlitSpan methods 2019-11-22 19:53:55 -06:00
Alex Barney
be2c4d3959 Add SourceLink package 2019-11-22 19:53:55 -06:00
Alex Barney
5d2de68976 Slight renamings 2019-11-22 19:53:55 -06:00
Alex Barney
5b6ca9c160 Add BlitStruct<T> and BlitSpan<T> 2019-11-22 19:53:55 -06:00
Alex Barney
bfaf95026a Add EnsureApplicationSaveData and dependencies
- CreateBcatSaveData
- CreateDeviceSaveData
- CreateTemporaryStorage
- ApplicationControlProperty struct
2019-11-22 19:53:55 -06:00
Alex Barney
df8dab542a Allow setting system save owner to 0 for now 2019-11-22 19:53:55 -06:00
Alex Barney
db6269df5c Interleave AES instructions to improve performance 2019-11-22 13:59:47 -05:00
Alex Barney
191b3d41f6 Ensure crypto works when the input and output buffers are the same 2019-11-22 13:59:47 -05:00
Alex Barney
d0caf6ca4f Use new crypto in Keyset class 2019-11-22 13:59:47 -05:00
Alex Barney
2f4453404f Rename Crypto namespace 2019-11-22 13:59:47 -05:00
Alex Barney
488bd8e682 Rename Aes class 2019-11-22 13:59:47 -05:00
Alex Barney
4b2c4d9553 Refactor non-NI AES code 2019-11-22 13:59:47 -05:00
Alex Barney
2752a7c3db Avoid allocations when doing encryption with AES-NI 2019-11-22 13:59:47 -05:00
Alex Barney
df646fb503 Add functions to encrypt/decrypt entire buffers 2019-11-22 13:59:47 -05:00
Alex Barney
8b47be19c2 Add XTS mode and remove duplicate code 2019-11-22 13:59:47 -05:00
Alex Barney
df27d2a83b Use AES-NI instructions 2019-11-22 13:59:47 -05:00
Alex Barney
f99bc3e0fe Give a better error in LocalFileSystem when trying to initialize it with a file 2019-11-11 12:03:22 -06:00
Alex Barney
fcf46b1822 Reduce memory used by parsing CLI arguments and keys
These actions are usually only performed once per program run, but the objects they used were stored as static properties where they couldn't be cleared from memory. Free up a small bit of memory by only storing them locally.

Reduces memory used by ~150 KB and reduces object count by over 1500
2019-11-03 12:25:09 -07:00
Alex Barney
cccb811293
Add Result methods for debugging (#90)
- Allow setting a callback function for when Result.Log is called.
- Allow setting a function that returns a name for a Result value.
- Print Result name in error messages
2019-10-25 22:13:09 -05:00
Alex Barney
172817a7d5 Make EmulatedSdFileSystemCreator config easier
Also make unintentionally internal classes public and enforce var style
2019-10-24 15:28:36 -05:00
Alex Barney
f3b5cad94b
Merge pull request #89 from Thealexbarney/saveIndex
Add a save indexer with related functions

Adds IFileSystemProxy commands:

- DeleteSaveDataFileSystem
- DeleteSaveDataFileSystemBySaveDataSpaceId
- DeleteSaveDataFileSystemBySaveDataAttribute
- CreateSaveDataFileSystem
- CreateSaveDataFileSystemWithHashSalt
- CreateSaveDataFileSystemBySystemSaveDataId
- OpenSaveDataFileSystem
- OpenReadOnlySaveDataFileSystem
- OpenSaveDataInfoReader
- OpenSaveDataInfoReaderBySaveDataSpaceId
- OpenSaveDataInfoReaderWithFilter
- FindSaveDataWithFilter
2019-10-24 10:37:56 -05:00
Alex Barney
901b72a186 Make internally-used FileSystemProxy methods private 2019-10-23 17:45:28 -05:00
Alex Barney
436de21c86 Add ISaveDataIndexer.GetCount 2019-10-23 17:30:08 -05:00
Alex Barney
bf8b975fa6 Implement more OpenSaveDataInfoReader commands 2019-10-23 17:12:24 -05:00
Alex Barney
04b123f16e Adjust opened SaveDataInfoReaders if the collection is modified 2019-10-23 15:44:00 -05:00
Alex Barney
f0aac13fab Add some SaveDataInfoReader functions 2019-10-22 17:52:55 -05:00
Alex Barney
3af543e4e1 Do error handling in CreateSaveDataFileSystemImpl 2019-10-21 20:38:59 -05:00
Alex Barney
e74bda1a68 Implement DeleteSaveDataFileSystem 2019-10-21 00:29:54 -05:00
roblabla
d2cf1ecb1f hactoolnet: Add Title Name to NCA output
When displaying an NCA containing an NPDM in the code partition, display the
title name.
2019-10-19 10:41:28 -05:00
Alex Barney
92049bf9b7 Add main parts of CreateSaveDataFileSystem 2019-10-18 18:57:45 -05:00
Alex Barney
fef6d19900 Rearrange some FS client functions 2019-10-17 15:52:29 -05:00
Alex Barney
ee9bee3efb Make IFileSystem implement IDisposable 2019-10-17 14:52:44 -05:00
Alex Barney
d330d11de2 Add SaveDataIndexer 2019-10-17 10:52:35 -05:00
Alex Barney
c7f2f28a81 Fix CleanDirectoryRecursivelyGeneric 2019-10-16 20:28:46 -05:00
Alex Barney
dee7c93285 Use plain structs for kvdb 2019-10-15 12:33:15 -05:00
Alex Barney
be907ce4bb
Target .NET Core 3.0 (#85)
* Target .NET Core 3.0

* Update build and test project packages

* Update AppVeyor build image
2019-10-14 21:10:53 -05:00
Alex Barney
9b9e83f1dc Increment GitVersion. Renaming 2019-10-14 17:26:47 -05:00
Alex Barney
102adb4a11 Update version to 0.6.0 2019-10-14 12:28:23 -05:00
Alex Barney
49ec3d6427 Add a path normalizer that behaves like the one in FS 2019-10-14 12:10:56 -05:00
Alex Barney
e05a37bb38 Ensure failed directory savedata commits can be recovered 2019-10-14 12:10:56 -05:00
Alex Barney
576049ce88 Add OperateRange to IFile and IStorage. Reorder methods 2019-10-11 21:20:20 -05:00
Alex Barney
8390e10ae0 Make FileBase abstract methods protected 2019-10-11 20:32:47 -05:00
Alex Barney
8f4c310b7e Add FileSystemBase 2019-10-11 19:11:36 -05:00
Alex Barney
162fb4e389 Move IStorage classes to the new StorageBase 2019-10-11 14:48:31 -05:00
Alex Barney
bfc343e801 Add some validation to StorageBase 2019-10-11 12:53:29 -05:00
Alex Barney
54950c9b68 Handle more errors in LocalFileSystem 2019-10-10 19:01:46 -05:00
Alex Barney
089b5b4f63 Add EmulatedGameCardFsCreator 2019-10-08 20:39:07 -05:00
Alex Barney
f4aaa3b453 Merge from master 2019-10-08 16:29:05 -05:00
Alex Barney
6ed1f1297d Make GameCardHandle.Value public 2019-10-08 11:29:33 -05:00
Alex Barney
b517085e92 Add DefaultFsServerObjects for creating a default server instance 2019-10-07 19:01:53 -05:00
Alex Barney
51a13068df Add an emulated gamecard and storage creator 2019-10-07 18:39:06 -05:00
Alex Barney
9934f477d5 Add remaining GetRightsId methods and U8StringBuilder 2019-10-04 17:17:25 -05:00
Alex Barney
fdd7eebb4b Add external key methods to FS client/server 2019-10-02 17:57:10 -05:00
roblabla
a68d8c16d8 Add developer fixed key modulus 2019-10-02 13:53:40 -05:00
Alex Barney
d291500b28 Add ExternalKeySet. Use C# 8.0 2019-10-02 13:45:58 -05:00
Alex Barney
d7f3e94577 Add a basic SaveDataFileSystemCreator 2019-10-01 16:32:20 -05:00
Alex Barney
5011a57d3e Add an option to control which types of access events are logged 2019-09-30 16:15:31 -05:00
Alex Barney
22bbf07c2b Add a function for handling possible access log output 2019-09-29 11:54:34 -05:00
Alex Barney
838bb18a09 Add some savedata client functions 2019-09-27 23:36:43 -05:00
Alex Barney
00eb988793 Move FileSystemManager into FileSystemClient 2019-09-25 17:50:07 -05:00
Alex Barney
955fff8efc Add FileHandleStorage and a new SubStorage class 2019-09-25 17:16:59 -05:00
Alex Barney
c89bc1c706 Make FileSystemProxy implement IFileSystemProxy 2019-09-23 18:37:23 -05:00
Alex Barney
fd40b2fd77 Remove the old FileBase class 2019-09-23 00:36:47 -05:00
Alex Barney
6a449b7da1 Remove IFile.Mode and create a new FileBase class 2019-09-21 23:38:47 -05:00
Alex Barney
22940f20e5 Move custom storage client code together 2019-09-21 13:59:35 -05:00
Alex Barney
0fe3031701 Move common items to the Fs class 2019-09-21 13:05:45 -05:00
Alex Barney
0e01aa3984 Rename FS namespaces 2019-09-21 12:29:10 -05:00
Alex Barney
a7befc5612 Add AccessPermissions enum 2019-09-20 22:51:42 -05:00
Alex Barney
115d798905 Add more methods to IFileSystemProxy 2019-09-20 00:40:14 -05:00
Alex Barney
5ca698eda1 More IFileSystemProxy functions 2019-09-18 18:07:08 -05:00
Alex Barney
7e2dd22079 Add more methods to IFileSystemProxy 2019-09-18 16:29:27 -05:00
Alex Barney
7222c7d469 Add a few more method definitions to IFileSystemProxy 2019-09-16 22:05:22 -05:00
Alex Barney
4bbfa057d2 Add U8String class and some FileSystemClient functions 2019-09-16 16:42:32 -05:00
Alex Barney
2f49021405 Begin filling out FileSystemClient functions 2019-09-15 08:11:54 -05:00
Alex Barney
734d86d336 Change IDirectory to match the interface in FS 2019-09-14 18:35:25 -05:00
Alex Barney
104312bf06 Log result codes in access log 2019-09-08 15:16:37 -05:00
Alex Barney
9e9fd19f63 Return Result from IFileSystem methods 2019-09-08 14:28:42 -05:00
Alex Barney
69e7735666 Change IFile and IStorage classes to return Result 2019-09-03 12:35:34 -05:00
Alex Barney
d073bdfa54 Change IFile and IStorage interfaces 2019-09-01 18:35:59 -05:00
Alex Barney
6823aa7cb8 Add placeholder FileSystemClient functions 2019-09-01 18:17:35 -05:00
Alex Barney
f0ce5a9946 Change names of some enum members 2019-08-31 19:17:28 -05:00
Alex Barney
dfff3b1ccf Create FileSystemClient 2019-08-31 10:15:49 -05:00
Alex Barney
d6165d1097 Add OpenSaveDataFileSystemBySystemSaveDataId 2019-08-29 18:54:51 -05:00
Alex Barney
d610d2262b Add a Result.Log() method to aid in debugging 2019-08-27 12:27:07 -05:00