# generate-keys.ps1 # Generates RSA 2048 key pair for JWT RS256 signing # Requires: PowerShell 7+ (pwsh) # Usage: pwsh -File scripts/generate-keys.ps1 # Keys are written to src/api/SIGCM2.Api/keys/ (gitignored) $keysDir = Join-Path $PSScriptRoot "..\src\api\SIGCM2.Api\keys" $keysDir = [System.IO.Path]::GetFullPath($keysDir) if (-not (Test-Path $keysDir)) { New-Item -ItemType Directory -Path $keysDir | Out-Null } $privatePath = Join-Path $keysDir "private.pem" $publicPath = Join-Path $keysDir "public.pem" $rsa = [System.Security.Cryptography.RSA]::Create(2048) $priv = $rsa.ExportRSAPrivateKeyPem() $pub = $rsa.ExportRSAPublicKeyPem() $rsa.Dispose() Set-Content -Path $privatePath -Value $priv -Encoding UTF8 -NoNewline Set-Content -Path $publicPath -Value $pub -Encoding UTF8 -NoNewline Write-Host "RSA 2048 key pair generated:" Write-Host " Private: $privatePath" Write-Host " Public: $publicPath" Write-Host "" Write-Host "IMPORTANT: These files are gitignored. Regenerate on each dev machine." Write-Host "For production: set env vars JWT__PrivateKey and JWT__PublicKey (PEM content)."