Skip to content

Conversation

@cr3ativ3cod3r
Copy link

@cr3ativ3cod3r cr3ativ3cod3r commented Nov 18, 2025

Description

This PR adds support for signing, attesting, and verifying modelkits using the kit commands directly. These commands use cosign internally. The users doesn't have to switch between multiple tools. The verify command enables the user to run both verify and verify attestation using a single command.

Linked issues

closes #857

AI-Assisted Code

  • This PR contains AI-generated code that I have reviewed and tested
  • I take full responsibility for all code in this PR, regardless of how it was created

)

func RunSign(ctx context.Context, options *signOptions) error {
cmd := exec.CommandContext(ctx, "cosign", options.cosignArgs...)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commands will panic with "executable file not found" when cosign binary is not installed on the system. This needs pre-flight checks before making these calls. Also is there a possibility to use cosign as a library instead of an external CLI ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looked into use of cosign as a library. Found cosign(github.com/sigstore/cosign/v2/pkg/cosign). But it doesn't have a high level api to sign or attest. Actual signing happens in internal packages. Reviewed sigstore-go, which currently doesn't have attestation creation support.
I have added a check for cosign binary before execution of command.

"os/exec"
)

func RunAttest(context context.Context, options *attestOptions) any {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does this return any and not error?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed it to error

return cmd
}

func runCommand(opts []verifyOptions) func(cmd *cobra.Command, args []string) error {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While this code works due to reassignment of opts it's confusing. The function signature runCommand([]verifyOptions{})suggests it takes an initialized slice, but it's always called with an empty slice and immediately populated. Refactor to use local variable for opts

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made opts local to runCommand instead of passing it as input.


err := cmd.Run()
if err != nil {
return fmt.Errorf("signing failed %s", err)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should use %w instead of %s

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to %w.

func VerifyCommand() *cobra.Command {

cmd := &cobra.Command{
Use: "verify [FLAGS]",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FLAGS -> flags


func AttestCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "attest [FLAGS]",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FLAGS -> flags

return output.Fatalf("Failed to %s: %s", commands[i], err)
}
}
output.Infof("Modelkit signed")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like a copy/paste error should be output.Infof("Modelkit verification successful")

Signed-off-by: Keerthan KK <tkthulasimandiram@gmail.com>
…cific flags

Signed-off-by: Keerthan KK <tkthulasimandiram@gmail.com>
Signed-off-by: Keerthan KK <tkthulasimandiram@gmail.com>
Signed-off-by: Keerthan KK <tkthulasimandiram@gmail.com>
Signed-off-by: Keerthan KK <tkthulasimandiram@gmail.com>
Signed-off-by: Keerthan KK <tkthulasimandiram@gmail.com>
@cr3ativ3cod3r cr3ativ3cod3r force-pushed the Implement-cosign-based-signing branch from bcca243 to 0848136 Compare December 28, 2025 14:26
@cr3ativ3cod3r cr3ativ3cod3r requested a review from gorkem December 28, 2025 15:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sign the Vibes

2 participants