From 7be0b7b42008971d4c1ca5e572b52c46ac891c35 Mon Sep 17 00:00:00 2001 From: GraceSolutions Date: Tue, 2 Jun 2026 21:14:43 -0400 Subject: [PATCH] Add plain-text accessors for secrets InfisicalSecret.GetPlainTextValue() returns the SecureString contents as a managed string for ergonomic PowerShell access. ConvertTo-InfisicalSecretDictionary -AsPlainText emits Dictionary instead of Dictionary; default behavior unchanged. Export-InfisicalSecrets already writes plain text via secret.UsePlainTextValue(), so no switch was added there. --- CHANGELOG.md | 56 ++++++++------- Module/PSInfisicalAPI/PSInfisicalAPI.psd1 | 4 +- Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll | Bin 73728 -> 75264 bytes ...onvertToInfisicalSecretDictionaryCmdlet.cs | 64 +++++++++++------- src/PSInfisicalAPI/Models/InfisicalSecret.cs | 6 ++ 5 files changed, 81 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 187bd42..199874f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,46 +1,54 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loosely, but version numbers use the build timestamp format `yyyy.MM.dd.HHmm`. - +# Changelog + +All notable changes to this project will be documented in this file. + +The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loosely, but version numbers use the build timestamp format `yyyy.MM.dd.HHmm`. + ## Unreleased +## 2026.06.03.0113 + +- Build produced from commit 09c577ebd0fd. +- Added `InfisicalSecret.GetPlainTextValue()` for direct plain-text access to secret material from PowerShell without needing `Marshal.SecureStringToBSTR`. +- Added `-AsPlainText` switch to `ConvertTo-InfisicalSecretDictionary`; when present the cmdlet emits `Dictionary` instead of the default `Dictionary`. + +## Unreleased (carried forward) + ## 2026.06.03.0057 - Build produced from commit 7e5209190ac2. -## Unreleased (carried forward) +## Unreleased (carried forward) ## 2026.06.03.0056 - Build produced from commit 7e5209190ac2. -## Unreleased (carried forward) +## Unreleased (carried forward) ## 2026.06.03.0055 - Build produced from commit 7e5209190ac2. -## Unreleased (carried forward) +## Unreleased (carried forward) ## 2026.06.03.0047 - Build produced from commit 7e5209190ac2. -## Unreleased (carried forward) +## Unreleased (carried forward) ## 2026.06.03.0046 - Build produced from commit 7e5209190ac2. -## Unreleased (carried forward) +## Unreleased (carried forward) ## 2026.06.03.0032 - Build produced from commit c86676010532. -## Unreleased (carried forward) +## Unreleased (carried forward) ## 2026.06.02.1907 @@ -802,15 +810,15 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos - Build produced from commit fa65c18bc171. -## Unreleased (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) - -### Added - -- Initial repository skeleton, C# `netstandard2.0` project, and PowerShell module layout. -- Centralized logging (`InfisicalLogger`), error types/handler, sanitizer, path utility, and `SecureString` utility. -- Endpoint registry covering `UniversalAuthLogin`, `ListSecrets`, and `RetrieveSecret`, and a `System.Uri`-based URI builder. -- Synchronous HTTP client, JSON/YAML/XML/ENV serializers, and DTO/mapper for secrets. -- Connection model, process-level session manager, Universal Auth and Token Auth providers. -- Cmdlets: `Connect-Infisical`, `Disconnect-Infisical`, `Get-InfisicalSecrets`, `Get-InfisicalSecret`, `ConvertTo-InfisicalSecretDictionary`, `Export-InfisicalSecrets`. -- Build script (`build.ps1`) generating manifest, copying binaries, creating release folders, and supporting unit/integration tests. -- xUnit test project with unit tests and opt-in integration tests. +## Unreleased (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) + +### Added + +- Initial repository skeleton, C# `netstandard2.0` project, and PowerShell module layout. +- Centralized logging (`InfisicalLogger`), error types/handler, sanitizer, path utility, and `SecureString` utility. +- Endpoint registry covering `UniversalAuthLogin`, `ListSecrets`, and `RetrieveSecret`, and a `System.Uri`-based URI builder. +- Synchronous HTTP client, JSON/YAML/XML/ENV serializers, and DTO/mapper for secrets. +- Connection model, process-level session manager, Universal Auth and Token Auth providers. +- Cmdlets: `Connect-Infisical`, `Disconnect-Infisical`, `Get-InfisicalSecrets`, `Get-InfisicalSecret`, `ConvertTo-InfisicalSecretDictionary`, `Export-InfisicalSecrets`. +- Build script (`build.ps1`) generating manifest, copying binaries, creating release folders, and supporting unit/integration tests. +- xUnit test project with unit tests and opt-in integration tests. diff --git a/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 b/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 index e313a14..362cd1a 100644 --- a/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 +++ b/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 @@ -1,6 +1,6 @@ @{ RootModule = 'PSInfisicalAPI.psm1' - ModuleVersion = '2026.06.03.0057' + ModuleVersion = '2026.06.03.0113' GUID = 'b8a2f3d4-7c51-4d2f-9e6a-1f0c8b3d4e51' Author = 'Grace Solutions' CompanyName = 'Grace Solutions' @@ -27,7 +27,7 @@ LicenseUri = 'https://www.gnu.org/licenses/agpl-3.0.html' ProjectUri = 'https://prod.git.gracesolution.info/gsadmin/PSInfisicalAPI' ReleaseNotes = 'See CHANGELOG.md in the project repository for release history.' - CommitHash = '7e5209190ac2' + CommitHash = '09c577ebd0fd' } } } \ No newline at end of file diff --git a/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll b/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll index 6f0a94e1d413daed75e597f9aa1f194f7f2c6c2a..8f9805d0be134d4be22139a7f17269d84e81d2ef 100644 GIT binary patch literal 75264 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 cXv$@QYM?j_oW(Xl@6uUq+PP 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 diff --git a/src/PSInfisicalAPI/Cmdlets/ConvertToInfisicalSecretDictionaryCmdlet.cs b/src/PSInfisicalAPI/Cmdlets/ConvertToInfisicalSecretDictionaryCmdlet.cs index 0b660ca..25925f4 100644 --- a/src/PSInfisicalAPI/Cmdlets/ConvertToInfisicalSecretDictionaryCmdlet.cs +++ b/src/PSInfisicalAPI/Cmdlets/ConvertToInfisicalSecretDictionaryCmdlet.cs @@ -9,6 +9,7 @@ namespace PSInfisicalAPI.Cmdlets { [Cmdlet(VerbsData.ConvertTo, "InfisicalSecretDictionary")] [OutputType(typeof(Dictionary))] + [OutputType(typeof(Dictionary))] public sealed class ConvertToInfisicalSecretDictionaryCmdlet : InfisicalCmdletBase { [Parameter(Mandatory = true, ValueFromPipeline = true)] @@ -17,6 +18,9 @@ namespace PSInfisicalAPI.Cmdlets [Parameter] public InfisicalDuplicateKeyBehavior DuplicateKeyBehavior { get; set; } = InfisicalDuplicateKeyBehavior.Error; + [Parameter] + public SwitchParameter AsPlainText { get; set; } + private readonly List _buffer = new List(); protected override void ProcessRecord() @@ -36,36 +40,50 @@ namespace PSInfisicalAPI.Cmdlets { try { - Dictionary dictionary = new Dictionary(StringComparer.OrdinalIgnoreCase); - - foreach (InfisicalSecret secret in _buffer) + if (AsPlainText.IsPresent) { - string key = secret.SecretName ?? string.Empty; - - if (dictionary.ContainsKey(key)) - { - if (DuplicateKeyBehavior == InfisicalDuplicateKeyBehavior.Error) - { - throw new InfisicalConfigurationException(string.Concat("Duplicate secret name encountered: ", key)); - } - - if (DuplicateKeyBehavior == InfisicalDuplicateKeyBehavior.LastWins) - { - dictionary[key] = secret.SecretValue; - } - - continue; - } - - dictionary[key] = secret.SecretValue; + Dictionary plain = BuildDictionary(secret => secret.GetPlainTextValue()); + WriteObject(plain); + } + else + { + Dictionary secure = BuildDictionary(secret => secret.SecretValue); + WriteObject(secure); } - - WriteObject(dictionary); } catch (Exception exception) { ThrowTerminatingForException("ConvertToInfisicalSecretDictionaryCmdlet", "ConvertToDictionary", exception); } } + + private Dictionary BuildDictionary(Func valueSelector) + { + Dictionary dictionary = new Dictionary(StringComparer.OrdinalIgnoreCase); + + foreach (InfisicalSecret secret in _buffer) + { + string key = secret.SecretName ?? string.Empty; + + if (dictionary.ContainsKey(key)) + { + if (DuplicateKeyBehavior == InfisicalDuplicateKeyBehavior.Error) + { + throw new InfisicalConfigurationException(string.Concat("Duplicate secret name encountered: ", key)); + } + + if (DuplicateKeyBehavior == InfisicalDuplicateKeyBehavior.LastWins) + { + dictionary[key] = valueSelector(secret); + } + + continue; + } + + dictionary[key] = valueSelector(secret); + } + + return dictionary; + } } } diff --git a/src/PSInfisicalAPI/Models/InfisicalSecret.cs b/src/PSInfisicalAPI/Models/InfisicalSecret.cs index 0fee725..0d2abf5 100644 --- a/src/PSInfisicalAPI/Models/InfisicalSecret.cs +++ b/src/PSInfisicalAPI/Models/InfisicalSecret.cs @@ -34,6 +34,12 @@ namespace PSInfisicalAPI.Models SecureStringUtility.UsePlainText(SecretValue, action); } + public string GetPlainTextValue() + { + if (SecretValue == null) { return null; } + return SecureStringUtility.UsePlainText(SecretValue, plainText => plainText); + } + public override string ToString() { return SecretName;