8 changed files with 184 additions and 160 deletions
@ -1,56 +1,61 @@
|
||||
[cmdletbinding()] |
||||
# ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
||||
|
||||
function ParameterDefinitions { |
||||
param( |
||||
[Parameter(Mandatory=$true)] |
||||
[string] $filename |
||||
[Parameter(Mandatory)][string] $filename, |
||||
[Parameter(ValueFromRemainingArguments)] $opts |
||||
) |
||||
|
||||
|
||||
|
||||
} |
||||
# 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 |
||||
} |
||||
$cert = Get-ChildItem -path Cert:\LocalMachine\My -CodeSigningCert | where {$_.subject -eq "CN=punkshell local"} | Select-Object -First 1 |
||||
} |
||||
'opts' { |
||||
write-warning "Unused parameters: $($PSBoundParameters.$_)" |
||||
} |
||||
Default { |
||||
write-warning "Unhandled parameter -> [$($_)]" |
||||
} |
||||
} |
||||
foreach ($boundparam in $PSBoundParameters.GetEnumerator()) { |
||||
|
||||
} |
||||
} |
||||
end { |
||||
# PSBoundParameters |
||||
write-host "filename:'$filename'" |
||||
|
||||
$cert = Get-ChildItem -path Cert:\LocalMachine\My -CodeSigningCert | Where-Object {$_.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 |
||||
} |
||||
write-host "Using Certificate" |
||||
write-host $cert | Select-Object FriendlyName,Thumbprint,Subject,NotAfter |
||||
write-host "Processing '$filename' ..." |
||||
try { |
||||
Write-Host $(Set-AuthenticodeSignature -FilePath $filename -Certificate $cert) |
||||
} catch { |
||||
throw $_.Exception.Message |
||||
} |
||||
|
||||
echo "Using Certificate" |
||||
echo $cert | select FriendlyName,Thumbprint,Subject,NotAfter |
||||
echo "Processing $filename ..." |
||||
Set-AuthenticodeSignature -FilePath $filename -Certificate $cert |
||||
|
||||
echo "-done-" |
||||
# SIG # Begin signature block |
||||
# MIIFkgYJKoZIhvcNAQcCoIIFgzCCBX8CAQExDzANBglghkgBZQMEAgEFADB5Bgor |
||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG |
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCfgqqTvE/X4m/K |
||||
# UC7uGTV6Lz+BDJQsjeZDk0vmylnQmaCCAwgwggMEMIIB7KADAgECAhBETzeKK6w7 |
||||
# vkayhsNPPi+IMA0GCSqGSIb3DQEBBQUAMBoxGDAWBgNVBAMMD3B1bmtzaGVsbCBs |
||||
# b2NhbDAeFw0yNDAxMTIxMTE1MTBaFw0yOTAxMTIxMTI1MTBaMBoxGDAWBgNVBAMM |
||||
# D3B1bmtzaGVsbCBsb2NhbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB |
||||
# AMoQ58xHVHwNmqM3hb6KsBAYYalFJliY189Y+oNMHtgPbDuUae0Tcd79yssV4hqp |
||||
# ZnK4f45Jbs7+SUyqoGtHyXrzhtHUFdFb8yC4T8ET2V46ddFB/JyPDUWdJikT2Erc |
||||
# Gw5/4Ag7X8P6TVMkGSaVM0T+h8kBHkzG5CTpwsOP+wMSGStcZTvyon67D3CKnY78 |
||||
# JOmovfhj97eo8oU5AWGbYEPXBmaS+xqWJeU/eX/egMECbo9kT9Y0WQk+2axqZyeL |
||||
# p2+xsvmiNpLn1i0g+NzWUxNp5ibTr2rOm0jW3vh3NklCbjby2IvjukzuszeOU9sc |
||||
# qXK6+vdAMRMS/x2/whnrErUCAwEAAaNGMEQwDgYDVR0PAQH/BAQDAgeAMBMGA1Ud |
||||
# JQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBQ4K5GVCXhCnD89VKgNQsGS8r6iiDAN |
||||
# BgkqhkiG9w0BAQUFAAOCAQEAgBTOVp+g96oaDjc+j9boUziG6aihKlVY3ic5uOcB |
||||
# Rqo6/kfSWzA/DisXWhPgwxrTq3ByPULLOpNNnzsQ8IDN6WH4psv5PvrT01jFcib7 |
||||
# H+vDMYQl+7vDgLcqXczWjDHni56uABjM/1A4WdEJ8tpgP+XqwGkWPlKHHrp+bSgF |
||||
# 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 |
||||
write-host "-done-" |
||||
return $PSBoundParameters |
||||
} |
||||
} |
||||
write-host (psmain @args) |
||||
|
||||
@ -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