diff --git a/mRemoteNGTests/Config/Serializers/CredentialProviderSerializerTests.cs b/mRemoteNGTests/Config/Serializers/CredentialProviderSerializerTests.cs index a0f7c62c5..c6d2554ad 100644 --- a/mRemoteNGTests/Config/Serializers/CredentialProviderSerializerTests.cs +++ b/mRemoteNGTests/Config/Serializers/CredentialProviderSerializerTests.cs @@ -17,11 +17,11 @@ namespace mRemoteNGTests.Config.Serializers _credentialProviderSerializer = new CredentialProviderSerializer(); } - private ICredentialProvider InitializeMockProvider() + private ICredentialRepository InitializeMockProvider() { - var provider = Substitute.For(); - provider.Name.Returns("ProviderName"); - provider.Id.Returns(Guid.NewGuid()); + var provider = Substitute.For(); + provider.Config.Name.Returns("ProviderName"); + provider.Config.Id.Returns(Guid.NewGuid()); return provider; } diff --git a/mRemoteNGTests/Credential/CredentialListBaseTests.cs b/mRemoteNGTests/Credential/CredentialListBaseTests.cs index db1f9428c..1ea12af00 100644 --- a/mRemoteNGTests/Credential/CredentialListBaseTests.cs +++ b/mRemoteNGTests/Credential/CredentialListBaseTests.cs @@ -10,12 +10,12 @@ namespace mRemoteNGTests.Credential public class CredentialListBaseTests { private CredentialListBase _credentialList; - private ICredentialProvider _mockCredentialProvider; + private ICredentialRepository _mockCredentialProvider; [SetUp] public void Setup() { - _mockCredentialProvider = Substitute.For(); + _mockCredentialProvider = Substitute.For(); _credentialList = new CredentialListBase(_mockCredentialProvider); } diff --git a/mRemoteNGTests/Credential/CredentialProviderCatalogTests.cs b/mRemoteNGTests/Credential/CredentialProviderCatalogTests.cs index 6d8435536..6cdc6aef0 100644 --- a/mRemoteNGTests/Credential/CredentialProviderCatalogTests.cs +++ b/mRemoteNGTests/Credential/CredentialProviderCatalogTests.cs @@ -24,7 +24,7 @@ namespace mRemoteNGTests.Credential [Test] public void ProviderIsInListAfterBeingAdded() { - var provider = Substitute.For(); + var provider = Substitute.For(); _credentialCatalog.AddProvider(provider); Assert.That(_credentialCatalog.CredentialProviders, Does.Contain(provider)); } @@ -32,8 +32,8 @@ namespace mRemoteNGTests.Credential [Test] public void ProviderNotInListAfterBeingRemoved() { - var provider1 = Substitute.For(); - var provider2 = Substitute.For(); + var provider1 = Substitute.For(); + var provider2 = Substitute.For(); _credentialCatalog.AddProvider(provider1); _credentialCatalog.AddProvider(provider2); _credentialCatalog.RemoveProvider(provider1); @@ -43,7 +43,7 @@ namespace mRemoteNGTests.Credential [Test] public void RemoveProviderThatIsntInTheList() { - _credentialCatalog.RemoveProvider(Substitute.For()); + _credentialCatalog.RemoveProvider(Substitute.For()); Assert.That(_credentialCatalog.CredentialProviders, Is.Empty); } } diff --git a/mRemoteNGTests/Credential/CredentialRecordCatalogTests.cs b/mRemoteNGTests/Credential/CredentialRecordCatalogTests.cs index 4d6e22bff..4370d63aa 100644 --- a/mRemoteNGTests/Credential/CredentialRecordCatalogTests.cs +++ b/mRemoteNGTests/Credential/CredentialRecordCatalogTests.cs @@ -19,7 +19,7 @@ namespace mRemoteNGTests.Credential public void CanAddCredentialList() { var credential = Substitute.For(); - var credList = new CredentialListBase(Substitute.For()) {credential}; + var credList = new CredentialListBase(Substitute.For()) {credential}; _credentialRecordCatalog.AddCredentialList(credList); Assert.That(_credentialRecordCatalog.CredentialRecords, Does.Contain(credential)); } @@ -28,9 +28,9 @@ namespace mRemoteNGTests.Credential public void CanRemoveCredentialList() { var credential1 = Substitute.For(); - var credList1 = new CredentialListBase(Substitute.For()) { credential1 }; + var credList1 = new CredentialListBase(Substitute.For()) { credential1 }; var credential2 = Substitute.For(); - var credList2 = new CredentialListBase(Substitute.For()) { credential2 }; + var credList2 = new CredentialListBase(Substitute.For()) { credential2 }; _credentialRecordCatalog.AddCredentialList(credList1); _credentialRecordCatalog.AddCredentialList(credList2); _credentialRecordCatalog.RemoveCredentialList(credList1); @@ -40,7 +40,7 @@ namespace mRemoteNGTests.Credential [Test] public void RemovingACredentialListThatIsntAddedDoesNothing() { - var credList1 = new CredentialListBase(Substitute.For()); + var credList1 = new CredentialListBase(Substitute.For()); _credentialRecordCatalog.RemoveCredentialList(credList1); Assert.That(_credentialRecordCatalog.CredentialRecords, Is.Empty); } diff --git a/mRemoteV1/Config/Serializers/CredentialProviderSerializer/CredentialProviderSerializer.cs b/mRemoteV1/Config/Serializers/CredentialProviderSerializer/CredentialProviderSerializer.cs index b84663f64..47e78efa0 100644 --- a/mRemoteV1/Config/Serializers/CredentialProviderSerializer/CredentialProviderSerializer.cs +++ b/mRemoteV1/Config/Serializers/CredentialProviderSerializer/CredentialProviderSerializer.cs @@ -8,7 +8,7 @@ namespace mRemoteNG.Config.Serializers.CredentialProviderSerializer { public class CredentialProviderSerializer { - public string Serialize(IEnumerable credentialProviderCatalog) + public string Serialize(IEnumerable credentialProviderCatalog) { var xmlDocument = new XDocument(new XDeclaration("1.0", "utf-8", "")); var rootElement = new XElement(XName.Get("CredentialProviders")); @@ -22,11 +22,11 @@ namespace mRemoteNG.Config.Serializers.CredentialProviderSerializer return string.Concat(declaration, Environment.NewLine, documentBody); } - private XElement SerializeCredentialProvider(ICredentialProvider provider) + private XElement SerializeCredentialProvider(ICredentialRepository provider) { var element = new XElement(XName.Get("Provider")); - element.Add(new XAttribute(XName.Get("Id"), provider.Id)); - element.Add(new XAttribute(XName.Get("Name"), provider.Name)); + element.Add(new XAttribute(XName.Get("Id"), provider.Config.Id)); + element.Add(new XAttribute(XName.Get("Name"), provider.Config.Name)); return element; } } diff --git a/mRemoteV1/Credential/CredentialListBase.cs b/mRemoteV1/Credential/CredentialListBase.cs index e746e08a9..6324f941a 100644 --- a/mRemoteV1/Credential/CredentialListBase.cs +++ b/mRemoteV1/Credential/CredentialListBase.cs @@ -7,9 +7,9 @@ namespace mRemoteNG.Credential { public class CredentialListBase : List, ICredentialList { - public ICredentialProvider CredentialProvider { get; } + public ICredentialRepository CredentialProvider { get; } - public CredentialListBase(ICredentialProvider credentialProvider) + public CredentialListBase(ICredentialRepository credentialProvider) { CredentialProvider = credentialProvider; } diff --git a/mRemoteV1/Credential/CredentialProviderCatalog.cs b/mRemoteV1/Credential/CredentialProviderCatalog.cs index 2160b1fe7..1867b1940 100644 --- a/mRemoteV1/Credential/CredentialProviderCatalog.cs +++ b/mRemoteV1/Credential/CredentialProviderCatalog.cs @@ -6,22 +6,22 @@ namespace mRemoteNG.Credential { public class CredentialProviderCatalog : ICredentialProviderCatalog { - private readonly List _credentialProviders = new List(); + private readonly List _credentialProviders = new List(); - public IEnumerable CredentialProviders => _credentialProviders; + public IEnumerable CredentialProviders => _credentialProviders; - public void AddProvider(ICredentialProvider credentialProvider) + public void AddProvider(ICredentialRepository credentialProvider) { _credentialProviders.Add(credentialProvider); } - public void RemoveProvider(ICredentialProvider credentialProvider) + public void RemoveProvider(ICredentialRepository credentialProvider) { _credentialProviders.Remove(credentialProvider); } - public IEnumerator GetEnumerator() + public IEnumerator GetEnumerator() { return _credentialProviders.GetEnumerator(); } diff --git a/mRemoteV1/Credential/ICredentialList.cs b/mRemoteV1/Credential/ICredentialList.cs index 31946816f..b398ad178 100644 --- a/mRemoteV1/Credential/ICredentialList.cs +++ b/mRemoteV1/Credential/ICredentialList.cs @@ -6,7 +6,7 @@ namespace mRemoteNG.Credential { public interface ICredentialList : IList { - ICredentialProvider CredentialProvider { get; } + ICredentialRepository CredentialProvider { get; } ICredentialRecord GetCredential(Guid uniqueId); diff --git a/mRemoteV1/Credential/ICredentialProvider.cs b/mRemoteV1/Credential/ICredentialProvider.cs deleted file mode 100644 index f2558194b..000000000 --- a/mRemoteV1/Credential/ICredentialProvider.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - - -namespace mRemoteNG.Credential -{ - public interface ICredentialProvider - { - Guid Id { get; } - - string Name { get; } - - ICredentialList LoadCredentials(); - } -} \ No newline at end of file diff --git a/mRemoteV1/Credential/ICredentialProviderCatalog.cs b/mRemoteV1/Credential/ICredentialProviderCatalog.cs index a8a9a36ea..c1942b3d1 100644 --- a/mRemoteV1/Credential/ICredentialProviderCatalog.cs +++ b/mRemoteV1/Credential/ICredentialProviderCatalog.cs @@ -2,12 +2,12 @@ namespace mRemoteNG.Credential { - public interface ICredentialProviderCatalog : IEnumerable + public interface ICredentialProviderCatalog : IEnumerable { - IEnumerable CredentialProviders { get; } + IEnumerable CredentialProviders { get; } - void AddProvider(ICredentialProvider credentialProvider); + void AddProvider(ICredentialRepository credentialProvider); - void RemoveProvider(ICredentialProvider credentialProvider); + void RemoveProvider(ICredentialRepository credentialProvider); } } \ No newline at end of file diff --git a/mRemoteV1/Credential/ICredentialRepository.cs b/mRemoteV1/Credential/ICredentialRepository.cs new file mode 100644 index 000000000..7ee8e960b --- /dev/null +++ b/mRemoteV1/Credential/ICredentialRepository.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using System.Security; +using mRemoteNG.Credential.Repositories; + + +namespace mRemoteNG.Credential +{ + public interface ICredentialRepository + { + ICredentialRepositoryConfig Config { get; } + IEnumerable LoadCredentials(SecureString key); + } +} \ No newline at end of file diff --git a/mRemoteV1/Credential/Repositories/ICredentialRepositoryConfig.cs b/mRemoteV1/Credential/Repositories/ICredentialRepositoryConfig.cs new file mode 100644 index 000000000..ba696a1cc --- /dev/null +++ b/mRemoteV1/Credential/Repositories/ICredentialRepositoryConfig.cs @@ -0,0 +1,13 @@ +using System; +using System.Security; + +namespace mRemoteNG.Credential.Repositories +{ + public interface ICredentialRepositoryConfig + { + Guid Id { get; } + string Name { get; } + string Source { get; set; } + SecureString Key { get; set; } + } +} \ No newline at end of file diff --git a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectionPage.cs b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectionPage.cs index 99bf74b0f..9d3636871 100644 --- a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectionPage.cs +++ b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectionPage.cs @@ -11,13 +11,13 @@ namespace mRemoteNG.UI.Forms.CredentialManagerPages public string PageName { get; } = "add repo"; public Image PageIcon { get; } - public CredentialRepositorySelectionPage(IEnumerable> selectionTargets) + public CredentialRepositorySelectionPage(IEnumerable> selectionTargets) { InitializeComponent(); SetupListView(selectionTargets); } - private void SetupListView(IEnumerable> selectionTargets) + private void SetupListView(IEnumerable> selectionTargets) { olvColumnName.ImageGetter = ImageGetter; objectListView.SetObjects(selectionTargets); @@ -25,7 +25,7 @@ namespace mRemoteNG.UI.Forms.CredentialManagerPages private object ImageGetter(object rowObject) { - var selection = rowObject as ISelectionTarget; + var selection = rowObject as ISelectionTarget; if (selection == null) return ""; var imgHash = selection.Image.GetHashCode().ToString(); if (!objectListView.LargeImageList.Images.ContainsKey(imgHash)) diff --git a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectors/KeePassRepositorySelector.cs b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectors/KeePassRepositorySelector.cs index 04bd47a19..185d4c0d5 100644 --- a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectors/KeePassRepositorySelector.cs +++ b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectors/KeePassRepositorySelector.cs @@ -4,10 +4,10 @@ using mRemoteNG.UI.Controls; namespace mRemoteNG.UI.Forms.CredentialManagerPages.CredentialRepositorySelectors { - public class KeePassRepositorySelector : ISelectionTarget + public class KeePassRepositorySelector : ISelectionTarget { public string Text { get; set; } = "KeePass"; public Image Image { get; } = Resources.keepass_32x32; - public IFactory Factory { get; } + public IFactory Factory { get; } } } \ No newline at end of file diff --git a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectors/XmlCredentialRepositorySelector.cs b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectors/XmlCredentialRepositorySelector.cs index f043cc4a6..eca8489ec 100644 --- a/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectors/XmlCredentialRepositorySelector.cs +++ b/mRemoteV1/UI/Forms/CredentialManagerPages/CredentialRepositorySelectors/XmlCredentialRepositorySelector.cs @@ -4,10 +4,10 @@ using mRemoteNG.UI.Controls; namespace mRemoteNG.UI.Forms.CredentialManagerPages.CredentialRepositorySelectors { - public class XmlCredentialRepositorySelector : ISelectionTarget + public class XmlCredentialRepositorySelector : ISelectionTarget { public string Text { get; set; } = "XML"; public Image Image { get; } = Resources.xml; - public IFactory Factory { get; } + public IFactory Factory { get; } } } \ No newline at end of file diff --git a/mRemoteV1/UI/Menu/ToolsMenu.cs b/mRemoteV1/UI/Menu/ToolsMenu.cs index 5fe58bd14..32f389f9f 100644 --- a/mRemoteV1/UI/Menu/ToolsMenu.cs +++ b/mRemoteV1/UI/Menu/ToolsMenu.cs @@ -129,7 +129,7 @@ namespace mRemoteNG.UI.Menu DeletionConfirmer = new CredentialDeletionMsgBoxConfirmer(MessageBox.Show) }, new CredentialSourcesPage(new CredentialProviderCatalog()), - new CredentialRepositorySelectionPage(new ISelectionTarget[] + new CredentialRepositorySelectionPage(new ISelectionTarget[] { new XmlCredentialRepositorySelector(), new KeePassRepositorySelector() diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 37c0e5eae..2844f07ef 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -106,7 +106,6 @@ - @@ -215,12 +214,14 @@ + - + +