Skip to content

[Bug]: oci export-layout --cosign-key uses the public Rekor log and timestamp authority by default #62

Closed

Description

@muscariello

Bug Description

oci export-layout --cosign-key and oci push --cosign-key sign each trust manifest with cosign sign-blob --yes --key <key> --bundle <file> <payload>. Without --signing-config, cosign v3 uses the public Sigstore signing config (signing_config.v0.2.json in sigstore/root-signing), which lists two services that apply when signing with a key:

  • Rekor transparency log (https://rekor.sigstore.dev): each signed trust manifest becomes a permanent, public log entry.
  • Timestamp authority (https://timestamp.sigstore.dev/api/v1/timestamp): the signature's hash is sent to Sigstore for an RFC 3161 timestamp. Nothing is published, but it is still a third-party request.

--yes skips Cosign's confirmation prompt, and nothing in the CLI output or README mentions either service.

Cosign v3 has no --tlog-upload flag on sign-blob; services are selected through the signing config. With an explicit empty signing config (no Rekor or TSA URLs), the bundle has tlogEntries: 0 and no timestamps. With a config listing only the TSA, it has 0 log entries and 1 RFC 3161 timestamp. I did not run the default path, to avoid creating public log entries.

Expected Behavior

Using either service should be an explicit choice, with offline signing as the default. For example:

  • an option selecting the services (log, timestamp, both, or none), plus a way to pass a custom signing config for private deployments, or
  • keep the current default but print a clear notice and document it in the README.

Either way, offline signing should be possible without wrapping the cosign binary.

Note that a timestamp is kept only in the Cosign bundle, which the CLI does not store today (#64).

Affected Version

0.3.0, and #61 (aaa5dcb). Observed with cosign v3.1.4.

Steps to Reproduce

COSIGN_PASSWORD= cosign generate-key-pair
COSIGN_PASSWORD= ai-catalog oci export-layout --cosign-key cosign.key --cosign-public-key cosign.pub catalog.json layout

Inspect the bundle Cosign writes during signing for verificationMaterial.tlogEntries and verificationMaterial.timestampVerificationData (running this creates public entries). Workaround: set AI_CATALOG_COSIGN_BIN to a wrapper that adds --signing-config offline.json to sign-blob, where offline.json is:

{"mediaType":"application/vnd.dev.sigstore.signingconfig.v0.2+json","caUrls":[],"oidcUrls":[],"rekorTlogUrls":[],"tsaUrls":[],"rekorTlogConfig":{"selector":"ANY"},"tsaConfig":{"selector":"ANY"}}

Activity

  1. changed the title [-][Bug]: oci export-layout --cosign-key publishes to the public Rekor log by default[/-] [+][Bug]: oci export-layout --cosign-key uses the public Rekor log and timestamp authority by default[/+] on Nov 5, 2026
  2. added 4 commits that reference this issue on Nov 5, 2026
    4d29522
    75d9a83
    0e1ff39
    61022bb
  3. added a commit that references this issue on Nov 6, 2026
    c4e528b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions