Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLI: Full DSSE support #1111

Closed
3 tasks done
woodruffw opened this issue Sep 5, 2024 · 5 comments
Closed
3 tasks done

CLI: Full DSSE support #1111

woodruffw opened this issue Sep 5, 2024 · 5 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@woodruffw
Copy link
Member

woodruffw commented Sep 5, 2024

Right now, the sigstore CLI only has limited support for DSSE bundles: we support verifying them in sigstore verify, but not signing/generating via the CLI.

Some things we'll want to do:

  • Add sigstore attest CLI subcommand to sign using DSSE envelopes #1115: We should support DSSE bundle generation and signing via the CLI. This will require some design thought on how best to integrate this with the current sigstore sign subcommand; two ideas:
    • sigstore sign --attest enables DSSE generation/signing, rather than the default hashedrekord
    • A new subcommand hierarchy, like sigstore attest ..., to mirror cosign attest
  • Print in-toto statement when verifying DSSE #1116: When verifying DSSE bundles with sigstore verify ... subcommands, we should support emitting the bundle's interior statement in a structured manner, for further processing.
    • One idea for doing this is to add a --format=json or similar flag across all of the verification subcommands, and have the subcommands emit only JSON in that case, e.g. {"valid": true, "statement": {...}}.
  • Add CLI integration tests for attest subcommand #1124: Generally improve our integration-level testing of the sigstore CLI

CC @facutuesca

@woodruffw woodruffw added the enhancement New feature or request label Sep 5, 2024
@facutuesca
Copy link
Contributor

I see that DSSE supports multiple artifacts (“subjects”) inside the envelope, each with a name and digest. But the current sigstore sign (non-DSSE) command will, given multiple input files, generate multiple bundle files, one for each input file.

Do we want the same behavior when using DSSE? That is, multiple input files -> multiple output bundles, even if a single DSSE envelope supports having multiple subjects? Or do we want to output a single sigstore bundle, that contains the DSSE envelope with multiple subjects?

@woodruffw
Copy link
Member Author

Do we want the same behavior when using DSSE? That is, multiple input files -> multiple output bundles, even if a single DSSE envelope supports having multiple subjects? Or do we want to output a single sigstore bundle, that contains the DSSE envelope with multiple subjects?

The former -- I think we want to maintain the 1:1 relationship between input and output files for now, even though DSSE bundles technically allow a 1:N relationship. My rationale for that is that fewer clients support that 1:N pattern, and the 1:1 pattern is more immediately applicable to use cases like Python packaging 🙂

@facutuesca
Copy link
Contributor

facutuesca commented Sep 6, 2024

Do we want to use the same default predicate type for the in-toto statement as cosign? i.e: https://cosign.sigstore.dev/attestation/v1.

edit: I see that predicate is defined here, and it contains two fields: Data and Timestamp, where Data contains the contents of the file passed via the --predicate argument.
Do we want to have the same behavior as cosign? By default using that predicate type (with Data and Timestamp fields), and then adding support for other predicateTypes?

@woodruffw
Copy link
Member Author

woodruffw commented Sep 6, 2024

Do we want to use the same default predicate type for the in-toto statement as cosign? i.e: https://cosign.sigstore.dev/attestation/v1.

IIRC our DSSE signing API already uses a different predicate type (one that's not cosign specific) by default, so I think we should probably default to that. If I'm remembering right, I picked the current predicate default based on the GitHub Attestations' feature's default.

Edit: whoops, I was thinking of the statement not the predicate type. IMO we should default to whatever GitHub's attestations use for their default predicate type, but also think about how we'll expose appropriate CLI flags for customizing the predicate during DSSE signing.

@woodruffw
Copy link
Member Author

This is complete!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants