From 5b8ccb717f225234ae97a2ef1673ca42833bd836 Mon Sep 17 00:00:00 2001
From: Ac_K <Acoustik666@gmail.com>
Date: Sun, 7 Oct 2018 00:16:42 +0200
Subject: [PATCH] Implement ISslContext (#440)

This PR implement an empty `ISslContext` and update `CreateContext` and `SetInterfaceVersion` inside `ISslService`
---
 Ryujinx.HLE/HOS/Services/Ssl/ISslContext.cs | 20 ++++++++++++++++++++
 Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs | 17 ++++++++++++++++-
 2 files changed, 36 insertions(+), 1 deletion(-)
 create mode 100644 Ryujinx.HLE/HOS/Services/Ssl/ISslContext.cs

diff --git a/Ryujinx.HLE/HOS/Services/Ssl/ISslContext.cs b/Ryujinx.HLE/HOS/Services/Ssl/ISslContext.cs
new file mode 100644
index 0000000000..8f3a0649b2
--- /dev/null
+++ b/Ryujinx.HLE/HOS/Services/Ssl/ISslContext.cs
@@ -0,0 +1,20 @@
+using Ryujinx.HLE.HOS.Ipc;
+using System.Collections.Generic;
+
+namespace Ryujinx.HLE.HOS.Services.Ssl
+{
+    class ISslContext : IpcService
+    {
+        private Dictionary<int, ServiceProcessRequest> m_Commands;
+
+        public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
+
+        public ISslContext()
+        {
+            m_Commands = new Dictionary<int, ServiceProcessRequest>()
+            {
+                //...
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs b/Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs
index b59527f707..5affc63689 100644
--- a/Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs
+++ b/Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs
@@ -14,15 +14,30 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
         {
             m_Commands = new Dictionary<int, ServiceProcessRequest>()
             {
+                { 0, CreateContext       },
                 { 5, SetInterfaceVersion }
             };
         }
 
+        // CreateContext(nn::ssl::sf::SslVersion, u64, pid) -> object<nn::ssl::sf::ISslContext>
+        public long CreateContext(ServiceCtx Context)
+        {
+            int  SslVersion = Context.RequestData.ReadInt32();
+            long Unknown    = Context.RequestData.ReadInt64();
+
+            Context.Device.Log.PrintStub(LogClass.ServiceSsl, $"Stubbed. SslVersion: {SslVersion} - Unknown: {Unknown}");
+
+            MakeObject(Context, new ISslContext());
+
+            return 0;
+        }
+
+        // SetInterfaceVersion(u32)
         public long SetInterfaceVersion(ServiceCtx Context)
         {
             int Version = Context.RequestData.ReadInt32();
 
-            Context.Device.Log.PrintStub(LogClass.ServiceSsl, "Stubbed.");
+            Context.Device.Log.PrintStub(LogClass.ServiceSsl, $"Stubbed. Version: {Version}");
 
             return 0;
         }