From ba4830293e4786851d743865b1232928f9873c7e Mon Sep 17 00:00:00 2001 From: mageven <62494521+mageven@users.noreply.github.com> Date: Fri, 15 May 2020 11:46:46 +0530 Subject: Refactor out Application details from Horizon (#1236) * Initial Application refactor * Misc typo and access modifier fixes * Clean unused namespaces * Address gdkchan's comments * Move ticket reading to common method * Change IParentalControlService to use ApplicationLoader.ControlData --- Ryujinx.HLE/FileSystem/Content/ContentManager.cs | 6 +++--- Ryujinx.HLE/FileSystem/VirtualFileSystem.cs | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'Ryujinx.HLE/FileSystem') diff --git a/Ryujinx.HLE/FileSystem/Content/ContentManager.cs b/Ryujinx.HLE/FileSystem/Content/ContentManager.cs index aae58153..22d97f3b 100644 --- a/Ryujinx.HLE/FileSystem/Content/ContentManager.cs +++ b/Ryujinx.HLE/FileSystem/Content/ContentManager.cs @@ -580,7 +580,7 @@ namespace Ryujinx.HLE.FileSystem.Content SystemVersion VerifyAndGetVersionZip(ZipArchive archive) { - IntegrityCheckLevel integrityCheckLevel = Switch.GetIntigrityCheckLevel(); + IntegrityCheckLevel integrityCheckLevel = Switch.GetIntegrityCheckLevel(); SystemVersion systemVersion = null; @@ -743,7 +743,7 @@ namespace Ryujinx.HLE.FileSystem.Content SystemVersion VerifyAndGetVersion(IFileSystem filesystem) { - IntegrityCheckLevel integrityCheckLevel = Switch.GetIntigrityCheckLevel(); + IntegrityCheckLevel integrityCheckLevel = Switch.GetIntegrityCheckLevel(); SystemVersion systemVersion = null; @@ -874,7 +874,7 @@ namespace Ryujinx.HLE.FileSystem.Content public SystemVersion GetCurrentFirmwareVersion() { - IntegrityCheckLevel integrityCheckLevel = Switch.GetIntigrityCheckLevel(); + IntegrityCheckLevel integrityCheckLevel = Switch.GetIntegrityCheckLevel(); LoadEntries(); diff --git a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs index d4ffc5d3..347b4fa4 100644 --- a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs +++ b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs @@ -1,7 +1,9 @@ using LibHac; +using LibHac.Common; using LibHac.Fs; using LibHac.FsService; using LibHac.FsSystem; +using LibHac.Spl; using Ryujinx.HLE.FileSystem.Content; using Ryujinx.HLE.HOS; using System; @@ -261,6 +263,21 @@ namespace Ryujinx.HLE.FileSystem KeySet = ExternalKeyReader.ReadKeyFile(keyFile, titleKeyFile, consoleKeyFile); } + public void ImportTickets(IFileSystem fs) + { + foreach (DirectoryEntryEx ticketEntry in fs.EnumerateEntries("/", "*.tik")) + { + Result result = fs.OpenFile(out IFile ticketFile, ticketEntry.FullPath.ToU8Span(), OpenMode.Read); + + if (result.IsSuccess()) + { + Ticket ticket = new Ticket(ticketFile.AsStream()); + + KeySet.ExternalKeySet.Add(new RightsId(ticket.RightsId), new AccessKey(ticket.GetTitleKey(KeySet))); + } + } + } + public void Unload() { RomFs?.Dispose(); @@ -283,7 +300,7 @@ namespace Ryujinx.HLE.FileSystem { if (_isInitialized) { - throw new InvalidOperationException($"VirtualFileSystem can only be instanciated once!"); + throw new InvalidOperationException($"VirtualFileSystem can only be instantiated once!"); } _isInitialized = true; -- cgit v1.2.3