#compdef sh4d0wup

autoload -U is-at-least

_sh4d0wup() {
    typeset -A opt_args
    typeset -a _arguments_options
    local ret=1

    if is-at-least 5.2; then
        _arguments_options=(-s -S -C)
    else
        _arguments_options=(-s -C)
    fi

    local context curcontext="$curcontext" state line
    _arguments "${_arguments_options[@]}" : \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
'-V[Print version]' \
'--version[Print version]' \
":: :_sh4d0wup_commands" \
"*::: :->sh4d0wup" \
&& ret=0
    case $state in
    (sh4d0wup)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-command-$line[1]:"
        case $line[1] in
            (bait)
_arguments "${_arguments_options[@]}" : \
'--cache-from=[Use artifacts from compiled plot as download cache]:CACHE_FROM:_files' \
'-B+[Address to bind to]:ADDR:_default' \
'--addr=[Address to bind to]:ADDR:_default' \
'--cert=[Path to certificate file (enables https)]:CERT:_files' \
'--key=[Path to certificate private key (if not bundled with the cert)]:KEY:_files' \
'-n[Setup the attack but exit instead of serving requests]' \
'--no-bind[Setup the attack but exit instead of serving requests]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- Path to the plot to execute:_files' \
&& ret=0
;;
(front)
_arguments "${_arguments_options[@]}" : \
'-U+[The upstream server to reverse proxy to]:UPSTREAM:_default' \
'--upstream=[The upstream server to reverse proxy to]:UPSTREAM:_default' \
'-B+[Address to bind to]:ADDR:_default' \
'--addr=[Address to bind to]:ADDR:_default' \
'--cert=[Path to certificate file (enables https)]:CERT:_files' \
'--key=[Path to certificate private key (if not bundled with the cert)]:KEY:_files' \
'-n[Setup the attack but exit instead of serving requests]' \
'--no-bind[Setup the attack but exit instead of serving requests]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(infect)
_arguments "${_arguments_options[@]}" : \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
":: :_sh4d0wup__infect_commands" \
"*::: :->infect" \
&& ret=0

    case $state in
    (infect)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-infect-command-$line[1]:"
        case $line[1] in
            (pacman)
_arguments "${_arguments_options[@]}" : \
'*--set=[Update a key in .PKGINFO (a key can be set multiple times)]:SET:_default' \
'-c+[The command to inject into the package that'\''s executed once during install]:PAYLOAD:_default' \
'--payload=[The command to inject into the package that'\''s executed once during install]:PAYLOAD:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input package to use as a base:_files' \
':out -- Where to write the modified package to:_files' \
&& ret=0
;;
(deb)
_arguments "${_arguments_options[@]}" : \
'*--set=[Update a key in ./control]:SET:_default' \
'-c+[The command to inject into the package that'\''s executed once during install]:PAYLOAD:_default' \
'--payload=[The command to inject into the package that'\''s executed once during install]:PAYLOAD:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input package to use as a base:_files' \
':out -- Where to write the modified package to:_files' \
&& ret=0
;;
(oci)
_arguments "${_arguments_options[@]}" : \
'--entrypoint-hash-len=[Configure the length of the entrypoint hash, longer names are less likely to collide but more noticable]:ENTRYPOINT_HASH_LEN:_default' \
'--entrypoint=[Write the entrypoint to a fixed location instead of a random one]:ENTRYPOINT:_default' \
'-c+[The command to inject into the package that'\''s executed once during install]:PAYLOAD:_default' \
'--payload=[The command to inject into the package that'\''s executed once during install]:PAYLOAD:_default' \
'*-t+[Change the tags of the modified images]:TAGS:_default' \
'*--tag=[Change the tags of the modified images]:TAGS:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input package to use as a base:_files' \
':out -- Where to write the modified package to:_files' \
&& ret=0
;;
(apk)
_arguments "${_arguments_options[@]}" : \
'*--set=[Update a key in .PKGINFO (a key can be set multiple times)]:SET:_default' \
'-S+[Path to the key to sign the package with]:SIGNING_KEY:_files' \
'--signing-key=[Path to the key to sign the package with]:SIGNING_KEY:_files' \
'-N+[The name of the signing key (eg. alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub)]:SIGNING_KEY_NAME:_default' \
'--signing-key-name=[The name of the signing key (eg. alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub)]:SIGNING_KEY_NAME:_default' \
'-c+[The command to inject into the package that'\''s executed once during install]:PAYLOAD:_default' \
'--payload=[The command to inject into the package that'\''s executed once during install]:PAYLOAD:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input package to use as a base:_files' \
':out -- Where to write the modified package to:_files' \
&& ret=0
;;
(elf)
_arguments "${_arguments_options[@]}" : \
'-B+[The codegen backend that should be used to compile a binary]:BACKEND:(c go rust rust-nostd)' \
'--backend=[The codegen backend that should be used to compile a binary]:BACKEND:(c go rust rust-nostd)' \
'-t+[Specify the target architecture, not supported by all backends yet]:TARGET:_default' \
'--target=[Specify the target architecture, not supported by all backends yet]:TARGET:_default' \
'-c+[The command to inject into the binary]:PAYLOAD:_default' \
'--payload=[The command to inject into the binary]:PAYLOAD:_default' \
'-e+[Spawn an embedded elf binary instead of executing a shell command]:ELF:_default' \
'--elf=[Spawn an embedded elf binary instead of executing a shell command]:ELF:_default' \
'--assume-path=[Instead of detecting the local path with readlink(/proc/self/exe), hard-code a value]:ASSUME_PATH:_default' \
'--self-replace[Instead of unpacking to memory, replace the binary on disk with the input executable]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input executable to bind to:_files' \
':out -- Where to write the modified executable to:_files' \
&& ret=0
;;
(elf-fwd-stdin)
_arguments "${_arguments_options[@]}" : \
'--exec=[The binary that should be executed, defaults to /bin/sh]:EXEC:_default' \
'*--arg=[Additional arguments that should be passed to the binary. Can be used multiple times and \`argv\[0\]\` needs to be provided, if none are set then \`argv\[0\]\` defaults to the value of \`--exec\`]:ARGS:_default' \
'-B+[The codegen backend that should be used to compile a binary]:BACKEND:(c go rust rust-nostd)' \
'--backend=[The codegen backend that should be used to compile a binary]:BACKEND:(c go rust rust-nostd)' \
'-t+[Specify the target architecture, not supported by all backends yet]:TARGET:_default' \
'--target=[Specify the target architecture, not supported by all backends yet]:TARGET:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input data that should be sent to the child'\''s stdin at runtime:_files' \
':out -- Where to write the generated elf binary to:_files' \
&& ret=0
;;
(sh)
_arguments "${_arguments_options[@]}" : \
'-c+[The command to inject into the binary]:PAYLOAD:_default' \
'--payload=[The command to inject into the binary]:PAYLOAD:_default' \
'*--hook=[Names of functions our payload should be hooked into (it only executes once)]:HOOKS:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input script to infect:_files' \
':out -- Where to write the infected script to:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__infect__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-infect-help-command-$line[1]:"
        case $line[1] in
            (pacman)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(deb)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(oci)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apk)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(elf)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(elf-fwd-stdin)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(sh)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(tamper)
