48 lines
1.6 KiB
PowerShell
48 lines
1.6 KiB
PowerShell
function Assert-ConfigurationDataSecretReference {
|
|
[CmdletBinding()]
|
|
Param(
|
|
[Parameter(Mandatory=$true)]
|
|
[string]
|
|
$Name,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[ValidateSet("credential", "securestring")]
|
|
[string]
|
|
$TypeName,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
$Value
|
|
)
|
|
|
|
if(-not (Test-ConfigurationDataMap -Value $Value)){
|
|
return
|
|
}
|
|
|
|
if(-not (Test-ConfigurationDataMapContainsKey -Map $Value -Key "Provider")){
|
|
throw "Parameter [$Name] uses type [$TypeName] and a secret reference, but [Provider] is not defined."
|
|
}
|
|
|
|
if(-not (Test-ConfigurationDataMapContainsKey -Map $Value -Key "Name")){
|
|
throw "Parameter [$Name] uses type [$TypeName] and a secret reference, but [Name] is not defined."
|
|
}
|
|
|
|
$Provider = [string](Get-ConfigurationDataMapValue -Map $Value -Key "Provider")
|
|
if([string]::IsNullOrWhiteSpace($Provider)){
|
|
throw "Parameter [$Name] secret reference [Provider] must not be empty."
|
|
}
|
|
|
|
$SecretName = [string](Get-ConfigurationDataMapValue -Map $Value -Key "Name")
|
|
if([string]::IsNullOrWhiteSpace($SecretName)){
|
|
throw "Parameter [$Name] secret reference [Name] must not be empty."
|
|
}
|
|
|
|
$ProviderDefinition = Get-ConfigurationDataSecretProvider -Name $Provider
|
|
if($null -eq $ProviderDefinition){
|
|
throw "Parameter [$Name] uses unsupported secret provider [$Provider]."
|
|
}
|
|
|
|
if($ProviderDefinition.SupportedTypes -notcontains $TypeName.ToLowerInvariant()){
|
|
throw "Parameter [$Name] uses provider [$Provider], but it does not support type [$TypeName]."
|
|
}
|
|
}
|