<?xml version="1.0"?>
<doc>
    <assembly>
        <name>VaultConnector</name>
    </assembly>
    <members>
        <member name="T:VaultConnector.BackupLoader">
            <summary>
            Handles loading and decrypting Vault backup files for fallback scenarios.
            </summary>
        </member>
        <member name="M:VaultConnector.BackupLoader.TryLoadBackup(System.Collections.Concurrent.ConcurrentDictionary{System.String,System.Collections.Generic.Dictionary{System.String,System.Object}})">
            <summary>
            Attempts to load secrets from an encrypted backup file.
            </summary>
            <param name="cache">The cache dictionary to populate with loaded secrets</param>
            <returns><see langword="true"/> if backup was successfully loaded, otherwise <see langword="false"/>.</returns>
        </member>
        <member name="T:VaultConnector.CertificateHelper">
            <summary>
            Helper class for retrieving X509 certificates in different environments (Windows and Linux).
            </summary>
        </member>
        <member name="M:VaultConnector.CertificateHelper.GetCertificateLinux">
            <summary>
            Returns a <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/> in a Linux environment.
            </summary>
            <returns>
            Returns a <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/>
            </returns>
        </member>
        <member name="M:VaultConnector.CertificateHelper.GetCertificateWindows">
            <summary>
            Returns a <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/> in a Windows environment.
            </summary>
            <returns>
            Returns a <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/>
            </returns>
            <exception cref="T:System.Data.DataException"></exception>
        </member>
        <member name="T:VaultConnector.Connctions.AzureKeyVaultConnection">
            <summary>
            Represents a connection to an Azure Key Vault, providing methods to retrieve secrets.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.AzureKeyVaultConnection._authenticationTenantId">
            <summary>
            The client ID used for authentication with Azure Key Vault.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.AzureKeyVaultConnection._authenticationClientId">
            <summary>
            The client ID used for authentication with Azure Key Vault.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.AzureKeyVaultConnection._authenticationClientSecretEnvironmentVariableName">
            <summary>
            The name of the environment variable that holds the client secret for authentication with Azure Key Vault.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.AzureKeyVaultConnection._secretClient">
            <summary>
            The SecretClient instance used to interact with Azure Key Vault.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.AzureKeyVaultConnection._hasInitialized">
            <summary>
            Indicates whether the library has been initialized, preventing multiple initializations.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.AzureKeyVaultConnection._cache">
            <summary>
            The MemoryCache instance used for caching secrets retrieved from Azure Key Vault.
            </summary>
        </member>
        <member name="P:VaultConnector.Connctions.AzureKeyVaultConnection._expiresAt">
            <summary>
            Gets the expiration time for cached secrets, set to 5 minutes from the current time.
            </summary>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.Initialize(VaultConnector.Models.VaultEnvironment,VaultConnector.Models.VaultAuthMethod)">
             <summary>
             Initializes the Azure Key Vault connection with the specified environment and authentication method.
             </summary>
             <param name="vaultEnvironment">The Azure Key Vault environment to connect to.</param>
             <param name="vaultAuthMethod">The authentication method to be used when connecting to the Azure Key Vault environment.</param>
             <returns>The initialized AzureKeyVaultConnection instance.</returns>
             <exception cref="T:System.NotImplementedException">
            
             </exception>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.VerifyAzureKeyVaultEnvironment(VaultConnector.Models.VaultEnvironment)">
            <summary>
            Checks the status of the preferred Azure Key Vault server and returns an available server address.
            </summary>
            <param name="vaultEnvironment">Preferred environment.</param>
            <returns>URL of available node.</returns>
            <exception cref="T:System.InvalidOperationException"
            >Thrown if no Azure Key Vault server is available in the specified environment.
            </exception>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.AzureKeyVaultNodeCheck(System.String)">
            <summary>
            Health check for Azure Key Vault servers.
            </summary>
            <param name="address">
            The address of the Azure Key Vault server to check.
            </param>
            <returns>
            <see langword="true"/> if the server is reachable, otherwise <see langword="false"/>.
            </returns>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.ConfigureMemoryCache">
            <summary>
            Configures and returns a MemoryCache instance with a specified size limit.
            </summary>
            <returns>
            A <see cref="T:Microsoft.Extensions.Caching.Memory.MemoryCache"/> instance configured with a size limit of 100 MB.
            </returns>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.GetSecretValue(System.String)">
            <summary>
            Gets the value of a secret from Azure Key Vault by its name.
            </summary>
            <param name="secretName">The name of the secret to retrieve.</param>
            <returns>The value of the secret.</returns>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.GetSecret(System.String)">
            <summary>
            Gets the KeyVaultSecret object from Azure Key Vault by its name.
            </summary>
            <param name="secretName">The name of the secret to retrieve.</param>
            <returns>The <see cref="T:Azure.Security.KeyVault.Secrets.KeyVaultSecret"/> object.</returns>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.GenerateSecretClient(System.String,System.String,System.String)">
            <summary>
            Generates a SecretClient using the provided tenant ID, client ID, and client secret for authentication.
            </summary>
            <param name="tenantId">The tenant ID for Azure authentication.</param>
            <param name="clientId">The client ID for Azure authentication.</param>
            <param name="clientSecret">The client secret for Azure authentication.</param>
            <returns>
            A <see cref="T:Azure.Security.KeyVault.Secrets.SecretClient"/> instance authenticated with the provided credentials.
            </returns>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.GenerateSecretClientOptions">
            <summary>
            Generates SecretClientOptions with predefined retry settings for Azure Key Vault operations.
            </summary>
            <remarks>
            This method configures the retry policy for Azure Key Vault operations, including delay, maximum delay, maximum retries, and retry mode.<br/>
            It has exponential backoff settings to handle transient failures when communicating with Azure Key Vault.
            </remarks>
            <returns>A <see cref="T:Azure.Security.KeyVault.Secrets.SecretClientOptions"/> instance with predefined retry settings.</returns>
        </member>
        <member name="M:VaultConnector.Connctions.AzureKeyVaultConnection.VerifyInitalization">
            <summary>
            Verifies that the AzureKeyVaultConnection has been initialized.
            </summary>
            <returns>
            <see langword="true"/> if the connection has been initialized, otherwise throws an <see cref="T:System.InvalidOperationException"/>.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the AzureKeyVaultConnection has not been initialized.
            </exception>
        </member>
        <member name="F:VaultConnector.Connctions.HashiCorpVaultConnection._lastTokenFetch">
            <summary>
            The timestamp of the last successful Vault token fetch, used to determine when to refresh the token.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.HashiCorpVaultConnection._vaultClient">
            <summary>
            The VaultClient instance used to connect to the Vault environment.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.HashiCorpVaultConnection._cache">
            <summary>
            A thread-safe cache of secrets retrieved from Vault, keyed by their secret path.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.HashiCorpVaultConnection._hasInitialized">
            <summary>
            Indicates whether the library has been initialized, preventing multiple initializations.
            </summary>
        </member>
        <member name="F:VaultConnector.Connctions.HashiCorpVaultConnection._isInEmergencyBackupMode">
            <summary>
            Indicates whether the library is currently operating in emergency backup mode.
            </summary>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.Initialize(VaultConnector.Models.VaultEnvironment,VaultConnector.Models.VaultAuthMethod,System.String,System.String)">
            <summary>
            Initializes the library to be able to connect to a given HashiCorp Vault environment.
            </summary>
            <param name="vaultEnvironment">The Vault environment to connect to.</param>
            <param name="vaultAuthMethod">The authentication method to be used when connecting to the Vault environment.</param>
            <param name="username">The username to be used when connecting to the Vault environment, only needed for UserPass authentication.</param>
            <param name="password">The password to be used when connecting to the Vault environment, only needed for UserPass authentication.</param>
            <exception cref="T:System.Data.DataException">
            Thrown if the library fails to initialize the Vault connection and no backup is available.
            </exception>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.VerifyHashiCorpVaultEnvironment(VaultConnector.Models.VaultEnvironment)">
            <summary>
            Checks the status of the preferred HashiCorp Vault server and returns an available server address.
            </summary>
            <param name="vaultEnvironment">Preferred environment.</param>
            <returns>URL of available node.</returns>
            <exception cref="T:System.InvalidOperationException">
            Thrown if no HashiCorp Vault server is available in the specified environment.
            </exception>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.HashiCorpVaultNodeCheck(System.String)">
            <summary>
            Health check for vault servers.
            </summary>
            <param name="addr">
            The address of the HashiCorp Vault server to check.
            </param>
            <returns>
            <see langword="true"/> if the server is reachable, otherwise <see langword="false"/>.
            </returns>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.GenerateHashiCorpVaultClient(System.String,VaultConnector.Models.VaultAuthMethod,System.String,System.String)">
            <summary>
            Generates a VaultClient to connect to a given Vault environment.
            </summary>
            <param name="vaultAddress">
            The HTTPS address of the Vault environment.
            </param>
            <param name="vaultAuthMethod">
            The authentication method to be used when connecting to the Vault environment.
            </param>
            <param name="pass">
            The password to be used when connecting to the Vault environment, only needed for UserPass authentication.
            </param>
            <param name="user">
            The username to be used when connecting to the Vault environment, only needed for UserPass authentication.
            </param>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.GetValueKV(System.String,System.String)">
            <summary>
            Gets the KV Secrets from the given path.
            </summary>
            <param name="path">
            The path of the KV Secrets to get.
            </param>
            <param name="mountPoint">
            The engine to mount. Default is "kv" which is the default for a KV engine, only overwrite if another KV engine contains the KV Secrets path.
            </param>
            <returns>
            Returns a <see cref="T:System.Threading.Tasks.Task"/> containing <see cref="T:System.Collections.Generic.Dictionary`2"/> in its Result.
            </returns>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.RefreshValueKV(System.String,System.String)">
            <summary>
            Gets the latest KV v1 secret values from Vault and replaces the locally cached value.
            </summary>
            <param name="path">The path of the KV secret to retrieve.</param>
            <param name="mountPoint">The KV v1 engine mount point. Defaults to <c>kv</c>.</param>
            <returns>The latest values stored at the requested secret path.</returns>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.EnsureReady">
            <summary>
            Ensures that the library has been initialized and that the Vault token is still valid.
            </summary>
            <remarks>
            If running in emergency backup mode, it will not check for Vault token validity, as there is no Vault connection available.
            </remarks>
            <exception cref="T:System.Data.DataException">
            Thrown if the library has not been initialized or if the Vault token has expired and cannot be refreshed.
            </exception>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.SetValueKV(System.String,System.Collections.Generic.IDictionary{System.String,System.Object},System.String)">
            <summary>
            Creates or replaces a KV v1 secret and refreshes the locally cached value.
            </summary>
            <param name="path">The path where the KV secret is stored.</param>
            <param name="values">The secret fields to write.</param>
            <param name="mountPoint">The KV v1 engine mount point. Defaults to <c>kv</c>.</param>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.GetValueKVV2(System.String,System.Nullable{System.Int32},System.String)">
            <summary>
            <para>Gets the KV Secrets from the given path.</para>
            <para>This is for V2 KV engines, cannot be used with V1 KV engines.</para>
            </summary>
            <param name="path">
            The path of the KV Secrets to get.
            </param>
            <param name="version">
            The version of the KV Secret to get. Default is null, which pulls the latest version, only overwrite if a specific version is desired.
            </param>
            <param name="mountPoint">
            The engine to mount. Default is "kv" which is the default for a KV engine, only overwrite if another KV engine contains the KV Secrets path.
            </param>
            <returns>
            Returns a <see cref="T:System.Threading.Tasks.Task"/> containing <see cref="T:System.Collections.Generic.Dictionary`2"/> in its Result.
            </returns>
        </member>
        <member name="M:VaultConnector.Connctions.HashiCorpVaultConnection.ListSecretPathsKV(System.String,System.String)">
            <summary>
            Lists the secret paths under a given path in a KV v1 engine.
            </summary>
            <param name="path">The path under which to list secret paths.</param>
            <param name="mountPoint">The KV v1 engine mount point. Defaults to <c>kv</c>.</param>
            <returns>A list of secret paths.</returns>
            <exception cref="T:System.Data.DataException">
            Thrown if the library has not been initialized or if the Vault connection is not available (e.g., in emergency backup mode).
            </exception>
        </member>
        <member name="T:VaultConnector.EncryptionHelper">
            <summary>
            Provides encryption and decryption utilities for Vault backup files.
            </summary>
            <remarks>
            Uses AES encryption with a 6-character alphanumeric key.
            </remarks>
        </member>
        <member name="M:VaultConnector.EncryptionHelper.DeriveKey(System.String)">
            <summary>
            Derives a 256-bit AES key from a 6-character alphanumeric string.
            </summary>
            <param name="encryptionKey">The 6-character encryption key</param>
            <returns>A byte array representing the derived key</returns>
        </member>
        <member name="M:VaultConnector.EncryptionHelper.Encrypt(System.String,System.String)">
            <summary>
            Encrypts plaintext using AES encryption.
            </summary>
            <param name="plaintext">The plaintext to encrypt</param>
            <param name="encryptionKey">The 6-character encryption key</param>
            <returns>Base64-encoded encrypted data (IV + ciphertext)</returns>
        </member>
        <member name="M:VaultConnector.EncryptionHelper.Decrypt(System.String,System.String)">
            <summary>
            Decrypts Base64-encoded encrypted data.
            </summary>
            <param name="encryptedData">The Base64-encoded encrypted data (IV + ciphertext)</param>
            <param name="encryptionKey">The 6-character encryption key</param>
            <returns>The decrypted plaintext</returns>
        </member>
        <member name="T:VaultConnector.Models.VaultAuthMethod">
            <summary>
            Used to specify the authentication method when connecting to the Vault environment.
            </summary>
        </member>
        <member name="F:VaultConnector.Models.VaultAuthMethod.TLS">
            <summary>
            TLS based authentication method that relies on certificates located on the machine running the application.
            </summary>
        </member>
        <member name="F:VaultConnector.Models.VaultAuthMethod.UserPass">
            <summary>
            Username and password based authentication method, mostly reserved for HashiCorp Vault.
            </summary>
        </member>
        <member name="F:VaultConnector.Models.VaultAuthMethod.ClientSecret">
            <summary>
            Client secret based authentication method, mostly reserved for Azure Key Vault.
            </summary>
        </member>
        <member name="F:VaultConnector.Models.VaultAuthMethod.ManagedIdentity">
            <summary>
            Managed identity based authentication method, mostly reserved for Azure Key Vault.
            </summary>
        </member>
        <member name="T:VaultConnector.Models.VaulthAuthUserPass">
            <summary>
            Represents a username and password combination used for UserPass authentication.
            </summary>
        </member>
        <member name="P:VaultConnector.Models.VaulthAuthUserPass.User">
            <summary>
            The username to authenticate with when using UserPass authentication.
            </summary>
        </member>
        <member name="P:VaultConnector.Models.VaulthAuthUserPass.Pass">
            <summary>
            The password to authenticate with when using UserPass authentication.
            </summary>
        </member>
        <member name="T:VaultConnector.Models.VaultEnvironment">
            <summary>
            Used to specify the environment to connect to.
            </summary>
        </member>
        <member name="F:VaultConnector.Models.VaultEnvironment.CreativCompany">
            <summary>
            Vault environment located at CreativCompany HQ.
            </summary>
        </member>
        <member name="F:VaultConnector.Models.VaultEnvironment.DigitalOcean">
            <summary>
            Vault environment located at DigitalOcean.
            </summary>
        </member>
        <member name="T:VaultConnector.Models.VaultType">
            <summary>
            Used to specify the type of Vault server to connect to.
            </summary>
        </member>
        <member name="F:VaultConnector.Models.VaultType.HashiCorpVault">
            <summary>
            Vault server hosted by internally, integrated with HashiCorp Vault.
            </summary>
        </member>
        <member name="F:VaultConnector.Models.VaultType.AzureKeyVault">
            <summary>
            Vault server hosted by Microsoft Azure, integrated with Azure Key Vault.
            </summary>
        </member>
        <member name="T:VaultConnector.SecretsConnector">
            <summary>
            Static class containing functionality to connect to Vault environments and retrieve Secrets, in a easy to use way tailored for CreativCompany's own setup.
            </summary>
        </member>
        <member name="M:VaultConnector.SecretsConnector.Initialize(VaultConnector.Models.VaultType,VaultConnector.Models.VaultEnvironment,VaultConnector.Models.VaultAuthMethod,System.String,System.String)">
            <summary>
            Initializes the library to be able to connect to a given Vault environment.
            <para> This will last the entire lifetime of the application. </para>
            <para> If connection to Vault fails, will attempt to fallback to an encrypted backup file if available. </para>
            </summary>
            <param name="vaultType">
            The type of Vault server to connect to.
            </param>
            <param name="vaultEnvironment">
            The Vault environment the library to connect to.
            </param>
            <param name="vaultAuthMethod">
            The authentication method to be used when connecting to the Vault environment.
            </param>
            <param name="username">
            The username to be used when connecting to the Vault environment, only needed for UserPass authentication.
            </param>
            <param name="password">
            The password to be used when connecting to the Vault environment, only needed for UserPass authentication.
            </param>
        </member>
        <member name="M:VaultConnector.SecretsConnector.GetHashiCorpVaultValueKV(System.String,System.String)">
            <summary>
            Gets the KV Secrets from the given path.
            </summary>
            <param name="path">
            The path of the KV Secrets to get.
            </param>
            <param name="mountPoint">
            The engine to mount. Default is "kv" which is the default for a KV engine, only overwrite if another KV engine contains the KV Secrets path.
            </param>
            <returns>
            Returns a <see cref="T:System.Threading.Tasks.Task"/> containing <see cref="T:System.Collections.Generic.Dictionary`2"/> in its Result.
            </returns>
        </member>
        <member name="M:VaultConnector.SecretsConnector.RefreshHashiCorpVaultValueKV(System.String,System.String)">
            <summary>
            Gets the latest KV v1 secret values from Vault and replaces the locally cached value.
            </summary>
            <param name="path">The path of the KV secret to retrieve.</param>
            <param name="mountPoint">The KV v1 engine mount point. Defaults to <c>kv</c>.</param>
            <returns>The latest values stored at the requested secret path.</returns>
        </member>
        <member name="M:VaultConnector.SecretsConnector.SetHashiCorpVaultValueKV(System.String,System.Collections.Generic.IDictionary{System.String,System.Object},System.String)">
            <summary>
            Creates or replaces a KV v1 secret and refreshes the locally cached value.
            </summary>
            <param name="path">The path where the KV secret is stored.</param>
            <param name="values">The secret fields to write.</param>
            <param name="mountPoint">The KV v1 engine mount point. Defaults to <c>kv</c>.</param>
        </member>
        <member name="M:VaultConnector.SecretsConnector.GetHashiCorpVaultValueKVV2(System.String,System.Nullable{System.Int32},System.String)">
            <summary>
            <para>Gets the KV Secrets from the given path.</para>
            <para>This is for V2 KV engines, cannot be used with V1 KV engines.</para>
            </summary>
            <param name="path">
            The path of the KV Secrets to get.
            </param>
            <param name="version">
            The version of the KV Secret to get. Default is null, which pulls the latest version, only overwrite if a specific version is desired.
            </param>
            <param name="mountPoint">
            The engine to mount. Default is "kv" which is the default for a KV engine, only overwrite if another KV engine contains the KV Secrets path.
            </param>
            <returns>
            Returns a <see cref="T:System.Threading.Tasks.Task"/> containing <see cref="T:System.Collections.Generic.Dictionary`2"/> in its Result.
            </returns>
        </member>
        <member name="M:VaultConnector.SecretsConnector.ListHashiCorpVaultSecretPathsKV(System.String,System.String)">
            <summary>
            Lists the secret paths under a given path in a KV v1 engine.
            </summary>
            <param name="path">The path under which to list secret paths.</param>
            <param name="mountPoint">The KV v1 engine mount point. Defaults to <c>kv</c>.</param>
            <returns>A list of secret paths.</returns>
            <exception cref="T:System.Data.DataException">
            Thrown if the library has not been initialized or if the Vault connection is not available (e.g., in emergency backup mode).
            </exception>
        </member>
        <member name="M:VaultConnector.SecretsConnector.GetSecret(System.String)">
            <summary>
            Gets the secret from Azure Key Vault.
            </summary>
            <param name="secretName">The name of the secret to retrieve.</param>
            <returns>The <see cref="T:Azure.Security.KeyVault.Secrets.KeyVaultSecret"/> object.</returns>
        </member>
        <member name="M:VaultConnector.SecretsConnector.GetSecretValue(System.String)">
            <summary>
            Gets the value of the secret from Azure Key Vault.
            </summary>
            <param name="secretName">The name of the secret to retrieve.</param>
            <returns>The value of the secret as a string.</returns>
        </member>
    </members>
</doc>