_arguments "${_arguments_options[@]}" : \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
":: :_sh4d0wup__tamper_commands" \
"*::: :->tamper" \
&& ret=0

    case $state in
    (tamper)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-tamper-command-$line[1]:"
        case $line[1] in
            (pacman-db)
_arguments "${_arguments_options[@]}" : \
'*--filter=[]:FILTER:_default' \
'*--set=[]:SET:_default' \
'*--exclude=[]:EXCLUDE:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input database to modify:_files' \
':out -- Path to write the patched database to:_files' \
&& ret=0
;;
(apt-release)
_arguments "${_arguments_options[@]}" : \
'*--release-set=[Patch a metadata field on the release instead of a checksum]:RELEASE_SET:_default' \
'--signing-key=[Path to signing key to sign the release with]:SIGNING_KEY:_files' \
'*--filter=[]:FILTER:_default' \
'*--set=[]:SET:_default' \
'*--exclude=[]:EXCLUDE:_default' \
'--unsigned[Skip signing the final release file]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input database to modify:_files' \
':out -- Path to write the patched database to:_files' \
&& ret=0
;;
(apt-package-list)
_arguments "${_arguments_options[@]}" : \
'*--filter=[]:FILTER:_default' \
'*--set=[]:SET:_default' \
'*--exclude=[]:EXCLUDE:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input database to modify:_files' \
':out -- Path to write the patched database to:_files' \
&& ret=0
;;
(apk-index)
_arguments "${_arguments_options[@]}" : \
'*--filter=[]:FILTER:_default' \
'*--set=[]:SET:_default' \
'*--exclude=[]:EXCLUDE:_default' \
'-S+[Path to the key to sign the package with]:SIGNING_KEY:_files' \
'--signing-key=[Path to the key to sign the package with]:SIGNING_KEY:_files' \
'-N+[The name of the signing key (eg. alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub)]:SIGNING_KEY_NAME:_default' \
'--signing-key-name=[The name of the signing key (eg. alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub)]:SIGNING_KEY_NAME:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- The input database to modify:_files' \
':out -- Path to write the patched database to:_files' \
&& ret=0
;;
(git-commit)
_arguments "${_arguments_options[@]}" : \
'--tree=[The hash of the tree object this commit should point to]:TREE:_default' \
'*--parent=[The parent commit of this commit (can be multiple)]:PARENTS:_default' \
'--author=[The author of the commit in the format \`John Doe <git@example.com> 1637076383 +0100\`]:AUTHOR:_default' \
'--committer=[The committer of the commit in the format \`John Doe <git@example.com> 1637076383 +0100\`]:COMMITTER:_default' \
'--message=[The commit message (if omitted, read from stdin)]:MESSAGE:_default' \
'--collision-prefix=[Add a nonce value to the commit and increment it until the commit object hash matches the prefix]:COLLISION_PREFIX:_default' \
'--nonce=[Add an additional value to the commit to influence the hash]:NONCE:_default' \
'--no-parents[Remove any referenced parent commits from the commit]' \
'--stdin[Read a git commit object from stdin and use it as a base]' \
'(--stdin --message)--message-stdin[Read a commit message from stdin]' \
'--strip-header[Remove the loose header to convert it into the format expected by \`git hash-object -t commit -w --stdin\`]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__tamper__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-tamper-help-command-$line[1]:"
        case $line[1] in
            (pacman-db)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apt-release)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apt-package-list)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apk-index)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(git-commit)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(keygen)
