8 changed files with 184 additions and 160 deletions
@ -1,56 +1,61 @@ |
|||||||
[cmdletbinding()] |
# ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
||||||
param( |
|
||||||
[Parameter(Mandatory=$true)] |
|
||||||
[string] $filename |
|
||||||
) |
|
||||||
|
|
||||||
|
function ParameterDefinitions { |
||||||
|
param( |
||||||
if (($filename.length -eq 0) -or -not (test-path $filename)) { |
[Parameter(Mandatory)][string] $filename, |
||||||
write-host "file $filename not found" |
[Parameter(ValueFromRemainingArguments)] $opts |
||||||
exit 1 |
) |
||||||
} |
|
||||||
$cert = Get-ChildItem -path Cert:\LocalMachine\My -CodeSigningCert | where {$_.subject -eq "CN=punkshell local"} | Select-Object -First 1 |
|
||||||
if ($cert.length -eq 0) { |
|
||||||
write-host "No self signing certificate found (Cert:\LocalMachine\My)" |
|
||||||
exit 2 |
|
||||||
} |
} |
||||||
|
# see also https://vcsjones.dev/subject-interface-packages/ |
||||||
|
# ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
||||||
|
function psmain { |
||||||
|
[CmdletBinding()] |
||||||
|
#Empty param block (extra params can be added) |
||||||
|
param() |
||||||
|
dynamicparam { GetDynamicParamDictionary ParameterDefinitions } |
||||||
|
process { |
||||||
|
#Called once - we get a single item being our PSBoundParameters dictionary |
||||||
|
write-host "Bound Parameters:$($PSBoundParameters)" |
||||||
|
switch ($PSBoundParameters.keys) { |
||||||
|
'filename' { |
||||||
|
write-host "got filename " $PSBoundParameters.filename |
||||||
|
Set-Variable -Name $_ -Value $PSBoundParameters."$_" |
||||||
|
if (($filename.length -eq 0) -or -not (test-path $filename)) { |
||||||
|
write-host "file $filename not found" |
||||||
|
exit 1 |
||||||
|
} |
||||||
|
} |
||||||
|
'opts' { |
||||||
|
write-warning "Unused parameters: $($PSBoundParameters.$_)" |
||||||
|
} |
||||||
|
Default { |
||||||
|
write-warning "Unhandled parameter -> [$($_)]" |
||||||
|
} |
||||||
|
} |
||||||
|
foreach ($boundparam in $PSBoundParameters.GetEnumerator()) { |
||||||
|
|
||||||
echo "Using Certificate" |
} |
||||||
echo $cert | select FriendlyName,Thumbprint,Subject,NotAfter |
} |
||||||
echo "Processing $filename ..." |
end { |
||||||
Set-AuthenticodeSignature -FilePath $filename -Certificate $cert |
# PSBoundParameters |
||||||
|
write-host "filename:'$filename'" |
||||||
|
|
||||||
echo "-done-" |
$cert = Get-ChildItem -path Cert:\LocalMachine\My -CodeSigningCert | Where-Object {$_.subject -eq "CN=punkshell local"} | Select-Object -First 1 |
||||||
# SIG # Begin signature block |
if ($cert.length -eq 0) { |
||||||
# MIIFkgYJKoZIhvcNAQcCoIIFgzCCBX8CAQExDzANBglghkgBZQMEAgEFADB5Bgor |
write-host "No self signing certificate found (Cert:\LocalMachine\My)" |
||||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG |
exit 2 |
||||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCfgqqTvE/X4m/K |
} |
||||||
# UC7uGTV6Lz+BDJQsjeZDk0vmylnQmaCCAwgwggMEMIIB7KADAgECAhBETzeKK6w7 |
write-host "Using Certificate" |
||||||
# vkayhsNPPi+IMA0GCSqGSIb3DQEBBQUAMBoxGDAWBgNVBAMMD3B1bmtzaGVsbCBs |
write-host $cert | Select-Object FriendlyName,Thumbprint,Subject,NotAfter |
||||||
# b2NhbDAeFw0yNDAxMTIxMTE1MTBaFw0yOTAxMTIxMTI1MTBaMBoxGDAWBgNVBAMM |
write-host "Processing '$filename' ..." |
||||||
# D3B1bmtzaGVsbCBsb2NhbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB |
try { |
||||||
# AMoQ58xHVHwNmqM3hb6KsBAYYalFJliY189Y+oNMHtgPbDuUae0Tcd79yssV4hqp |
Write-Host $(Set-AuthenticodeSignature -FilePath $filename -Certificate $cert) |
||||||
# ZnK4f45Jbs7+SUyqoGtHyXrzhtHUFdFb8yC4T8ET2V46ddFB/JyPDUWdJikT2Erc |
} catch { |
||||||
# Gw5/4Ag7X8P6TVMkGSaVM0T+h8kBHkzG5CTpwsOP+wMSGStcZTvyon67D3CKnY78 |
throw $_.Exception.Message |
||||||
# JOmovfhj97eo8oU5AWGbYEPXBmaS+xqWJeU/eX/egMECbo9kT9Y0WQk+2axqZyeL |
} |
||||||
# p2+xsvmiNpLn1i0g+NzWUxNp5ibTr2rOm0jW3vh3NklCbjby2IvjukzuszeOU9sc |
|
||||||
# qXK6+vdAMRMS/x2/whnrErUCAwEAAaNGMEQwDgYDVR0PAQH/BAQDAgeAMBMGA1Ud |
write-host "-done-" |
||||||
# JQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBQ4K5GVCXhCnD89VKgNQsGS8r6iiDAN |
return $PSBoundParameters |
||||||
# BgkqhkiG9w0BAQUFAAOCAQEAgBTOVp+g96oaDjc+j9boUziG6aihKlVY3ic5uOcB |
} |
||||||
# Rqo6/kfSWzA/DisXWhPgwxrTq3ByPULLOpNNnzsQ8IDN6WH4psv5PvrT01jFcib7 |
} |
||||||
# H+vDMYQl+7vDgLcqXczWjDHni56uABjM/1A4WdEJ8tpgP+XqwGkWPlKHHrp+bSgF |
write-host (psmain @args) |
||||||
# 9aCw4h1HkgBzaFnsCHMNIQT7YkFW+CfBnp/b/irsGUj/Pp63GLfFrgkcgwCPRBvN |
|
||||||
# LHI6rAX3iF8Yfpoka0lD1Ay/SEPWB8Oz8MEz2RQr+ELx9mKJHk/NBED+auKnInV1 |
|
||||||
# j7bOgw+xsmgtD0KSDJskk4YfZFwgLyrrbi+oIUAj3f3uGTGCAeAwggHcAgEBMC4w |
|
||||||
# GjEYMBYGA1UEAwwPcHVua3NoZWxsIGxvY2FsAhBETzeKK6w7vkayhsNPPi+IMA0G |
|
||||||
# CWCGSAFlAwQCAQUAoIGEMBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZI |
|
||||||
# hvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcC |
|
||||||
# ARUwLwYJKoZIhvcNAQkEMSIEICYgJa5n+ggz59/w10kxjaOomvLdZOkcbtudjrZZ |
|
||||||
# KaZmMA0GCSqGSIb3DQEBAQUABIIBAMmaBSwgOjbUmp4NgCYONonMWrZuyX88AcEq |
|
||||||
# 9MxbFLu+0OMpEYlK/AUWnWCeTDl8zN4Wcn8E44Rz15xgKjAoZVVnG3L6gGCcBqCd |
|
||||||
# qDtgrifr7UZJ2gn0j9n9PyUXmHQ1ovWvNSQNOFF08Ul21HooFgGTRc67Ea90rFGN |
|
||||||
# Bnz37c85AVSYpbvzEGx1SZ537CpfizQRyAiXJyTEyZNH8VPjaYvJPqL0qWak+hZV |
|
||||||
# x2Kb1IUbpG/oKpzZk+dohlbYNtADz7JaPVLZXIoec6GxvvSbVNqiDly1F6L89dZ3 |
|
||||||
# TcjFEYK1LXUP+h0p4QJK0iZfWxrjtHhb2PCQECsw7rPDxlm4wlw= |
|
||||||
# SIG # End signature block |
|
||||||
|
|||||||
@ -0,0 +1,16 @@ |
|||||||
|
|
||||||
|
[application] |
||||||
|
template="punk.multishell.cmd" |
||||||
|
as_admin=true |
||||||
|
|
||||||
|
scripts=[ |
||||||
|
"selfsign.ps1", |
||||||
|
] |
||||||
|
|
||||||
|
default_outputfile="selfsign.cmd" |
||||||
|
default_nextshellpath="pwsh" |
||||||
|
default_nextshelltype="powershell" |
||||||
|
|
||||||
|
win32.nextshellpath="pwsh" |
||||||
|
win32.nextshelltype="powershell" |
||||||
|
win32.outputfile="selfsign.cmd" |
||||||
Loading…
Reference in new issue