From 4fb958a88fdaf9b24f56d528da8deeb3499192cb Mon Sep 17 00:00:00 2001 From: Raja Nadar Date: Wed, 25 Nov 2020 21:24:08 -0800 Subject: [PATCH] add support for keymgmt secrets engine --- CHANGELOG.md | 10 ++++ README.md | 41 +++++++++++++--- src/VaultSharp/.AssemblyAttributes | 2 +- .../Enterprise/EnterpriseProvider.cs | 24 +++++++++ .../SecretsEngines/Enterprise/IEnterprise.cs | 27 ++++++++++ .../KMIP/CertificateFormat.cs | 2 +- .../KMIP/IKMIPSecretsEngine.cs | 2 +- .../{ => Enterprise}/KMIP/KMIPCredentials.cs | 2 +- .../KMIP/KMIPSecretsEngineProvider.cs | 2 +- .../IKeyManagementSecretsEngine.cs | 49 +++++++++++++++++++ .../KeyManagement/KeyManagementKMSKey.cs | 28 +++++++++++ .../KeyManagement/KeyManagementKey.cs | 47 ++++++++++++++++++ .../KeyManagementSecretsEngineProvider.cs | 34 +++++++++++++ .../Transform/DecodeRequestOptions.cs | 2 +- .../{ => Enterprise}/Transform/DecodedItem.cs | 2 +- .../Transform/DecodedResponse.cs | 2 +- .../Transform/DecodingItem.cs | 2 +- .../Transform/EncodeRequestOptions.cs | 2 +- .../{ => Enterprise}/Transform/EncodedItem.cs | 2 +- .../Transform/EncodedResponse.cs | 2 +- .../Transform/EncodingItem.cs | 2 +- .../Transform/ITransformSecretsEngine.cs | 2 +- .../TransformSecretsEngineProvider.cs | 2 +- .../V1/SecretsEngines/ISecretsEngine.cs | 18 +++---- .../SecretsEngineDefaultPaths.cs | 1 + .../SecretsEngines/SecretsEngineProvider.cs | 13 ++--- src/VaultSharp/VaultSharp.csproj | 6 +-- test/VaultSharp.Samples/Program.cs | 4 +- 28 files changed, 285 insertions(+), 47 deletions(-) create mode 100644 src/VaultSharp/V1/SecretsEngines/Enterprise/EnterpriseProvider.cs create mode 100644 src/VaultSharp/V1/SecretsEngines/Enterprise/IEnterprise.cs rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/KMIP/CertificateFormat.cs (92%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/KMIP/IKMIPSecretsEngine.cs (96%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/KMIP/KMIPCredentials.cs (95%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/KMIP/KMIPSecretsEngineProvider.cs (95%) create mode 100644 src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/IKeyManagementSecretsEngine.cs create mode 100644 src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementKMSKey.cs create mode 100644 src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementKey.cs create mode 100644 src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementSecretsEngineProvider.cs rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/DecodeRequestOptions.cs (91%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/DecodedItem.cs (89%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/DecodedResponse.cs (85%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/DecodingItem.cs (94%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/EncodeRequestOptions.cs (91%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/EncodedItem.cs (89%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/EncodedResponse.cs (85%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/EncodingItem.cs (94%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/ITransformSecretsEngine.cs (97%) rename src/VaultSharp/V1/SecretsEngines/{ => Enterprise}/Transform/TransformSecretsEngineProvider.cs (96%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f6c035e..37c6e712 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +## 1.6.0.0 (TBD) + +**ENTERPRISE VAULT FEATURES:** + + * Add support for ```Key Management``` Secrets Engine. + +**BREAKING CHANGES:** + + * Moved Enterprise Secrets Engines under the Enterprise namespace (KMIP, Transform etc.) + ## 1.4.0.7 (Nov 24, 2020) **BREAKING CHANGES:** diff --git a/README.md b/README.md index d56297e4..a86d12ae 100644 --- a/README.md +++ b/README.md @@ -893,14 +893,39 @@ Secret activeResponse = await vaultClient.V1.Secrets.Identity.IntrospectTo bool active = activeResponse.Data; ``` -#### KMIP Secrets Engine +#### KeyManagement Secrets Engine (Enterprise) + +##### Read Key + +- Returns information about a named key. +- The keys object will hold information regarding each key version. +- Different information will be returned depending on the key type. +- For example, an asymmetric key will return its public key in a standard format for the type. + +```cs +Secret keyManagementKey = await vaultClient.V1.Secrets.Enterprise.KeyManagement.ReadKeyAsync(keyName); +var keys = keyManagementKey.Data.Keys; +``` + +##### Read Key in KMS + +- Returns information about a named key in KMS. + +```cs +Secret keyManagementKMSKey = await vaultClient.V1.Secrets.Enterprise.KeyManagement.ReadKeyInKMSAsync(kmsName, keyName); +var name = keyManagementKMSKey.Data.Name; +var purpose = keyManagementKMSKey.Data.Purpose; +var protection = keyManagementKMSKey.Data.Protection; +``` + +#### KMIP Secrets Engine (Enterprise) ##### Generate dynamic credentials - Create a new client certificate tied to the given role and scope. ```cs -Secret kmipCredentials = await vaultClient.V1.Secrets.KMIP.GetCredentialsAsync(scopeName, roleName); +Secret kmipCredentials = await vaultClient.V1.Secrets.Enterprise.KMIP.GetCredentialsAsync(scopeName, roleName); string certificateContent = kmipCredentials.Data.CertificateContent; string privateKeyContent = kmipCredentials.Data.PrivateKeyContent; ``` @@ -914,7 +939,7 @@ string privateKeyContent = kmipCredentials.Data.PrivateKeyContent; ```cs Secret creds = await vaultClient.V1.Secrets.MongoDBAtlas.GetCredentialsAsync(name); string privateKey = creds.Data.PrivateKey; -string publicKey = nomadCredentials.Data.PublicKey; +string publicKey = creds.Data.PublicKey; ``` #### Nomad Secrets Engine @@ -1073,7 +1098,7 @@ This endpoint deletes the key definition. await vaultClient.V1.Secrets.TOTP.DeleteKeyAsync(keyName); ``` -#### Transform Secrets Engine +#### Transform Secrets Engine (Enterprise) ##### Encode Method @@ -1082,7 +1107,7 @@ await vaultClient.V1.Secrets.TOTP.DeleteKeyAsync(keyName); ```cs var encodeOptions = new EncodeRequestOptions { Value = "ipsem" }; -Secret response = await _authenticatedVaultClient.V1.Secrets.Transform.EncodeAsync(roleName, encodeOptions); +Secret response = await _authenticatedVaultClient.V1.Secrets.Enterprise.Transform.EncodeAsync(roleName, encodeOptions); response.Data.EncodedValue; ``` @@ -1095,7 +1120,7 @@ var encodeOptions = new EncodeRequestOptions BatchItems = new List { new EncodingItem { Value = "ipsem1" }, new EncodingItem { Value = "ipsem2" } } }; -Secret response = await _authenticatedVaultClient.V1.Secrets.Transform.EncodeAsync(roleName, encodeOptions); +Secret response = await _authenticatedVaultClient.V1.Secrets.Enterprise.Transform.EncodeAsync(roleName, encodeOptions); response.Data.EncodedItems; ``` @@ -1105,7 +1130,7 @@ response.Data.EncodedItems; ```cs var decodeOptions = new DecodeRequestOptions { Value = "ipsem" }; -Secret response = await _authenticatedVaultClient.V1.Secrets.Transform.DecodeAsync(roleName, decodeOptions); +Secret response = await _authenticatedVaultClient.V1.Secrets.Enterprise.Transform.DecodeAsync(roleName, decodeOptions); response.Data.DecodedValue; ``` @@ -1117,7 +1142,7 @@ var decodeOptions = new DecodeRequestOptions BatchItems = new List { new DecodingItem { Value = "ipsem1" }, new DecodingItem { Value = "ipsem2" } } }; -Secret response = await _authenticatedVaultClient.V1.Secrets.Transform.DecodeAsync(roleName, decodeOptions); +Secret response = await _authenticatedVaultClient.V1.Secrets.Enterprise.Transform.DecodeAsync(roleName, decodeOptions); response.Data.DecodedItems; ``` diff --git a/src/VaultSharp/.AssemblyAttributes b/src/VaultSharp/.AssemblyAttributes index e5dc9b89..f104032e 100644 --- a/src/VaultSharp/.AssemblyAttributes +++ b/src/VaultSharp/.AssemblyAttributes @@ -1,4 +1,4 @@ // using System; using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v1.3", FrameworkDisplayName = "")] diff --git a/src/VaultSharp/V1/SecretsEngines/Enterprise/EnterpriseProvider.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/EnterpriseProvider.cs new file mode 100644 index 00000000..1ef36537 --- /dev/null +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/EnterpriseProvider.cs @@ -0,0 +1,24 @@ +using VaultSharp.Core; +using VaultSharp.V1.SecretsEngines.Enterprise.KeyManagement; +using VaultSharp.V1.SecretsEngines.Enterprise.KMIP; +using VaultSharp.V1.SecretsEngines.Enterprise.Transform; + +namespace VaultSharp.V1.SecretsEngines.Enterprise +{ + /// + /// Enterprise Secrets Engines + /// + internal class EnterpriseProvider : IEnterprise + { + public EnterpriseProvider(Polymath polymath) + { + KeyManagement = new KeyManagementSecretsEngineProvider(polymath); + KMIP = new KMIPSecretsEngineProvider(polymath); + Transform = new TransformSecretsEngineProvider(polymath); + } + + public IKeyManagementSecretsEngine KeyManagement { get; } + public IKMIPSecretsEngine KMIP { get; } + public ITransformSecretsEngine Transform { get; } + } +} \ No newline at end of file diff --git a/src/VaultSharp/V1/SecretsEngines/Enterprise/IEnterprise.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/IEnterprise.cs new file mode 100644 index 00000000..035fc030 --- /dev/null +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/IEnterprise.cs @@ -0,0 +1,27 @@ +using VaultSharp.V1.SecretsEngines.Enterprise.KeyManagement; +using VaultSharp.V1.SecretsEngines.Enterprise.KMIP; +using VaultSharp.V1.SecretsEngines.Enterprise.Transform; + +namespace VaultSharp.V1.SecretsEngines.Enterprise +{ + /// + /// Enterprise Secrets Engines + /// + public interface IEnterprise + { + /// + /// The KeyManagement Secrets Engine. + /// + IKeyManagementSecretsEngine KeyManagement { get; } + + /// + /// The KMIP Secrets Engine. + /// + IKMIPSecretsEngine KMIP { get; } + + /// + /// The Transform Secrets Engine. + /// + ITransformSecretsEngine Transform { get; } + } +} \ No newline at end of file diff --git a/src/VaultSharp/V1/SecretsEngines/KMIP/CertificateFormat.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/CertificateFormat.cs similarity index 92% rename from src/VaultSharp/V1/SecretsEngines/KMIP/CertificateFormat.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/CertificateFormat.cs index 747d1140..cc07b1d1 100644 --- a/src/VaultSharp/V1/SecretsEngines/KMIP/CertificateFormat.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/CertificateFormat.cs @@ -1,7 +1,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; -namespace VaultSharp.V1.SecretsEngines.KMIP +namespace VaultSharp.V1.SecretsEngines.Enterprise.KMIP { /// /// Represents the Certificate format. diff --git a/src/VaultSharp/V1/SecretsEngines/KMIP/IKMIPSecretsEngine.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/IKMIPSecretsEngine.cs similarity index 96% rename from src/VaultSharp/V1/SecretsEngines/KMIP/IKMIPSecretsEngine.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/IKMIPSecretsEngine.cs index 02b96441..54be9763 100644 --- a/src/VaultSharp/V1/SecretsEngines/KMIP/IKMIPSecretsEngine.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/IKMIPSecretsEngine.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using VaultSharp.V1.Commons; -namespace VaultSharp.V1.SecretsEngines.KMIP +namespace VaultSharp.V1.SecretsEngines.Enterprise.KMIP { /// /// KMIP Secrets Engine. diff --git a/src/VaultSharp/V1/SecretsEngines/KMIP/KMIPCredentials.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/KMIPCredentials.cs similarity index 95% rename from src/VaultSharp/V1/SecretsEngines/KMIP/KMIPCredentials.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/KMIPCredentials.cs index 622d2bca..c8c7a963 100644 --- a/src/VaultSharp/V1/SecretsEngines/KMIP/KMIPCredentials.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/KMIPCredentials.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.KMIP +namespace VaultSharp.V1.SecretsEngines.Enterprise.KMIP { /// /// Represents the KMIP credentials. diff --git a/src/VaultSharp/V1/SecretsEngines/KMIP/KMIPSecretsEngineProvider.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/KMIPSecretsEngineProvider.cs similarity index 95% rename from src/VaultSharp/V1/SecretsEngines/KMIP/KMIPSecretsEngineProvider.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/KMIPSecretsEngineProvider.cs index 53604bb5..96484f0a 100644 --- a/src/VaultSharp/V1/SecretsEngines/KMIP/KMIPSecretsEngineProvider.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/KMIP/KMIPSecretsEngineProvider.cs @@ -3,7 +3,7 @@ using VaultSharp.Core; using VaultSharp.V1.Commons; -namespace VaultSharp.V1.SecretsEngines.KMIP +namespace VaultSharp.V1.SecretsEngines.Enterprise.KMIP { internal class KMIPSecretsEngineProvider : IKMIPSecretsEngine { diff --git a/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/IKeyManagementSecretsEngine.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/IKeyManagementSecretsEngine.cs new file mode 100644 index 00000000..d4e7f84f --- /dev/null +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/IKeyManagementSecretsEngine.cs @@ -0,0 +1,49 @@ +using System.Threading.Tasks; +using VaultSharp.V1.Commons; + +namespace VaultSharp.V1.SecretsEngines.Enterprise.KeyManagement +{ + /// + /// The KeyManagement Secrets Engine. + /// + public interface IKeyManagementSecretsEngine + { + /// + /// Reads information about a named key. + /// The keys object will hold information regarding each key version. + /// Different information will be returned depending on the key type. + /// For example, an asymmetric key will return its public key in a standard format for the type. + /// + /// [required] + /// Specifies the name of the key to read. + /// + /// [optional] + /// The mount point for the backend. Defaults to + /// Provide a value only if you have customized the mount point. + /// + /// [optional] + /// The TTL for the token and can be either an integer number of seconds or a string duration of seconds. + /// + /// Key Info. + Task> ReadKeyAsync(string keyName, string mountPoint = SecretsEngineDefaultPaths.KeyManagement, string wrapTimeToLive = null); + + /// + /// Reads information about a key that's been distributed to a KMS provider. + /// + /// [required] + /// Specifies the name of the KMS provider. + /// + /// [required] + /// Specifies the name of the key to read. + /// + /// [optional] + /// The mount point for the backend. Defaults to + /// Provide a value only if you have customized the mount point. + /// + /// [optional] + /// The TTL for the token and can be either an integer number of seconds or a string duration of seconds. + /// + /// Key Info. + Task> ReadKeyInKMSAsync(string kmsName, string keyName, string mountPoint = SecretsEngineDefaultPaths.KeyManagement, string wrapTimeToLive = null); + } +} \ No newline at end of file diff --git a/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementKMSKey.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementKMSKey.cs new file mode 100644 index 00000000..90cb7132 --- /dev/null +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementKMSKey.cs @@ -0,0 +1,28 @@ +using Newtonsoft.Json; + +namespace VaultSharp.V1.SecretsEngines.Enterprise.KeyManagement +{ + /// + /// Key in KMS + /// + public class KeyManagementKMSKey + { + /// + /// + /// + [JsonProperty("name")] + public string Name { get; set; } + + /// + /// + /// + [JsonProperty("protection")] + public string Protection { get; set; } + + /// + /// + /// + [JsonProperty("purpose")] + public string Purpose { get; set; } + } +} \ No newline at end of file diff --git a/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementKey.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementKey.cs new file mode 100644 index 00000000..0995c156 --- /dev/null +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementKey.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace VaultSharp.V1.SecretsEngines.Enterprise.KeyManagement +{ + /// + /// The KeyMgmt key + /// + public class KeyManagementKey + { + /// + /// + /// + [JsonProperty("deletion_allowed")] + public bool DeletionAllowed { get; set; } + + /// + /// + /// + [JsonProperty("keys")] + public Dictionary> Keys; + + /// + /// + /// + [JsonProperty("latest_version")] + public int LatestVersion { get; set; } + + /// + /// + /// + [JsonProperty("min_enabled_version")] + public int MinimumEnabledVersion { get; set; } + + /// + /// + /// + [JsonProperty("name")] + public string Name { get; set; } + + /// + /// + /// + [JsonProperty("type")] + public string Type { get; set; } + } +} \ No newline at end of file diff --git a/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementSecretsEngineProvider.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementSecretsEngineProvider.cs new file mode 100644 index 00000000..c0c7c941 --- /dev/null +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/KeyManagement/KeyManagementSecretsEngineProvider.cs @@ -0,0 +1,34 @@ +using System.Net.Http; +using System.Threading.Tasks; +using VaultSharp.Core; +using VaultSharp.V1.Commons; + +namespace VaultSharp.V1.SecretsEngines.Enterprise.KeyManagement +{ + internal class KeyManagementSecretsEngineProvider : IKeyManagementSecretsEngine + { + private readonly Polymath _polymath; + + public KeyManagementSecretsEngineProvider(Polymath polymath) + { + _polymath = polymath; + } + + public async Task> ReadKeyAsync(string keyName, string mountPoint = SecretsEngineDefaultPaths.KeyManagement, string wrapTimeToLive = null) + { + Checker.NotNull(mountPoint, "mountPoint"); + Checker.NotNull(keyName, "keyName"); + + return await _polymath.MakeVaultApiRequest>("v1/" + mountPoint.Trim('/') + "/key/" + keyName.Trim('/'), HttpMethod.Get, wrapTimeToLive: wrapTimeToLive).ConfigureAwait(_polymath.VaultClientSettings.ContinueAsyncTasksOnCapturedContext); + } + + public async Task> ReadKeyInKMSAsync(string kmsName, string keyName, string mountPoint = SecretsEngineDefaultPaths.KeyManagement, string wrapTimeToLive = null) + { + Checker.NotNull(mountPoint, "mountPoint"); + Checker.NotNull(kmsName, "kmsName"); + Checker.NotNull(keyName, "keyName"); + + return await _polymath.MakeVaultApiRequest>("v1/" + mountPoint.Trim('/') + "/kms/" + kmsName.Trim('/') + "/key/" + keyName.Trim('/'), HttpMethod.Get, wrapTimeToLive: wrapTimeToLive).ConfigureAwait(_polymath.VaultClientSettings.ContinueAsyncTasksOnCapturedContext); + } + } +} \ No newline at end of file diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/DecodeRequestOptions.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodeRequestOptions.cs similarity index 91% rename from src/VaultSharp/V1/SecretsEngines/Transform/DecodeRequestOptions.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodeRequestOptions.cs index 7d86d192..06ca9eb6 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/DecodeRequestOptions.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodeRequestOptions.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// Represents the Decode Request Options. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/DecodedItem.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodedItem.cs similarity index 89% rename from src/VaultSharp/V1/SecretsEngines/Transform/DecodedItem.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodedItem.cs index 47dc41b2..ea567940 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/DecodedItem.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodedItem.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// Represents a single Decoded item. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/DecodedResponse.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodedResponse.cs similarity index 85% rename from src/VaultSharp/V1/SecretsEngines/Transform/DecodedResponse.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodedResponse.cs index 99eae8c5..c97207cc 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/DecodedResponse.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodedResponse.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// Response for decoding. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/DecodingItem.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodingItem.cs similarity index 94% rename from src/VaultSharp/V1/SecretsEngines/Transform/DecodingItem.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodingItem.cs index 3881b6dd..31563bde 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/DecodingItem.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/DecodingItem.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// Represents a single Decoding item. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/EncodeRequestOptions.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodeRequestOptions.cs similarity index 91% rename from src/VaultSharp/V1/SecretsEngines/Transform/EncodeRequestOptions.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodeRequestOptions.cs index 6838f314..8efbb1db 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/EncodeRequestOptions.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodeRequestOptions.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// Represents the Encode Request Options. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/EncodedItem.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodedItem.cs similarity index 89% rename from src/VaultSharp/V1/SecretsEngines/Transform/EncodedItem.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodedItem.cs index f7974497..7bb0861f 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/EncodedItem.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodedItem.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// Represents a single Encoded item. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/EncodedResponse.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodedResponse.cs similarity index 85% rename from src/VaultSharp/V1/SecretsEngines/Transform/EncodedResponse.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodedResponse.cs index 6f212980..76c7555e 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/EncodedResponse.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodedResponse.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// Response for encoding. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/EncodingItem.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodingItem.cs similarity index 94% rename from src/VaultSharp/V1/SecretsEngines/Transform/EncodingItem.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodingItem.cs index e3185d24..87aff5e9 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/EncodingItem.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/EncodingItem.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// Represents a single Encoding item. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/ITransformSecretsEngine.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/ITransformSecretsEngine.cs similarity index 97% rename from src/VaultSharp/V1/SecretsEngines/Transform/ITransformSecretsEngine.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/ITransformSecretsEngine.cs index 8b02b54e..1e781a0c 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/ITransformSecretsEngine.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/ITransformSecretsEngine.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using VaultSharp.V1.Commons; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { /// /// The Transform Secrets Engine. diff --git a/src/VaultSharp/V1/SecretsEngines/Transform/TransformSecretsEngineProvider.cs b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/TransformSecretsEngineProvider.cs similarity index 96% rename from src/VaultSharp/V1/SecretsEngines/Transform/TransformSecretsEngineProvider.cs rename to src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/TransformSecretsEngineProvider.cs index 41a191cd..eb64754b 100644 --- a/src/VaultSharp/V1/SecretsEngines/Transform/TransformSecretsEngineProvider.cs +++ b/src/VaultSharp/V1/SecretsEngines/Enterprise/Transform/TransformSecretsEngineProvider.cs @@ -3,7 +3,7 @@ using VaultSharp.Core; using VaultSharp.V1.Commons; -namespace VaultSharp.V1.SecretsEngines.Transform +namespace VaultSharp.V1.SecretsEngines.Enterprise.Transform { internal class TransformSecretsEngineProvider : ITransformSecretsEngine { diff --git a/src/VaultSharp/V1/SecretsEngines/ISecretsEngine.cs b/src/VaultSharp/V1/SecretsEngines/ISecretsEngine.cs index 1cd070c9..450e89dd 100644 --- a/src/VaultSharp/V1/SecretsEngines/ISecretsEngine.cs +++ b/src/VaultSharp/V1/SecretsEngines/ISecretsEngine.cs @@ -5,10 +5,10 @@ using VaultSharp.V1.SecretsEngines.Consul; using VaultSharp.V1.SecretsEngines.Cubbyhole; using VaultSharp.V1.SecretsEngines.Database; +using VaultSharp.V1.SecretsEngines.Enterprise; using VaultSharp.V1.SecretsEngines.GoogleCloud; using VaultSharp.V1.SecretsEngines.GoogleCloudKMS; using VaultSharp.V1.SecretsEngines.Identity; -using VaultSharp.V1.SecretsEngines.KMIP; using VaultSharp.V1.SecretsEngines.KeyValue; using VaultSharp.V1.SecretsEngines.MongoDBAtlas; using VaultSharp.V1.SecretsEngines.Nomad; @@ -17,7 +17,6 @@ using VaultSharp.V1.SecretsEngines.RabbitMQ; using VaultSharp.V1.SecretsEngines.SSH; using VaultSharp.V1.SecretsEngines.TOTP; -using VaultSharp.V1.SecretsEngines.Transform; using VaultSharp.V1.SecretsEngines.Transit; namespace VaultSharp.V1.SecretsEngines @@ -27,6 +26,11 @@ namespace VaultSharp.V1.SecretsEngines /// public interface ISecretsEngine { + /// + /// The Enterprise Secrets Engines. + /// + IEnterprise Enterprise { get; } + /// /// The ActiveDirectory Secrets Engine. /// @@ -77,11 +81,6 @@ public interface ISecretsEngine /// IIdentitySecretsEngine Identity { get; } - /// - /// The KMIP Secrets Engine. - /// - IKMIPSecretsEngine KMIP { get; } - /// /// The KeyValue Secrets Engine. /// @@ -122,11 +121,6 @@ public interface ISecretsEngine /// ITOTPSecretsEngine TOTP { get; } - /// - /// The Transform Secrets Engine. - /// - ITransformSecretsEngine Transform { get; } - /// /// The Transit Secrets Engine. /// diff --git a/src/VaultSharp/V1/SecretsEngines/SecretsEngineDefaultPaths.cs b/src/VaultSharp/V1/SecretsEngines/SecretsEngineDefaultPaths.cs index 99f2687a..b8860cac 100644 --- a/src/VaultSharp/V1/SecretsEngines/SecretsEngineDefaultPaths.cs +++ b/src/VaultSharp/V1/SecretsEngines/SecretsEngineDefaultPaths.cs @@ -13,6 +13,7 @@ public class SecretsEngineDefaultPaths public const string Database = "database"; public const string GoogleCloud = "gcp"; public const string GoogleCloudKMS = "gcpkms"; + public const string KeyManagement = "keymgmt"; public const string KMIP = "kmip"; public const string KeyValueV1 = "kv"; public const string MongoDBAtlas = "mongodbatlas"; diff --git a/src/VaultSharp/V1/SecretsEngines/SecretsEngineProvider.cs b/src/VaultSharp/V1/SecretsEngines/SecretsEngineProvider.cs index e5f29eb2..dc55e8da 100644 --- a/src/VaultSharp/V1/SecretsEngines/SecretsEngineProvider.cs +++ b/src/VaultSharp/V1/SecretsEngines/SecretsEngineProvider.cs @@ -10,7 +10,6 @@ using VaultSharp.V1.SecretsEngines.GoogleCloudKMS; using VaultSharp.V1.SecretsEngines.Identity; using VaultSharp.V1.SecretsEngines.KeyValue; -using VaultSharp.V1.SecretsEngines.KMIP; using VaultSharp.V1.SecretsEngines.MongoDBAtlas; using VaultSharp.V1.SecretsEngines.Nomad; using VaultSharp.V1.SecretsEngines.OpenLDAP; @@ -18,8 +17,8 @@ using VaultSharp.V1.SecretsEngines.RabbitMQ; using VaultSharp.V1.SecretsEngines.SSH; using VaultSharp.V1.SecretsEngines.TOTP; -using VaultSharp.V1.SecretsEngines.Transform; using VaultSharp.V1.SecretsEngines.Transit; +using VaultSharp.V1.SecretsEngines.Enterprise; namespace VaultSharp.V1.SecretsEngines { @@ -27,6 +26,8 @@ internal class SecretsEngineProvider : ISecretsEngine { public SecretsEngineProvider(Polymath polymath) { + Enterprise = new EnterpriseProvider(polymath); + ActiveDirectory = new ActiveDirectorySecretsEngineProvider(polymath); AliCloud = new AliCloudSecretsEngineProvider(polymath); AWS = new AWSSecretsEngineProvider(polymath); @@ -37,7 +38,6 @@ public SecretsEngineProvider(Polymath polymath) GoogleCloud = new GoogleCloudSecretsEngineProvider(polymath); GoogleCloudKMS = new GoogleCloudKMSSecretsEngineProvider(polymath); Identity = new IdentitySecretsEngineProvider(polymath); - KMIP = new KMIPSecretsEngineProvider(polymath); KeyValue = new KeyValueSecretsEngineProvider(polymath); MongoDBAtlas = new MongoDBAtlasSecretsEngineProvider(polymath); Nomad = new NomadSecretsEngineProvider(polymath); @@ -46,10 +46,11 @@ public SecretsEngineProvider(Polymath polymath) RabbitMQ = new RabbitMQSecretsEngineProvider(polymath); SSH = new SSHSecretsEngineProvider(polymath); TOTP = new TOTPSecretsEngineProvider(polymath); - Transform = new TransformSecretsEngineProvider(polymath); Transit = new TransitSecretsEngineProvider(polymath); } + public IEnterprise Enterprise { get; } + public IActiveDirectorySecretsEngine ActiveDirectory { get; } public IAliCloudSecretsEngine AliCloud { get; } @@ -68,8 +69,6 @@ public SecretsEngineProvider(Polymath polymath) public IGoogleCloudKMSSecretsEngine GoogleCloudKMS { get; } - public IKMIPSecretsEngine KMIP { get; } - public IKeyValueSecretsEngine KeyValue { get; } public IIdentitySecretsEngine Identity { get; } @@ -88,8 +87,6 @@ public SecretsEngineProvider(Polymath polymath) public ITOTPSecretsEngine TOTP { get; } - public ITransformSecretsEngine Transform { get; } - public ITransitSecretsEngine Transit { get; } } } \ No newline at end of file diff --git a/src/VaultSharp/VaultSharp.csproj b/src/VaultSharp/VaultSharp.csproj index 99871ee1..d48788b3 100644 --- a/src/VaultSharp/VaultSharp.csproj +++ b/src/VaultSharp/VaultSharp.csproj @@ -6,7 +6,7 @@ false VaultSharp.snk VaultSharp - 1.4.0.7 + 1.6.0.0 Raja Nadar Copyright © 2020 Raja Nadar. All rights reserved. https://github.com/rajanadar/VaultSharp @@ -22,8 +22,8 @@ This library is built with .NET Standard 1.3, .NET Standard 2.0, .NET Standard 2.1, .NET Framework 4.5 & .NET 5 and hence is cross-platform across .NET Core 1.x, 2.x, 3.x, .NET Frameworks 4.x, Xamarin iOS, Android, Mac, UWP etc. Github true - 1.4.0.7 - 1.4.0.7 + 1.6.0.0 + 1.6.0.0 Apache-2.0 icon.png diff --git a/test/VaultSharp.Samples/Program.cs b/test/VaultSharp.Samples/Program.cs index 2ba13c84..0d75138c 100644 --- a/test/VaultSharp.Samples/Program.cs +++ b/test/VaultSharp.Samples/Program.cs @@ -21,7 +21,7 @@ namespace VaultSharp.Samples { class Program { - private const string ExpectedVaultVersion = "1.4.0"; + private const string ExpectedVaultVersion = "1.6.0"; private static IVaultClient _unauthenticatedVaultClient; private static IVaultClient _authenticatedVaultClient; @@ -165,6 +165,8 @@ private static void RunCubbyholeSamples() private static void RunTransitSamples() { + return; + // Transit // manually setup the following.