NAME
Dist::Zilla::Plugin::SigStore::SignRelease - Sign Release with SigStore
VERSION
version 0.02
SYNOPSIS
In your dist.ini:
[SigStore::SignRelease]
releaser_name = @Filter/UploadToCPAN ; The releaser that is being used
upload_to_cpan = 1 ; Upload the sigstore bundle to CPAN (optional)
sigstore_extension = sigstore.json ; Extension of the sigstore bundle (optional)
answer_yes = 1 ; Answer yes to any cosign messages (Default = 0)
Note: that upload_to_cpan defaults to true (1).
DESCRIPTION
This plugin will sign a CPAN Release with SigStore
Required Plugins
This plugin requires that your Dist::Zilla configuration do the following:
1. Create a release
There are numerous combinations of Dist::Zilla plugins that can perform those functions.
SIGSTORE INFORMATION
The current version requires the installation of the cosign application. That application can be accessed via the SigStore web site:
https://docs.sigstore.dev/cosign/system_config/installation/
CPAN SUPPORT
As of version 0.01 there is no support in PAUSE or any CPAN client for sigstore signature verification.
MANUAL SIGNATURE VERIFICATION
cosign verify-blob Dist-Zilla-Plugin-SigStore-SignRelease-0.01.tar.gz \
--bundle Dist-Zilla-Plugin-SigStore-SignRelease-0.01.tar.gz.sigstore.json \
--certificate-identity timlegge@gmail.com \
--certificate-oidc-issuer https://accounts.google.com
The GitHub repository also includes a script in the examples directory that can be used to manually verify signatures.
https://github.com/timlegge/perl-Dist-Zilla-Plugin-SigStore/blob/main/example/verify_sigstore.pl
ATTRIBUTES
-
upload_to_cpan true (1) or false (0) - Default = 1
-
sigstore_extension Defaults to 'sigstore.json' (Optional) The extension is appended to the end of the distribution's filename.
example: Distribution-0.99.tar.gz.sigstore.json -
answer_yes true (1) or false (0) - Default = 0 This answers yes to any cosign messages that require an answer.
-
releaser_name The name of the Dist::Zilla releaser plugin to use for uploading the sigstore bundle. Defaults to '@Filter/UploadToCPAN'. Change this if your bundle plugin has a different name in dist.ini.
example: releaser_name = @Filter/UploadToCPAN
METHODS
-
before_release
The processing function that is called automatically before a release. It attempts to locate the plugin named by
releaser_name. If found, it stores the releaser via$self-_releaser> for use duringafter_release. -
after_release
The main processing function that is called automatically after the release is complete.
It signs the release archive with SigStore's cosign and uploads it to PAUSE (if upload_to_cpan = 1)
AUTHOR
Timothy Legge timlegge@gmail.com
COPYRIGHT AND LICENSE
This software is copyright (c) 2026 by Timothy Legge timlegge@gmail.com.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.