param( [string]$KeyDirectory = (Join-Path $env:USERPROFILE '.zombie_buddy\signing\Riggs0'), [string]$SteamID64 = '76561198079674652', [switch]$Initialize ) $ErrorActionPreference='Stop' $signer=Join-Path $PSScriptRoot 'tools\SignZBS.java' if($Initialize) { if(Test-Path -LiteralPath (Join-Path $KeyDirectory 'author.properties')) {throw 'Signing identity already configured.'} New-Item -ItemType Directory -Force -Path $KeyDirectory | Out-Null $identity=[Security.Principal.WindowsIdentity]::GetCurrent().User $acl=[Security.AccessControl.DirectorySecurity]::new() $acl.SetOwner($identity) $acl.SetAccessRuleProtection($true,$false) $inherit=[Security.AccessControl.InheritanceFlags]'ContainerInherit,ObjectInherit' $propagate=[Security.AccessControl.PropagationFlags]::None $allow=[Security.AccessControl.AccessControlType]::Allow $acl.AddAccessRule([Security.AccessControl.FileSystemAccessRule]::new($identity,'FullControl',$inherit,$propagate,$allow)) $system=[Security.Principal.SecurityIdentifier]::new('S-1-5-18') $acl.AddAccessRule([Security.AccessControl.FileSystemAccessRule]::new($system,'FullControl',$inherit,$propagate,$allow)) Set-Acl -LiteralPath $KeyDirectory -AclObject $acl & java $signer init $KeyDirectory $SteamID64 if($LASTEXITCODE -ne 0) {throw 'Signing identity initialization failed.'} } $info=Get-Content -LiteralPath (Join-Path $PSScriptRoot 'common\mod.info') $jarEntry=($info | Where-Object {$_ -match '^javaJarFile='}) -replace '^javaJarFile=','' $jar=Join-Path $PSScriptRoot ('42.20\'+$jarEntry) & java $signer sign $KeyDirectory $jar if($LASTEXITCODE -ne 0) {throw 'JAR signing failed.'} Copy-Item -LiteralPath (Join-Path $KeyDirectory 'public-profile-key.txt') -Destination (Join-Path $PSScriptRoot 'ZombieBuddy-public-key.txt') -Force