Skip to content

Commit 2223b6e

Browse files
authored
Merge pull request #340 from astoycos/bump-tough
update tough dep
2 parents cb23df0 + e817116 commit 2223b6e

30 files changed

+127
-169
lines changed

Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ rekor-native-tls = ["reqwest/native-tls", "rekor"]
4040
rekor-rustls-tls = ["reqwest/rustls-tls", "rekor"]
4141
rekor = ["reqwest"]
4242

43-
sigstore-trust-root = ["tough", "regex"]
43+
sigstore-trust-root = ["futures-util", "tough", "regex", "tokio/sync"]
4444

4545
sign = []
4646

@@ -81,6 +81,8 @@ ecdsa = { version = "0.16.7", features = ["pkcs8", "digest", "der", "signing"] }
8181
ed25519 = { version = "2.2.1", features = ["alloc"] }
8282
ed25519-dalek = { version = "2.0.0-rc.2", features = ["pkcs8", "rand_core"] }
8383
elliptic-curve = { version = "0.13.5", features = ["arithmetic", "pem"] }
84+
futures = "0.3"
85+
futures-util = { version = "0.3.30", optional = true }
8486
lazy_static = "1.4.0"
8587
oci-distribution = { version = "0.10", default-features = false, optional = true }
8688
olpc-cjson = "0.1"
@@ -116,7 +118,7 @@ sigstore_protobuf_specs = "0.1.0-rc.2"
116118
thiserror = "1.0.30"
117119
tokio = { version = "1.17.0", features = ["rt"] }
118120
tokio-util = { version = "0.7.10", features = ["io-util"] }
119-
tough = { version = "0.14", features = ["http"], optional = true }
121+
tough = { version = "0.17.1", features = ["http"], optional = true }
120122
tracing = "0.1.31"
121123
url = "2.2.2"
122124
x509-cert = { version = "0.2.2", features = ["builder", "pem", "std"] }

examples/cosign/sign/main.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ use sigstore::cosign::constraint::{AnnotationMarker, PrivateKeySigner};
1818
use sigstore::cosign::{Constraint, CosignCapabilities, SignatureLayer};
1919
use sigstore::crypto::SigningScheme;
2020
use sigstore::registry::{Auth, ClientConfig, ClientProtocol, OciReference};
21-
use std::convert::TryFrom;
2221
use tracing::{debug, warn};
2322
use zeroize::Zeroizing;
2423

examples/cosign/verify/main.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ use sigstore::crypto::SigningScheme;
2323
use sigstore::errors::SigstoreVerifyConstraintsError;
2424
use sigstore::registry::{ClientConfig, ClientProtocol, OciReference};
2525
use sigstore::trust::sigstore::SigstoreTrustRoot;
26-
use std::boxed::Box;
27-
use std::convert::TryFrom;
2826
use std::time::Instant;
2927

3028
extern crate anyhow;
@@ -34,7 +32,6 @@ extern crate clap;
3432
use clap::Parser;
3533

3634
use std::{collections::HashMap, fs};
37-
use tokio::task::spawn_blocking;
3835

3936
extern crate tracing_subscriber;
4037
use tracing::{info, warn};
@@ -133,7 +130,7 @@ async fn run_app(
133130

134131
let mut client_builder =
135132
sigstore::cosign::ClientBuilder::default().with_oci_client_config(oci_client_config);
136-
client_builder = client_builder.with_trust_repository(frd)?;
133+
client_builder = client_builder.with_trust_repository(frd).await?;
137134

138135
let cert_chain: Option<Vec<sigstore::registry::Certificate>> = match cli.cert_chain.as_ref() {
139136
None => None,
@@ -187,7 +184,7 @@ async fn run_app(
187184
}
188185
if let Some(path_to_cert) = cli.cert.as_ref() {
189186
let cert = fs::read(path_to_cert).map_err(|e| anyhow!("Cannot read cert: {:?}", e))?;
190-
let require_rekor_bundle = if !frd.rekor_keys()?.is_empty() {
187+
let require_rekor_bundle = if !frd.rekor_keys().await?.is_empty() {
191188
true
192189
} else {
193190
warn!("certificate based verification is weaker when Rekor integration is disabled");
@@ -230,12 +227,10 @@ async fn run_app(
230227

231228
async fn fulcio_and_rekor_data(cli: &Cli) -> anyhow::Result<Box<dyn sigstore::trust::TrustRoot>> {
232229
if cli.use_sigstore_tuf_data {
233-
let repo: sigstore::errors::Result<SigstoreTrustRoot> = spawn_blocking(|| {
234-
info!("Downloading data from Sigstore TUF repository");
235-
SigstoreTrustRoot::new(None)?.prefetch()
236-
})
237-
.await
238-
.map_err(|e| anyhow!("Error spawning blocking task inside of tokio: {}", e))?;
230+
info!("Downloading data from Sigstore TUF repository");
231+
232+
let repo: sigstore::errors::Result<SigstoreTrustRoot> =
233+
SigstoreTrustRoot::new(None).await?.prefetch().await;
239234

240235
return Ok(Box::new(repo?));
241236
};

src/cosign/client_builder.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,15 @@ impl<'a> ClientBuilder<'a> {
7272
///
7373
/// Enables Fulcio and Rekor integration with the given trust repository.
7474
/// See [crate::sigstore::TrustRoot] for more details on trust repositories.
75-
pub fn with_trust_repository<R: TrustRoot + ?Sized>(mut self, repo: &'a R) -> Result<Self> {
76-
let rekor_keys = repo.rekor_keys()?;
75+
pub async fn with_trust_repository<R: TrustRoot + ?Sized>(
76+
mut self,
77+
repo: &'a R,
78+
) -> Result<Self> {
79+
let rekor_keys = repo.rekor_keys().await?;
7780
if !rekor_keys.is_empty() {
7881
self.rekor_pub_key = Some(rekor_keys[0]);
7982
}
80-
self.fulcio_certs = repo.fulcio_certs()?;
83+
self.fulcio_certs = repo.fulcio_certs().await?;
8184

8285
Ok(self)
8386
}

src/cosign/mod.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ use crate::crypto::{CosignVerificationKey, Signature};
4848
use crate::errors::SigstoreError;
4949
use base64::{engine::general_purpose::STANDARD as BASE64_STD_ENGINE, Engine as _};
5050
use pkcs8::der::Decode;
51-
use std::convert::TryFrom;
5251
use x509_cert::Certificate;
5352

5453
pub mod bundle;
@@ -284,7 +283,6 @@ where
284283
#[cfg(test)]
285284
mod tests {
286285
use serde_json::json;
287-
use std::collections::HashMap;
288286
use webpki::types::CertificateDer;
289287

290288
use super::constraint::{AnnotationMarker, PrivateKeySigner};
@@ -296,7 +294,7 @@ mod tests {
296294
AnnotationVerifier, CertSubjectEmailVerifier, VerificationConstraintVec,
297295
};
298296
use crate::crypto::certificate_pool::CertificatePool;
299-
use crate::crypto::{CosignVerificationKey, SigningScheme};
297+
use crate::crypto::SigningScheme;
300298

301299
#[cfg(feature = "test-registry")]
302300
use testcontainers::{clients, core::WaitFor};

src/cosign/signature_layers.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use const_oid::ObjectIdentifier;
1717
use digest::Digest;
1818
use oci_distribution::client::ImageLayer;
1919
use serde::Serialize;
20-
use std::convert::TryFrom;
2120
use std::{collections::HashMap, fmt};
2221
use tracing::{debug, info, warn};
2322
use x509_cert::der::DecodePem;
@@ -550,8 +549,6 @@ pub(crate) mod tests {
550549
use super::*;
551550
use openssl::x509::X509;
552551
use serde_json::json;
553-
use std::collections::HashMap;
554-
use std::convert::TryFrom;
555552

556553
use crate::cosign::tests::{get_fulcio_cert_pool, get_rekor_public_key};
557554

src/cosign/verification_constraint/cert_subject_email_verifier.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ mod tests {
126126
build_correct_signature_layer_with_certificate,
127127
build_correct_signature_layer_without_bundle,
128128
};
129-
use crate::cosign::signature_layers::CertificateSubject;
130129
use crate::cosign::verification_constraint::CertSubjectUrlVerifier;
131130

132131
#[test]

src/cosign/verification_constraint/cert_subject_url_verifier.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ mod tests {
7474
build_correct_signature_layer_with_certificate,
7575
build_correct_signature_layer_without_bundle,
7676
};
77-
use crate::cosign::signature_layers::CertificateSubject;
7877
use crate::cosign::verification_constraint::CertSubjectEmailVerifier;
7978

8079
#[test]

src/cosign/verification_constraint/certificate_verifier.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use chrono::{DateTime, Utc};
22
use pkcs8::der::Decode;
3-
use std::convert::TryFrom;
43
use tracing::warn;
54
use webpki::types::CertificateDer;
65
use x509_cert::Certificate;

src/crypto/certificate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ mod tests {
126126
use super::*;
127127
use crate::crypto::tests::*;
128128

129-
use chrono::{TimeDelta, Utc};
129+
use chrono::TimeDelta;
130130
use x509_cert::der::Decode;
131131

132132
#[test]

0 commit comments

Comments
 (0)