_arguments "${_arguments_options[@]}" : \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
":: :_sh4d0wup__keygen_commands" \
"*::: :->keygen" \
&& ret=0

    case $state in
    (keygen)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-keygen-command-$line[1]:"
        case $line[1] in
            (tls)
_arguments "${_arguments_options[@]}" : \
'--ecdsa[Generate a PKCS_ECDSA_P256_SHA256 keypair (default)]' \
'--ed25519[Generate a PKCS_ED25519 keypair]' \
'--rsa[Shorthand for --rsa-sha256]' \
'--rsa-sha256[Generate a PKCS_RSA_SHA256 keypair]' \
'--rsa-sha512[Generate a PKCS_RSA_SHA512 keypair]' \
'-S[Only print the generated private key]' \
'--secret-key-only[Only print the generated private key]' \
'-P[Only print the generated public key]' \
'--public-key-only[Only print the generated public key]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
'*::names:_default' \
&& ret=0
;;
(pgp)
_arguments "${_arguments_options[@]}" : \
'-S[Only print the generated private key]' \
'--secret-key-only[Only print the generated private key]' \
'-P[Only print the generated public key]' \
'--public-key-only[Only print the generated public key]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
'*::uids:_default' \
&& ret=0
;;
(ssh)
_arguments "${_arguments_options[@]}" : \
'-t+[The type of key to generate]:KEYTYPE:(rsa dsa ecdsa ed25519)' \
'--type=[The type of key to generate]:KEYTYPE:(rsa dsa ecdsa ed25519)' \
'-b+[Number of bits to use for the keypair]:BITS:_default' \
'--bits=[Number of bits to use for the keypair]:BITS:_default' \
'-S[Only print the generated private key]' \
'--secret-key-only[Only print the generated private key]' \
'-P[Only print the generated public key]' \
'--public-key-only[Only print the generated public key]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(openssl)
_arguments "${_arguments_options[@]}" : \
'-b+[Number of bits to use for the keypair]:BITS:_default' \
'--bits=[Number of bits to use for the keypair]:BITS:_default' \
'--rsa[Generate an rsa keypair]' \
'--secp256k1[Generate an secp256k1 keypair]' \
'-S[Only print the generated private key]' \
'--secret-key-only[Only print the generated private key]' \
'-P[Only print the generated public key]' \
'--public-key-only[Only print the generated public key]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(in-toto)
_arguments "${_arguments_options[@]}" : \
'-S[Only print the generated private key]' \
'--secret-key-only[Only print the generated private key]' \
'-P[Only print the generated public key]' \
'--public-key-only[Only print the generated public key]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__keygen__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-keygen-help-command-$line[1]:"
        case $line[1] in
            (tls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(pgp)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(ssh)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(openssl)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(in-toto)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(sign)
_arguments "${_arguments_options[@]}" : \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
":: :_sh4d0wup__sign_commands" \
"*::: :->sign" \
&& ret=0

    case $state in
    (sign)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-sign-command-$line[1]:"
        case $line[1] in
            (pgp-cleartext)
_arguments "${_arguments_options[@]}" : \
'-s+[Secret key to use for signing]:SECRET_KEY:_files' \
'--secret-key=[Secret key to use for signing]:SECRET_KEY:_files' \
'-b[Don'\''t use ascii armor]' \
'--binary[Don'\''t use ascii armor]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- Path to data to sign:_files' \
&& ret=0
;;
(pgp-detached)
_arguments "${_arguments_options[@]}" : \
'-s+[Secret key to use for signing]:SECRET_KEY:_files' \
'--secret-key=[Secret key to use for signing]:SECRET_KEY:_files' \
'-b[Don'\''t use ascii armor]' \
'--binary[Don'\''t use ascii armor]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- Path to data to sign:_files' \
&& ret=0
;;
(openssl)
_arguments "${_arguments_options[@]}" : \
'-s+[Secret key to use for signing]:SECRET_KEY:_files' \
'--secret-key=[Secret key to use for signing]:SECRET_KEY:_files' \
'-b[Don'\''t use ascii armor]' \
'--binary[Don'\''t use ascii armor]' \
'--md5[Use md5 hash function]' \
'--sha1[Use sha1 hash function]' \
'--sha256[Use sha256 hash function]' \
'--sha512[Use sha512 hash function]' \
'--sha3-256[Use sha3-256 hash function]' \
'--sha3-512[Use sha3-512 hash function]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- Path to data to sign:_files' \
&& ret=0
;;
(in-toto)
_arguments "${_arguments_options[@]}" : \
'-s+[Secret key to use for signing]:SECRET_KEY:_files' \
'--secret-key=[Secret key to use for signing]:SECRET_KEY:_files' \
'--name=[Identify attestation]:NAME:_default' \
'*--material=[Build input for the attestation (format\: name=/path/to/file.txt)]:MATERIAL:_default' \
'*--product=[Build output for the attestation (format\: name=/path/to/file.txt)]:PRODUCT:_default' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- Path to data to sign:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__sign__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-sign-help-command-$line[1]:"
        case $line[1] in
            (pgp-cleartext)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(pgp-detached)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(openssl)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(in-toto)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(hsm)
