diff --git a/mRemoteV1/Credential/ICredentialRecord.cs b/mRemoteV1/Credential/ICredentialRecord.cs index fa62b6011..ec0a3c1be 100644 --- a/mRemoteV1/Credential/ICredentialRecord.cs +++ b/mRemoteV1/Credential/ICredentialRecord.cs @@ -2,16 +2,37 @@ using System.ComponentModel; using System.Security; - namespace mRemoteNG.Credential { + /// + /// Represents a named set of username/domain/password information. + /// [TypeConverter(typeof(CredentialRecordTypeConverter))] public interface ICredentialRecord : INotifyPropertyChanged { + /// + /// An Id which uniquely identifies this credential record. + /// Guid Id { get; } + + /// + /// A friendly name for this credential record. + /// string Title { get; set; } + + /// + /// The username portion of the credential. + /// string Username { get; set; } - SecureString Password { get; set; } + + /// + /// The domain portion of the credential. + /// string Domain { get; set; } + + /// + /// The password + /// + SecureString Password { get; set; } } } \ No newline at end of file diff --git a/mRemoteV1/Credential/ICredentialRepository.cs b/mRemoteV1/Credential/ICredentialRepository.cs index 84ea87f1c..b900efd6e 100644 --- a/mRemoteV1/Credential/ICredentialRepository.cs +++ b/mRemoteV1/Credential/ICredentialRepository.cs @@ -9,14 +9,52 @@ namespace mRemoteNG.Credential { public interface ICredentialRepository { + /// + /// The configuration information for this credential repository. + /// ICredentialRepositoryConfig Config { get; } + + /// + /// A list of the s provided by this repository. + /// IList CredentialRecords { get; } + + /// + /// A friendly name for this repository. + /// string Title { get; } + + /// + /// Whether or not this repository has been unlocked and is able to provide + /// credentials. + /// bool IsLoaded { get; } + + /// + /// Unlock the repository with the given key and load all available credentials. + /// + /// void LoadCredentials(SecureString key); + + /// + /// Save all credentials provided by this repository. + /// + /// void SaveCredentials(SecureString key); + + /// + /// Lock and unload all credentials provided by this repository. + /// void UnloadCredentials(); + + /// + /// This event is raised when any changes are made to the assigned . + /// event EventHandler RepositoryConfigUpdated; + + /// + /// This event is raised when a credential is added or removed from this repository. + /// event EventHandler> CredentialsUpdated; } } \ No newline at end of file diff --git a/mRemoteV1/Credential/Repositories/ICredentialRepositoryConfig.cs b/mRemoteV1/Credential/Repositories/ICredentialRepositoryConfig.cs index f29ef3940..f6d14044d 100644 --- a/mRemoteV1/Credential/Repositories/ICredentialRepositoryConfig.cs +++ b/mRemoteV1/Credential/Repositories/ICredentialRepositoryConfig.cs @@ -6,10 +6,33 @@ namespace mRemoteNG.Credential.Repositories { public interface ICredentialRepositoryConfig : INotifyPropertyChanged { + /// + /// An Id which uniquely identifies this credential repository. + /// Guid Id { get; } + + /// + /// A friendly name for this credential repository + /// string Title { get; set; } + + /// + /// A name which uniquely identifies the type of credential repository this + /// config represents. This is used for determining which + /// to use to create the . + /// string TypeName { get; } + + /// + /// A string representing how to access the persisted credential records. + /// This may be a file path, URL, database connection string, etc. depending + /// on the implementation of the . + /// string Source { get; set; } + + /// + /// The password necessary to unlock and access the underlying repository. + /// SecureString Key { get; set; } } } \ No newline at end of file