@@ -19,7 +19,7 @@ use sigstore::cosign::verification_constraint::{
1919 VerificationConstraintVec ,
2020} ;
2121use sigstore:: cosign:: { CosignCapabilities , SignatureLayer } ;
22- use sigstore:: crypto:: SignatureDigestAlgorithm ;
22+ use sigstore:: crypto:: SigningScheme ;
2323use sigstore:: errors:: SigstoreVerifyConstraintsError ;
2424use sigstore:: tuf:: SigstoreRepository ;
2525use std:: boxed:: Box ;
@@ -47,9 +47,9 @@ struct Cli {
4747 #[ clap( short, long, required( false ) ) ]
4848 key : Option < String > ,
4949
50- /// Digest algorithm to use when processing a signature
51- #[ clap( long, default_value = "sha256" ) ]
52- signature_digest_algorithm : String ,
50+ /// Signing scheme when signing and verifying
51+ #[ clap( long, required ( false ) ) ]
52+ signing_scheme : Option < String > ,
5353
5454 /// Fetch Rekor and Fulcio data from Sigstore's TUF repository"
5555 #[ clap( long) ]
@@ -149,11 +149,18 @@ async fn run_app(
149149 }
150150 if let Some ( path_to_key) = cli. key . as_ref ( ) {
151151 let key = fs:: read ( path_to_key) . map_err ( |e| anyhow ! ( "Cannot read key: {:?}" , e) ) ?;
152- let signature_digest_algorithm =
153- SignatureDigestAlgorithm :: try_from ( cli. signature_digest_algorithm . as_str ( ) )
154- . map_err ( anyhow:: Error :: msg) ?;
155- let verifier = PublicKeyVerifier :: new ( & key, signature_digest_algorithm)
156- . map_err ( |e| anyhow ! ( "Cannot create public key verifier: {}" , e) ) ?;
152+
153+ let verifier = match & cli. signing_scheme {
154+ Some ( scheme) => {
155+ let signing_scheme =
156+ SigningScheme :: try_from ( & scheme[ ..] ) . map_err ( anyhow:: Error :: msg) ?;
157+ PublicKeyVerifier :: new ( & key, & signing_scheme)
158+ . map_err ( |e| anyhow ! ( "Cannot create public key verifier: {}" , e) ) ?
159+ }
160+ None => PublicKeyVerifier :: try_from ( & key)
161+ . map_err ( |e| anyhow ! ( "Cannot create public key verifier: {}" , e) ) ?,
162+ } ;
163+
157164 verification_constraints. push ( Box :: new ( verifier) ) ;
158165 }
159166
0 commit comments