Browse Source

scriptapps misc

master
Julian Noble 2 weeks ago
parent
commit
551c993c22
  1. 109
      src/scriptapps/SELFSIGN.PS1
  2. 2
      src/scriptapps/punk.tcl
  3. 16
      src/scriptapps/selfsign_wrap.toml
  4. 15
      src/scriptapps/tcltm.tcl

109
src/scriptapps/SELFSIGN.PS1

@ -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

2
src/scriptapps/punk.tcl

@ -15,7 +15,7 @@ if {[file tail $dirname] eq "bin"} {
set vfsfolder [file normalize [file join $dirname "../src/_build/punk86${ext}.vfs"]] set vfsfolder [file normalize [file join $dirname "../src/_build/punk86${ext}.vfs"]]
} }
9 { 9 {
set vfsfolder [file normalize [file join $dirname "../src/_build/punk9cook${ext}.vfs"]] set vfsfolder [file normalize [file join $dirname "../src/_build/punk902z${ext}.vfs"]]
} }
default { default {
error "no vfs available for tcl major version $tclmajorv" error "no vfs available for tcl major version $tclmajorv"

16
src/scriptapps/selfsign_wrap.toml

@ -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"

15
src/scriptapps/tcltm.tcl

@ -1,13 +1,14 @@
if { ![package vsatisfies [package provide Tcl] 8.5] } {puts stdout "Tcl: >= 8.5 is required"; return} if { ![package vsatisfies [package provide Tcl] 8.5-] } {puts stdout "Tcl: >= 8.5 is required"; return}
if { ![package vsatisfies [package require sha1] 2.0.3] } {puts stdout "sha1: >= 2.0.3 is required"; return} if { ![package vsatisfies [package require sha1] 2.0.3-] } {puts stdout "sha1: >= 2.0.3 is required"; return}
if { ![package vsatisfies [package require yaml] 0.3.6] } {puts stdout "yaml: >= 0.3.6 is required"; return} if { ![package vsatisfies [package require yaml] 0.3.6-] } {puts stdout "yaml: >= 0.3.6 is required"; return}
namespace eval ::tcltm::binary { namespace eval ::tcltm::binary {
proc readfile { dir file } { proc readfile { dir file } {
set b [open [file normalize [filename $dir $file]]] set b [open [file normalize [filename $dir $file]]]
fconfigure $b -translation binary fconfigure $b -translation binary
fconfigure $b -encoding binary #fconfigure $b -encoding binary
fconfigure $b -encoding iso8859-1
set data [read $b] set data [read $b]
close $b close $b
return $data return $data
@ -233,7 +234,8 @@ namespace eval ::tcltm::binary {
} }
set fh [open $tmp w] set fh [open $tmp w]
fconfigure $fh -translation binary fconfigure $fh -translation binary
fconfigure $fh -encoding binary #fconfigure $fh -encoding binary
fconfigure $fh -encoding iso8859-1
puts -nonewline $fh [string range $bindata $bindex [incr bindex [dict get $finfo SIZE]]-1] puts -nonewline $fh [string range $bindata $bindex [incr bindex [dict get $finfo SIZE]]-1]
flush $fh flush $fh
close $fh close $fh
@ -668,7 +670,8 @@ namespace eval ::tcltm {
set res [dict create] set res [dict create]
set b [open $f] set b [open $f]
fconfigure $b -translation binary fconfigure $b -translation binary
fconfigure $b -encoding binary #fconfigure $b -encoding binary
fconfigure $b -encoding iso8859-1
set data [read $b] set data [read $b]
close $b close $b
set pkgs [list] set pkgs [list]

Loading…
Cancel
Save