_arguments "${_arguments_options[@]}" : \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
":: :_sh4d0wup__hsm_commands" \
"*::: :->hsm" \
&& ret=0

    case $state in
    (hsm)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-hsm-command-$line[1]:"
        case $line[1] in
            (pgp)
_arguments "${_arguments_options[@]}" : \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
":: :_sh4d0wup__hsm__pgp_commands" \
"*::: :->pgp" \
&& ret=0

    case $state in
    (pgp)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-hsm-pgp-command-$line[1]:"
        case $line[1] in
            (access)
_arguments "${_arguments_options[@]}" : \
'-p+[The pw1 pin to unlock signing operations]:VALUE:_default' \
'--pin=[The pw1 pin to unlock signing operations]:VALUE:_default' \
'--pin-file=[Path to read pw1 pin from]:FILE:_files' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__hsm__pgp__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-hsm-pgp-help-command-$line[1]:"
        case $line[1] in
            (access)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__hsm__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-hsm-help-command-$line[1]:"
        case $line[1] in
            (pgp)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__hsm__help__pgp_commands" \
"*::: :->pgp" \
&& ret=0

    case $state in
    (pgp)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-hsm-help-pgp-command-$line[1]:"
        case $line[1] in
            (access)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(build)
_arguments "${_arguments_options[@]}" : \
'--cache-from=[Use artifacts from compiled plot as download cache]:CACHE_FROM:_files' \
'-C+[Run the build in this directory]:CONTEXT:_files' \
'--context=[Run the build in this directory]:CONTEXT:_files' \
'-o+[Output the compiled plot here]:OUTPUT:_files' \
'--output=[Output the compiled plot here]:OUTPUT:_files' \
'-n[Only load the source plot but do not process anything]' \
'--no-build[Only load the source plot but do not process anything]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- Path to the plot to execute:_files' \
&& ret=0
;;
(check)
_arguments "${_arguments_options[@]}" : \
'--cache-from=[Use artifacts from compiled plot as download cache]:CACHE_FROM:_files' \
'-B+[Address to bind to]:BIND:_default' \
'--bind=[Address to bind to]:BIND:_default' \
'--pull[Pull the image even if it already exists locally]' \
'*-n[Only load the plot but don'\''t execute it]' \
'*--no-exec[Only load the plot but don'\''t execute it]' \
'-K[Keep the container running after the test is done instead of killing it immediately]' \
'--keep[Keep the container running after the test is done instead of killing it immediately]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- Path to the plot to execute:_files' \
&& ret=0
;;
(req)
_arguments "${_arguments_options[@]}" : \
'--cache-from=[Use artifacts from compiled plot as download cache]:CACHE_FROM:_files' \
'-X+[The http method to use]:METHOD:_default' \
'--method=[The http method to use]:METHOD:_default' \
'-A+[]:AUTHORITY:_default' \
'--authority=[]:AUTHORITY:_default' \
'*-H+[]:HEADERS:_default' \
'*--header=[]:HEADERS:_default' \
'--addr=[]:ADDR:_default' \
'-r[Show the full generated response for the emulated request]' \
'--response[Show the full generated response for the emulated request]' \
'-s[Show the generated status code for the emulated request]' \
'--status[Show the generated status code for the emulated request]' \
'--headers[Show the generated headers for the emulated request]' \
'-c[Show the generated response for the emulated request]' \
'--content[Show the generated response for the emulated request]' \
'-C[When showing the response, use \`hexdump -C\`]' \
'--hexdump[When showing the response, use \`hexdump -C\`]' \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':path -- Path to the plot to execute:_files' \
':req_path -- The path of the emulated http request:_default' \
&& ret=0
;;
(completions)
_arguments "${_arguments_options[@]}" : \
'*-v[Increase logging output (can be used multiple times)]' \
'*--verbose[Increase logging output (can be used multiple times)]' \
'*-q[Reduce logging output (can be used multiple times)]' \
'*--quiet[Reduce logging output (can be used multiple times)]' \
'-h[Print help]' \
'--help[Print help]' \
':shell:(bash elvish fish powershell zsh)' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-help-command-$line[1]:"
        case $line[1] in
            (bait)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(front)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(infect)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__help__infect_commands" \
"*::: :->infect" \
&& ret=0

    case $state in
    (infect)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-help-infect-command-$line[1]:"
        case $line[1] in
            (pacman)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(deb)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(oci)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apk)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(elf)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(elf-fwd-stdin)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(sh)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(tamper)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__help__tamper_commands" \
"*::: :->tamper" \
&& ret=0

    case $state in
    (tamper)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-help-tamper-command-$line[1]:"
        case $line[1] in
            (pacman-db)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apt-release)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apt-package-list)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apk-index)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(git-commit)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(keygen)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__help__keygen_commands" \
"*::: :->keygen" \
&& ret=0

    case $state in
    (keygen)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-help-keygen-command-$line[1]:"
        case $line[1] in
            (tls)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(pgp)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(ssh)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(openssl)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(in-toto)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(sign)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__help__sign_commands" \
"*::: :->sign" \
&& ret=0

    case $state in
    (sign)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-help-sign-command-$line[1]:"
        case $line[1] in
            (pgp-cleartext)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(pgp-detached)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(openssl)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(in-toto)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(hsm)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__help__hsm_commands" \
"*::: :->hsm" \
&& ret=0

    case $state in
    (hsm)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-help-hsm-command-$line[1]:"
        case $line[1] in
            (pgp)
