diff --git a/DigitalData.Core.Extensions/DigitalData.Core.Extensions.csproj b/DigitalData.Core.Extensions/DigitalData.Core.Extensions.csproj
new file mode 100644
index 0000000..2ba11d7
--- /dev/null
+++ b/DigitalData.Core.Extensions/DigitalData.Core.Extensions.csproj
@@ -0,0 +1,9 @@
+
+
+
+ net7.0;net8.0
+ enable
+ enable
+
+
+
diff --git a/DigitalData.Core.Security.Extensions/Extensions.cs b/DigitalData.Core.Extensions/StringExtensions.cs
similarity index 83%
rename from DigitalData.Core.Security.Extensions/Extensions.cs
rename to DigitalData.Core.Extensions/StringExtensions.cs
index 88d3714..db60d4d 100644
--- a/DigitalData.Core.Security.Extensions/Extensions.cs
+++ b/DigitalData.Core.Extensions/StringExtensions.cs
@@ -1,6 +1,6 @@
-namespace DigitalData.Core.Security.Extensions
+namespace DigitalData.Core.Extensions
{
- public static class Extensions
+ public static class StringExtensions
{
public static string ToBase64String(this byte[] bytes) => Convert.ToBase64String(bytes);
diff --git a/DigitalData.Core.Security.Extensions/DigitalData.Core.Security.Extensions.csproj b/DigitalData.Core.Security.Extensions/DigitalData.Core.Security.Extensions.csproj
deleted file mode 100644
index b3d5f11..0000000
--- a/DigitalData.Core.Security.Extensions/DigitalData.Core.Security.Extensions.csproj
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- net7.0;net8.0
- enable
- enable
-
-
-
-
-
-
-
diff --git a/DigitalData.Core.Security.Extensions/RSAExtensions.cs b/DigitalData.Core.Security.Extensions/RSAExtensions.cs
deleted file mode 100644
index 47dcef5..0000000
--- a/DigitalData.Core.Security.Extensions/RSAExtensions.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using DigitalData.Core.Abstractions.Security;
-using System.Collections.Concurrent;
-using System.Security.Cryptography;
-
-namespace DigitalData.Core.Security.Extensions
-{
- public static class RSAExtensions
- {
- public static RSA ToRSA(this string pem)
- {
- var rsa = RSA.Create();
- rsa.ImportFromPem(pem);
- return rsa;
- }
-
- private static string CreatePath(string filename, string? directory = null)
- {
- directory ??= Environment.CurrentDirectory;
-
- if (!Directory.Exists(directory))
- {
- Directory.CreateDirectory(directory);
- }
-
- return Path.Combine(directory, $"{filename}.pem");
- }
-
- private static readonly ConcurrentDictionary FileLocks = new();
-
- public static void SavePem(this IRSACryptographer decryptor, string key, string? directory = null)
- {
- var filePath = CreatePath(filename: key, directory : directory);
- var fileLock = FileLocks.GetOrAdd(filePath, _ => new (1, 1));
- fileLock.Wait();
- try
- {
- File.WriteAllText(filePath, decryptor.Pem);
- }
- finally
- {
- fileLock.Release();
- }
- }
-
- public static async Task SavePemAsync(this IRSACryptographer decryptor, string key, string? directory = null)
- {
- var filePath = CreatePath(filename: key, directory: directory);
- var fileLock = FileLocks.GetOrAdd(filePath, _ => new (1, 1));
- await fileLock.WaitAsync();
- try
- {
- await File.WriteAllTextAsync(filePath, decryptor.Pem);
- }
- finally
- {
- fileLock.Release();
- }
- }
- }
-}
\ No newline at end of file
diff --git a/DigitalData.Core.Security/Cryptographer/RSADecryptor.cs b/DigitalData.Core.Security/Cryptographer/RSADecryptor.cs
index 6039926..0eede5d 100644
--- a/DigitalData.Core.Security/Cryptographer/RSADecryptor.cs
+++ b/DigitalData.Core.Security/Cryptographer/RSADecryptor.cs
@@ -1,5 +1,5 @@
using DigitalData.Core.Abstractions.Security;
-using DigitalData.Core.Security.Extensions;
+using DigitalData.Core.Extensions;
using System.Security.Cryptography;
namespace DigitalData.Core.Security.Cryptographer
diff --git a/DigitalData.Core.Security/Cryptographer/RSAEncryptor.cs b/DigitalData.Core.Security/Cryptographer/RSAEncryptor.cs
index 3a40325..02e79c3 100644
--- a/DigitalData.Core.Security/Cryptographer/RSAEncryptor.cs
+++ b/DigitalData.Core.Security/Cryptographer/RSAEncryptor.cs
@@ -1,5 +1,5 @@
using DigitalData.Core.Abstractions.Security;
-using DigitalData.Core.Security.Extensions;
+using DigitalData.Core.Extensions;
namespace DigitalData.Core.Security.Cryptographer
{
diff --git a/DigitalData.Core.Security/DigitalData.Core.Security.csproj b/DigitalData.Core.Security/DigitalData.Core.Security.csproj
index c198a40..272db27 100644
--- a/DigitalData.Core.Security/DigitalData.Core.Security.csproj
+++ b/DigitalData.Core.Security/DigitalData.Core.Security.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/DigitalData.Core.sln b/DigitalData.Core.sln
index 9191c29..f7492d3 100644
--- a/DigitalData.Core.sln
+++ b/DigitalData.Core.sln
@@ -23,9 +23,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.Core.Legacy.Cli
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.Security", "DigitalData.Core.Security\DigitalData.Core.Security.csproj", "{47D80C65-74A2-4EB8-96A5-D571A9108FB3}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.Security.Extensions", "DigitalData.Core.Security.Extensions\DigitalData.Core.Security.Extensions.csproj", "{D740182D-82DA-480A-9F87-BFB4A8620A00}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.Terminal", "DigitalData.Core.Terminal\DigitalData.Core.Terminal.csproj", "{0FA93730-8084-4907-B172-87D610323796}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.Core.Terminal", "DigitalData.Core.Terminal\DigitalData.Core.Terminal.csproj", "{0FA93730-8084-4907-B172-87D610323796}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.Core.Extensions", "DigitalData.Core.Extensions\DigitalData.Core.Extensions.csproj", "{FC6AD1C4-5D7C-4B50-9330-B7A0E52B24B8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -72,14 +72,14 @@ Global
{47D80C65-74A2-4EB8-96A5-D571A9108FB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{47D80C65-74A2-4EB8-96A5-D571A9108FB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47D80C65-74A2-4EB8-96A5-D571A9108FB3}.Release|Any CPU.Build.0 = Release|Any CPU
- {D740182D-82DA-480A-9F87-BFB4A8620A00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D740182D-82DA-480A-9F87-BFB4A8620A00}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D740182D-82DA-480A-9F87-BFB4A8620A00}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D740182D-82DA-480A-9F87-BFB4A8620A00}.Release|Any CPU.Build.0 = Release|Any CPU
{0FA93730-8084-4907-B172-87D610323796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0FA93730-8084-4907-B172-87D610323796}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0FA93730-8084-4907-B172-87D610323796}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0FA93730-8084-4907-B172-87D610323796}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FC6AD1C4-5D7C-4B50-9330-B7A0E52B24B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FC6AD1C4-5D7C-4B50-9330-B7A0E52B24B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FC6AD1C4-5D7C-4B50-9330-B7A0E52B24B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FC6AD1C4-5D7C-4B50-9330-B7A0E52B24B8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE