@@ -0,0 +1,42 @@
|
||||
# Interactive: encrypt a Git token with Windows DPAPI (CurrentUser).
|
||||
# Run in the user's own terminal. Never print the token.
|
||||
|
||||
param(
|
||||
[switch]$Force
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
. (Join-Path $PSScriptRoot 'common.ps1')
|
||||
|
||||
Ensure-GitSkillsHome
|
||||
|
||||
if ((Test-Path -LiteralPath $script:TokenPath) -and -not $Force) {
|
||||
$answer = Read-Host 'Encrypted token already exists. Overwrite? (y/N)'
|
||||
if ($answer -notmatch '^[Yy]$') {
|
||||
Write-StatusLine -Key 'status' -Value 'unchanged'
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
$secure = Read-Host 'Paste Gitea access token (input hidden)' -AsSecureString
|
||||
if ($secure.Length -lt 1) {
|
||||
throw 'Token is empty.'
|
||||
}
|
||||
|
||||
$plain = $null
|
||||
try {
|
||||
$plain = ConvertFrom-SecureStringPlain -Secure $secure
|
||||
if ([string]::IsNullOrWhiteSpace($plain)) {
|
||||
throw 'Token is empty.'
|
||||
}
|
||||
$protected = Protect-SecretString -PlainText $plain
|
||||
[System.IO.File]::WriteAllBytes($script:TokenPath, $protected)
|
||||
}
|
||||
finally {
|
||||
$plain = $null
|
||||
$protected = $null
|
||||
}
|
||||
|
||||
Write-StatusLine -Key 'status' -Value 'saved'
|
||||
Write-StatusLine -Key 'path' -Value $script:TokenPath
|
||||
Write-Output 'token=hidden'
|
||||
Reference in New Issue
Block a user