Add support for SecretManagement and SecretStore providers, enhance configuration data handling, and introduce new utility functions
This commit is contained in:
51
Private/Resolve-ConfigurationDataProviderSecureString.ps1
Normal file
51
Private/Resolve-ConfigurationDataProviderSecureString.ps1
Normal file
@@ -0,0 +1,51 @@
|
||||
function Resolve-ConfigurationDataProviderSecureString {
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
$Value
|
||||
)
|
||||
|
||||
if($Value -is [System.Security.SecureString]){
|
||||
return $Value
|
||||
}
|
||||
|
||||
if($Value -is [string]){
|
||||
return ConvertTo-SecureString -String $Value -AsPlainText -Force
|
||||
}
|
||||
|
||||
if(-not (Test-ConfigurationDataMap -Value $Value)){
|
||||
throw "Provider secure string value must be a SecureString, string, or hashtable."
|
||||
}
|
||||
|
||||
if(Test-ConfigurationDataMapContainsKey -Map $Value -Key "EnvironmentVariable"){
|
||||
$VariableName = [string](Get-ConfigurationDataMapValue -Map $Value -Key "EnvironmentVariable")
|
||||
$EnvironmentValue = [Environment]::GetEnvironmentVariable($VariableName)
|
||||
if([string]::IsNullOrEmpty($EnvironmentValue)){
|
||||
throw "Environment variable [$VariableName] is not defined or empty."
|
||||
}
|
||||
|
||||
return ConvertTo-SecureString -String $EnvironmentValue -AsPlainText -Force
|
||||
}
|
||||
|
||||
if(Test-ConfigurationDataMapContainsKey -Map $Value -Key "ProtectedValue"){
|
||||
$ProtectedValue = [string](Get-ConfigurationDataMapValue -Map $Value -Key "ProtectedValue")
|
||||
$Key = $null
|
||||
|
||||
if(Test-ConfigurationDataMapContainsKey -Map $Value -Key "Key"){
|
||||
$Key = [Convert]::FromBase64String([string](Get-ConfigurationDataMapValue -Map $Value -Key "Key"))
|
||||
}elseif(Test-ConfigurationDataMapContainsKey -Map $Value -Key "KeyPath"){
|
||||
$KeyPath = [string](Get-ConfigurationDataMapValue -Map $Value -Key "KeyPath")
|
||||
if(-not (Test-Path -Path $KeyPath -PathType Leaf)){
|
||||
throw "Secure string key file [$KeyPath] was not found."
|
||||
}
|
||||
|
||||
$Key = [Convert]::FromBase64String((Get-Content -Path $KeyPath -Raw).Trim())
|
||||
}else{
|
||||
throw "Protected provider secure string requires [Key] or [KeyPath]."
|
||||
}
|
||||
|
||||
return ConvertTo-SecureString -String $ProtectedValue -Key $Key
|
||||
}
|
||||
|
||||
throw "Unsupported provider secure string reference."
|
||||
}
|
||||
Reference in New Issue
Block a user