From b6b4228bcb9c27affad07de1eaec64b7bd428c8d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 4 Jul 2026 14:44:57 +0000 Subject: [PATCH 1/2] Initial plan From edef9dc03133980df8d4c140c57b91a3ab2bf1ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 4 Jul 2026 14:49:37 +0000 Subject: [PATCH 2/2] Extend Native AOT support for PKI management APIs - Fix enum JsonConverter attributes to use generic JsonStringEnumConverter under NET8_0_OR_GREATER for AOT safety (IssuerFormat, IssuerPrivateKeyFormat, PrivateKeyType, PrivateKeyRoleType), with non-generic fallback for older TFMs - Rename IssuerPrivetKeyFormat.cs -> IssuerPrivateKeyFormat.cs (typo fix) - Add JsonSerializable registrations in VaultSharpJsonContext for all new PKI Issuers/Keys/Roles request and response types; use TypeInfoPropertyName to disambiguate KeysData and KeyInfo which exist in both Issuers and Keys namespaces --- src/VaultSharp/Core/VaultSharpJsonContext.cs | 26 +++++++++++++++++++ .../PKI/Issuers/IssuerFormat.cs | 4 +++ ...KeyFormat.cs => IssuerPrivateKeyFormat.cs} | 6 ++++- .../V1/SecretsEngines/PKI/PrivateKeyType.cs | 4 +++ .../PKI/Roles/PrivateKeyRoleType.cs | 6 ++++- 5 files changed, 44 insertions(+), 2 deletions(-) rename src/VaultSharp/V1/SecretsEngines/PKI/Issuers/{IssuerPrivetKeyFormat.cs => IssuerPrivateKeyFormat.cs} (83%) diff --git a/src/VaultSharp/Core/VaultSharpJsonContext.cs b/src/VaultSharp/Core/VaultSharpJsonContext.cs index 37a9f28..4c93cbd 100644 --- a/src/VaultSharp/Core/VaultSharpJsonContext.cs +++ b/src/VaultSharp/Core/VaultSharpJsonContext.cs @@ -248,6 +248,32 @@ namespace VaultSharp.Core [JsonSerializable(typeof(VaultSharp.V1.AuthMethods.GoogleCloud.GoogleCloudAuthMethodInfo))] [JsonSerializable(typeof(VaultSharp.V1.AuthMethods.JWT.JWTAuthMethodInfo))] [JsonSerializable(typeof(VaultSharp.V1.AuthMethods.Kubernetes.KubernetesAuthMethodInfo))] + // PKI Issuers + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret), TypeInfoPropertyName = "SecretPKIIssuersKeysData")] + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret))] + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret))] + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Issuers.IssuerData))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Issuers.IssuerConfigRequestData))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Issuers.IssuerConfigResponseData))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Issuers.IssuerResponseData))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Issuers.KeysData), TypeInfoPropertyName = "PKIIssuersKeysData")] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Issuers.KeyInfo), TypeInfoPropertyName = "PKIIssuersKeyInfo")] + [JsonSerializable(typeof(System.Collections.Generic.Dictionary), TypeInfoPropertyName = "DictionaryStringPKIIssuersKeyInfo")] + // PKI Keys + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret), TypeInfoPropertyName = "SecretPKIKeysKeysData")] + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret))] + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Keys.KeyData))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Keys.ImportKeyData))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Keys.KeysData), TypeInfoPropertyName = "PKIKeysKeysData")] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Keys.KeyInfo), TypeInfoPropertyName = "PKIKeysKeyInfo")] + [JsonSerializable(typeof(System.Collections.Generic.Dictionary), TypeInfoPropertyName = "DictionaryStringPKIKeysKeyInfo")] + // PKI Roles + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret))] + [JsonSerializable(typeof(VaultSharp.V1.Commons.Secret))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Roles.RoleData))] + [JsonSerializable(typeof(VaultSharp.V1.SecretsEngines.PKI.Roles.RolesData))] internal partial class VaultSharpJsonContext : JsonSerializerContext { } diff --git a/src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerFormat.cs b/src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerFormat.cs index 91704b4..6c2df1b 100644 --- a/src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerFormat.cs +++ b/src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerFormat.cs @@ -3,7 +3,11 @@ namespace VaultSharp.V1.SecretsEngines.PKI.Issuers { +#if NET8_0_OR_GREATER + [JsonConverter(typeof(JsonStringEnumConverter))] +#else [JsonConverter(typeof(JsonStringEnumConverter))] +#endif public enum IssuerFormat { /// diff --git a/src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerPrivetKeyFormat.cs b/src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerPrivateKeyFormat.cs similarity index 83% rename from src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerPrivetKeyFormat.cs rename to src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerPrivateKeyFormat.cs index b1b1694..8b202b2 100644 --- a/src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerPrivetKeyFormat.cs +++ b/src/VaultSharp/V1/SecretsEngines/PKI/Issuers/IssuerPrivateKeyFormat.cs @@ -1,9 +1,13 @@ -using System.Runtime.Serialization; +using System.Runtime.Serialization; using System.Text.Json.Serialization; namespace VaultSharp.V1.SecretsEngines.PKI.Issuers { +#if NET8_0_OR_GREATER + [JsonConverter(typeof(JsonStringEnumConverter))] +#else [JsonConverter(typeof(JsonStringEnumConverter))] +#endif public enum IssuerPrivateKeyFormat { /// diff --git a/src/VaultSharp/V1/SecretsEngines/PKI/PrivateKeyType.cs b/src/VaultSharp/V1/SecretsEngines/PKI/PrivateKeyType.cs index c0f5b69..51de083 100644 --- a/src/VaultSharp/V1/SecretsEngines/PKI/PrivateKeyType.cs +++ b/src/VaultSharp/V1/SecretsEngines/PKI/PrivateKeyType.cs @@ -3,7 +3,11 @@ namespace VaultSharp.V1.SecretsEngines.PKI { +#if NET8_0_OR_GREATER + [JsonConverter(typeof(JsonStringEnumConverter))] +#else [JsonConverter(typeof(JsonStringEnumConverter))] +#endif public enum PrivateKeyType { /// diff --git a/src/VaultSharp/V1/SecretsEngines/PKI/Roles/PrivateKeyRoleType.cs b/src/VaultSharp/V1/SecretsEngines/PKI/Roles/PrivateKeyRoleType.cs index 66f85d8..326762a 100644 --- a/src/VaultSharp/V1/SecretsEngines/PKI/Roles/PrivateKeyRoleType.cs +++ b/src/VaultSharp/V1/SecretsEngines/PKI/Roles/PrivateKeyRoleType.cs @@ -1,9 +1,13 @@ -using System.Runtime.Serialization; +using System.Runtime.Serialization; using System.Text.Json.Serialization; namespace VaultSharp.V1.SecretsEngines.PKI.Roles { +#if NET8_0_OR_GREATER + [JsonConverter(typeof(JsonStringEnumConverter))] +#else [JsonConverter(typeof(JsonStringEnumConverter))] +#endif public enum PrivateKeyRoleType { ///