diff options
author | Alex Barney <thealexbarney@gmail.com> | 2021-08-20 13:36:14 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-20 13:36:14 -0700 |
commit | e0af248e6f96efe7009915935407fc809eb774a9 (patch) | |
tree | c2423a9b16ee246d18a0e2b75b03e802fa6e7776 /Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs | |
parent | 97aedc030d24bc5e32fa95a297155f2df2ecfcc2 (diff) |
Clean the SD card save directory when opening the emulator (#2564)
Cleans "sdcard:/Nintendo/save" and deletes "sdcard:/save" when opening the emulator.
Works around invalid encryption when keys or the SD card encryption seed are changed.
Diffstat (limited to 'Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs')
-rw-r--r-- | Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs | 35 |
1 files changed, 1 insertions, 34 deletions
diff --git a/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs b/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs index aaa80044..f8e59fb5 100644 --- a/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs +++ b/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs @@ -9,8 +9,6 @@ namespace Ryujinx.HLE.FileSystem { public class EncryptedFileSystemCreator : IEncryptedFileSystemCreator { - public EncryptedFileSystemCreator() { } - public Result Create(out ReferenceCountedDisposable<IFileSystem> encryptedFileSystem, ReferenceCountedDisposable<IFileSystem> baseFileSystem, EncryptedFsKeyId keyId, in EncryptionSeed encryptionSeed) { @@ -23,40 +21,9 @@ namespace Ryujinx.HLE.FileSystem // Force all-zero keys for now since people can open the emulator with different keys or sd seeds sometimes var fs = new AesXtsFileSystem(baseFileSystem, new byte[0x32], 0x4000); - var aesFileSystem = new ReferenceCountedDisposable<IFileSystem>(fs); - - // This wrapper will handle deleting files that were created with different keys - var wrappedFs = new ChangedEncryptionHandlingFileSystem(aesFileSystem); - encryptedFileSystem = new ReferenceCountedDisposable<IFileSystem>(wrappedFs); + encryptedFileSystem = new ReferenceCountedDisposable<IFileSystem>(fs); return Result.Success; } } - - public class ChangedEncryptionHandlingFileSystem : ForwardingFileSystem - { - public ChangedEncryptionHandlingFileSystem(ReferenceCountedDisposable<IFileSystem> baseFileSystem) : base(baseFileSystem) { } - - protected override Result DoOpenFile(out IFile file, U8Span path, OpenMode mode) - { - UnsafeHelpers.SkipParamInit(out file); - - try - { - return base.DoOpenFile(out file, path, mode); - } - catch (HorizonResultException ex) - { - if (ResultFs.AesXtsFileHeaderInvalidKeys.Includes(ex.ResultValue)) - { - Result rc = DeleteFile(path); - if (rc.IsFailure()) return rc; - - return base.DoOpenFile(out file, path, mode); - } - - throw; - } - } - } } |