_arguments "${_arguments_options[@]}" : \
":: :_sh4d0wup__help__hsm__pgp_commands" \
"*::: :->pgp" \
&& ret=0

    case $state in
    (pgp)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sh4d0wup-help-hsm-pgp-command-$line[1]:"
        case $line[1] in
            (access)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(build)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(check)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(req)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(completions)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
}

(( $+functions[_sh4d0wup_commands] )) ||
_sh4d0wup_commands() {
    local commands; commands=(
'bait:Start a malicious update server' \
'front:Bind a http/https server but forward everything unmodified' \
'infect:High level tampering, inject additional commands into a package' \
'tamper:Low level tampering, patch a package database to add malicious packages, cause updates or influence dependency resolution' \
'keygen:Generate signing keys with the given parameters' \
'sign:Use signing keys to generate signatures' \
'hsm:Interact with hardware signing keys' \
'build:Compile an attack based on a plot' \
'check:Check if the plot can still execute correctly against the configured image' \
'req:Emulate a http request to test routing and selectors' \
'completions:Generate shell completions' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup commands' commands "$@"
}
(( $+functions[_sh4d0wup__bait_commands] )) ||
_sh4d0wup__bait_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup bait commands' commands "$@"
}
(( $+functions[_sh4d0wup__build_commands] )) ||
_sh4d0wup__build_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup build commands' commands "$@"
}
(( $+functions[_sh4d0wup__check_commands] )) ||
_sh4d0wup__check_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup check commands' commands "$@"
}
(( $+functions[_sh4d0wup__completions_commands] )) ||
_sh4d0wup__completions_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup completions commands' commands "$@"
}
(( $+functions[_sh4d0wup__front_commands] )) ||
_sh4d0wup__front_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup front commands' commands "$@"
}
(( $+functions[_sh4d0wup__help_commands] )) ||
_sh4d0wup__help_commands() {
    local commands; commands=(
'bait:Start a malicious update server' \
'front:Bind a http/https server but forward everything unmodified' \
'infect:High level tampering, inject additional commands into a package' \
'tamper:Low level tampering, patch a package database to add malicious packages, cause updates or influence dependency resolution' \
'keygen:Generate signing keys with the given parameters' \
'sign:Use signing keys to generate signatures' \
'hsm:Interact with hardware signing keys' \
'build:Compile an attack based on a plot' \
'check:Check if the plot can still execute correctly against the configured image' \
'req:Emulate a http request to test routing and selectors' \
'completions:Generate shell completions' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup help commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__bait_commands] )) ||
_sh4d0wup__help__bait_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help bait commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__build_commands] )) ||
_sh4d0wup__help__build_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help build commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__check_commands] )) ||
_sh4d0wup__help__check_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help check commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__completions_commands] )) ||
_sh4d0wup__help__completions_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help completions commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__front_commands] )) ||
_sh4d0wup__help__front_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help front commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__help_commands] )) ||
_sh4d0wup__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help help commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__hsm_commands] )) ||
_sh4d0wup__help__hsm_commands() {
    local commands; commands=(
'pgp:Interact with pgp hardware signing keys' \
    )
    _describe -t commands 'sh4d0wup help hsm commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__hsm__pgp_commands] )) ||
_sh4d0wup__help__hsm__pgp_commands() {
    local commands; commands=(
'access:Attempt to access the hardware signing key without signing anything yet' \
    )
    _describe -t commands 'sh4d0wup help hsm pgp commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__hsm__pgp__access_commands] )) ||
_sh4d0wup__help__hsm__pgp__access_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help hsm pgp access commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__infect_commands] )) ||
_sh4d0wup__help__infect_commands() {
    local commands; commands=(
'pacman:Infect a pacman package' \
'deb:Infect a .deb package' \
'oci:Infect an OCI container image .tar' \
'apk:Infect an alpine apk package' \
'elf:Infect an elf executable' \
'elf-fwd-stdin:Convert a shell script into an elf' \
'sh:Infect a shell script' \
    )
    _describe -t commands 'sh4d0wup help infect commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__infect__apk_commands] )) ||
_sh4d0wup__help__infect__apk_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help infect apk commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__infect__deb_commands] )) ||
_sh4d0wup__help__infect__deb_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help infect deb commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__infect__elf_commands] )) ||
_sh4d0wup__help__infect__elf_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help infect elf commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__infect__elf-fwd-stdin_commands] )) ||
_sh4d0wup__help__infect__elf-fwd-stdin_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help infect elf-fwd-stdin commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__infect__oci_commands] )) ||
_sh4d0wup__help__infect__oci_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help infect oci commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__infect__pacman_commands] )) ||
_sh4d0wup__help__infect__pacman_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help infect pacman commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__infect__sh_commands] )) ||
_sh4d0wup__help__infect__sh_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help infect sh commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__keygen_commands] )) ||
_sh4d0wup__help__keygen_commands() {
    local commands; commands=(
'tls:Generate a self-signed tls certificate' \
'pgp:Generate a pgp keypair' \
'ssh:Generate an ssh keypair' \
'openssl:Generate an openssl keypair' \
'in-toto:Generate an in-toto keypair' \
    )
    _describe -t commands 'sh4d0wup help keygen commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__keygen__in-toto_commands] )) ||
_sh4d0wup__help__keygen__in-toto_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help keygen in-toto commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__keygen__openssl_commands] )) ||
_sh4d0wup__help__keygen__openssl_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help keygen openssl commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__keygen__pgp_commands] )) ||
_sh4d0wup__help__keygen__pgp_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help keygen pgp commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__keygen__ssh_commands] )) ||
_sh4d0wup__help__keygen__ssh_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help keygen ssh commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__keygen__tls_commands] )) ||
_sh4d0wup__help__keygen__tls_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help keygen tls commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__req_commands] )) ||
_sh4d0wup__help__req_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help req commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__sign_commands] )) ||
_sh4d0wup__help__sign_commands() {
    local commands; commands=(
'pgp-cleartext:Create a cleartext pgp signature' \
'pgp-detached:Create a detached pgp signature' \
'openssl:Create a digest signature with openssl' \
'in-toto:Create an in-toto attestation' \
    )
    _describe -t commands 'sh4d0wup help sign commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__sign__in-toto_commands] )) ||
_sh4d0wup__help__sign__in-toto_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help sign in-toto commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__sign__openssl_commands] )) ||
_sh4d0wup__help__sign__openssl_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help sign openssl commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__sign__pgp-cleartext_commands] )) ||
_sh4d0wup__help__sign__pgp-cleartext_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help sign pgp-cleartext commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__sign__pgp-detached_commands] )) ||
_sh4d0wup__help__sign__pgp-detached_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help sign pgp-detached commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__tamper_commands] )) ||
_sh4d0wup__help__tamper_commands() {
    local commands; commands=(
'pacman-db:Patch a pacman database' \
'apt-release:Patch an apt \`InRelease\` file' \
'apt-package-list:Patch an apt \`Packages\` file' \
'apk-index:Patch an alpine apk \`APKINDEX.tar.gz\` file' \
'git-commit:Generate a git commit from the given parameters (optionally bruteforce a hash prefix)' \
    )
    _describe -t commands 'sh4d0wup help tamper commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__tamper__apk-index_commands] )) ||
_sh4d0wup__help__tamper__apk-index_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help tamper apk-index commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__tamper__apt-package-list_commands] )) ||
_sh4d0wup__help__tamper__apt-package-list_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help tamper apt-package-list commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__tamper__apt-release_commands] )) ||
_sh4d0wup__help__tamper__apt-release_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help tamper apt-release commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__tamper__git-commit_commands] )) ||
_sh4d0wup__help__tamper__git-commit_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help tamper git-commit commands' commands "$@"
}
(( $+functions[_sh4d0wup__help__tamper__pacman-db_commands] )) ||
_sh4d0wup__help__tamper__pacman-db_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup help tamper pacman-db commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm_commands] )) ||
_sh4d0wup__hsm_commands() {
    local commands; commands=(
'pgp:Interact with pgp hardware signing keys' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup hsm commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__help_commands] )) ||
_sh4d0wup__hsm__help_commands() {
    local commands; commands=(
'pgp:Interact with pgp hardware signing keys' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup hsm help commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__help__help_commands] )) ||
_sh4d0wup__hsm__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup hsm help help commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__help__pgp_commands] )) ||
_sh4d0wup__hsm__help__pgp_commands() {
    local commands; commands=(
'access:Attempt to access the hardware signing key without signing anything yet' \
    )
    _describe -t commands 'sh4d0wup hsm help pgp commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__help__pgp__access_commands] )) ||
_sh4d0wup__hsm__help__pgp__access_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup hsm help pgp access commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__pgp_commands] )) ||
_sh4d0wup__hsm__pgp_commands() {
    local commands; commands=(
'access:Attempt to access the hardware signing key without signing anything yet' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup hsm pgp commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__pgp__access_commands] )) ||
_sh4d0wup__hsm__pgp__access_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup hsm pgp access commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__pgp__help_commands] )) ||
_sh4d0wup__hsm__pgp__help_commands() {
    local commands; commands=(
'access:Attempt to access the hardware signing key without signing anything yet' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup hsm pgp help commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__pgp__help__access_commands] )) ||
_sh4d0wup__hsm__pgp__help__access_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup hsm pgp help access commands' commands "$@"
}
(( $+functions[_sh4d0wup__hsm__pgp__help__help_commands] )) ||
_sh4d0wup__hsm__pgp__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup hsm pgp help help commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect_commands] )) ||
_sh4d0wup__infect_commands() {
    local commands; commands=(
'pacman:Infect a pacman package' \
'deb:Infect a .deb package' \
'oci:Infect an OCI container image .tar' \
'apk:Infect an alpine apk package' \
'elf:Infect an elf executable' \
'elf-fwd-stdin:Convert a shell script into an elf' \
'sh:Infect a shell script' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup infect commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__apk_commands] )) ||
_sh4d0wup__infect__apk_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect apk commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__deb_commands] )) ||
_sh4d0wup__infect__deb_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect deb commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__elf_commands] )) ||
_sh4d0wup__infect__elf_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect elf commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__elf-fwd-stdin_commands] )) ||
_sh4d0wup__infect__elf-fwd-stdin_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect elf-fwd-stdin commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help_commands] )) ||
_sh4d0wup__infect__help_commands() {
    local commands; commands=(
'pacman:Infect a pacman package' \
'deb:Infect a .deb package' \
'oci:Infect an OCI container image .tar' \
'apk:Infect an alpine apk package' \
'elf:Infect an elf executable' \
'elf-fwd-stdin:Convert a shell script into an elf' \
'sh:Infect a shell script' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup infect help commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help__apk_commands] )) ||
_sh4d0wup__infect__help__apk_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect help apk commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help__deb_commands] )) ||
_sh4d0wup__infect__help__deb_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect help deb commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help__elf_commands] )) ||
_sh4d0wup__infect__help__elf_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect help elf commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help__elf-fwd-stdin_commands] )) ||
_sh4d0wup__infect__help__elf-fwd-stdin_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect help elf-fwd-stdin commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help__help_commands] )) ||
_sh4d0wup__infect__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect help help commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help__oci_commands] )) ||
_sh4d0wup__infect__help__oci_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect help oci commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help__pacman_commands] )) ||
_sh4d0wup__infect__help__pacman_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect help pacman commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__help__sh_commands] )) ||
_sh4d0wup__infect__help__sh_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect help sh commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__oci_commands] )) ||
_sh4d0wup__infect__oci_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect oci commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__pacman_commands] )) ||
_sh4d0wup__infect__pacman_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect pacman commands' commands "$@"
}
(( $+functions[_sh4d0wup__infect__sh_commands] )) ||
_sh4d0wup__infect__sh_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup infect sh commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen_commands] )) ||
_sh4d0wup__keygen_commands() {
    local commands; commands=(
'tls:Generate a self-signed tls certificate' \
'pgp:Generate a pgp keypair' \
'ssh:Generate an ssh keypair' \
'openssl:Generate an openssl keypair' \
'in-toto:Generate an in-toto keypair' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup keygen commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__help_commands] )) ||
_sh4d0wup__keygen__help_commands() {
    local commands; commands=(
'tls:Generate a self-signed tls certificate' \
'pgp:Generate a pgp keypair' \
'ssh:Generate an ssh keypair' \
'openssl:Generate an openssl keypair' \
'in-toto:Generate an in-toto keypair' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup keygen help commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__help__help_commands] )) ||
_sh4d0wup__keygen__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen help help commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__help__in-toto_commands] )) ||
_sh4d0wup__keygen__help__in-toto_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen help in-toto commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__help__openssl_commands] )) ||
_sh4d0wup__keygen__help__openssl_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen help openssl commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__help__pgp_commands] )) ||
_sh4d0wup__keygen__help__pgp_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen help pgp commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__help__ssh_commands] )) ||
_sh4d0wup__keygen__help__ssh_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen help ssh commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__help__tls_commands] )) ||
_sh4d0wup__keygen__help__tls_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen help tls commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__in-toto_commands] )) ||
_sh4d0wup__keygen__in-toto_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen in-toto commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__openssl_commands] )) ||
_sh4d0wup__keygen__openssl_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen openssl commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__pgp_commands] )) ||
_sh4d0wup__keygen__pgp_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen pgp commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__ssh_commands] )) ||
_sh4d0wup__keygen__ssh_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen ssh commands' commands "$@"
}
(( $+functions[_sh4d0wup__keygen__tls_commands] )) ||
_sh4d0wup__keygen__tls_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup keygen tls commands' commands "$@"
}
(( $+functions[_sh4d0wup__req_commands] )) ||
_sh4d0wup__req_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup req commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign_commands] )) ||
_sh4d0wup__sign_commands() {
    local commands; commands=(
'pgp-cleartext:Create a cleartext pgp signature' \
'pgp-detached:Create a detached pgp signature' \
'openssl:Create a digest signature with openssl' \
'in-toto:Create an in-toto attestation' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup sign commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__help_commands] )) ||
_sh4d0wup__sign__help_commands() {
    local commands; commands=(
'pgp-cleartext:Create a cleartext pgp signature' \
'pgp-detached:Create a detached pgp signature' \
'openssl:Create a digest signature with openssl' \
'in-toto:Create an in-toto attestation' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup sign help commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__help__help_commands] )) ||
_sh4d0wup__sign__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign help help commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__help__in-toto_commands] )) ||
_sh4d0wup__sign__help__in-toto_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign help in-toto commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__help__openssl_commands] )) ||
_sh4d0wup__sign__help__openssl_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign help openssl commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__help__pgp-cleartext_commands] )) ||
_sh4d0wup__sign__help__pgp-cleartext_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign help pgp-cleartext commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__help__pgp-detached_commands] )) ||
_sh4d0wup__sign__help__pgp-detached_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign help pgp-detached commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__in-toto_commands] )) ||
_sh4d0wup__sign__in-toto_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign in-toto commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__openssl_commands] )) ||
_sh4d0wup__sign__openssl_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign openssl commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__pgp-cleartext_commands] )) ||
_sh4d0wup__sign__pgp-cleartext_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign pgp-cleartext commands' commands "$@"
}
(( $+functions[_sh4d0wup__sign__pgp-detached_commands] )) ||
_sh4d0wup__sign__pgp-detached_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup sign pgp-detached commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper_commands] )) ||
_sh4d0wup__tamper_commands() {
    local commands; commands=(
'pacman-db:Patch a pacman database' \
'apt-release:Patch an apt \`InRelease\` file' \
'apt-package-list:Patch an apt \`Packages\` file' \
'apk-index:Patch an alpine apk \`APKINDEX.tar.gz\` file' \
'git-commit:Generate a git commit from the given parameters (optionally bruteforce a hash prefix)' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup tamper commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__apk-index_commands] )) ||
_sh4d0wup__tamper__apk-index_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper apk-index commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__apt-package-list_commands] )) ||
_sh4d0wup__tamper__apt-package-list_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper apt-package-list commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__apt-release_commands] )) ||
_sh4d0wup__tamper__apt-release_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper apt-release commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__git-commit_commands] )) ||
_sh4d0wup__tamper__git-commit_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper git-commit commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__help_commands] )) ||
_sh4d0wup__tamper__help_commands() {
    local commands; commands=(
'pacman-db:Patch a pacman database' \
'apt-release:Patch an apt \`InRelease\` file' \
'apt-package-list:Patch an apt \`Packages\` file' \
'apk-index:Patch an alpine apk \`APKINDEX.tar.gz\` file' \
'git-commit:Generate a git commit from the given parameters (optionally bruteforce a hash prefix)' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'sh4d0wup tamper help commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__help__apk-index_commands] )) ||
_sh4d0wup__tamper__help__apk-index_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper help apk-index commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__help__apt-package-list_commands] )) ||
_sh4d0wup__tamper__help__apt-package-list_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper help apt-package-list commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__help__apt-release_commands] )) ||
_sh4d0wup__tamper__help__apt-release_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper help apt-release commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__help__git-commit_commands] )) ||
_sh4d0wup__tamper__help__git-commit_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper help git-commit commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__help__help_commands] )) ||
_sh4d0wup__tamper__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper help help commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__help__pacman-db_commands] )) ||
_sh4d0wup__tamper__help__pacman-db_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper help pacman-db commands' commands "$@"
}
(( $+functions[_sh4d0wup__tamper__pacman-db_commands] )) ||
_sh4d0wup__tamper__pacman-db_commands() {
    local commands; commands=()
    _describe -t commands 'sh4d0wup tamper pacman-db commands' commands "$@"
}

if [ "$funcstack[1]" = "_sh4d0wup" ]; then
    _sh4d0wup "$@"
else
    compdef _sh4d0wup sh4d0wup
fi
