EncryptedFileSystemCreator.cs 1.0 KB

1234567891011121314151617181920212223242526272829
  1. using LibHac;
  2. using LibHac.Common;
  3. using LibHac.Fs;
  4. using LibHac.Fs.Fsa;
  5. using LibHac.FsSrv.FsCreator;
  6. using LibHac.FsSystem;
  7. namespace Ryujinx.HLE.FileSystem
  8. {
  9. public class EncryptedFileSystemCreator : IEncryptedFileSystemCreator
  10. {
  11. public Result Create(out ReferenceCountedDisposable<IFileSystem> encryptedFileSystem, ReferenceCountedDisposable<IFileSystem> baseFileSystem,
  12. EncryptedFsKeyId keyId, in EncryptionSeed encryptionSeed)
  13. {
  14. UnsafeHelpers.SkipParamInit(out encryptedFileSystem);
  15. if (keyId < EncryptedFsKeyId.Save || keyId > EncryptedFsKeyId.CustomStorage)
  16. {
  17. return ResultFs.InvalidArgument.Log();
  18. }
  19. // Force all-zero keys for now since people can open the emulator with different keys or sd seeds sometimes
  20. var fs = new AesXtsFileSystem(baseFileSystem, new byte[0x32], 0x4000);
  21. encryptedFileSystem = new ReferenceCountedDisposable<IFileSystem>(fs);
  22. return Result.Success;
  23. }
  24. }
  25. }