Repository navigation
Require Ed25519-signed payloads when policy sets a signing key - #29
Merged
Merged
Conversation
ManifestSigningKey under HKLM\SOFTWARE\Policies\StartSet turns on script signing. Only policy can set it; values from machine settings, Config.yaml or the command line are ignored and logged. While it is set, a script runs only if its embedded '# ed25519:' (.ps1) or 'REM ed25519:' (.cmd/.bat) line verifies over the file with that line removed, in outset's format. Anything else, including executables and packages, and every payload when the key is invalid, is refused with a SignatureRejected result that the log and items.json report as an error. Adds sign, verify and generate-keypair commands, which open no session log, and RFC 8032 known-answer tests for the format.
rodchristiansen
force-pushed
the
feature/script-signing
branch
from
October 8, 2026 12:45
ba4299d to
2e7306b
Compare
…28) A relative path is made absolute with Path.GetFullPath before it is read, and a missing file's error names the path that was checked.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #28.
ManifestSigningKey(REG_SZ, base64 raw Ed25519 public key) underHKLM\SOFTWARE\Policies\StartSetturns on required signing. Settings marked[PolicyOnly]resolve from policy alone; machine settings, Config.yaml and command-line values are ignored with a log note,SaveMachineSettingrefuses them, and the Prefs tab shows them locked.# ed25519: <b64>(.ps1) orREM ed25519: <b64>(.cmd/.bat). Signed bytes: the file with those lines removed, split and rejoined on LF, leading UTF-8 BOM kept. Byte-identical to outset for LF PowerShell scripts..exe/.msi/.msix, and every payload when the key does not decode are refused: newExecutionStatus.SignatureRejected, an error log line naming the file and reason, and an Error row initems.json. Refused payloads count as failures in the CLI exit code. Discovery is unchanged (top-level files only).sign <files> [--key-env VAR | --key-file PATH](defaultSTARTSET_SIGNING_KEY),verify <files> [--public-key B64](exit 1 on any failure),generate-keypair. These open no session log, so they run cleanly on build agents.