Fix root crate compilation dependencies to force sha1*

This commit is contained in:
Igor Katson 2024-08-28 13:32:42 +01:00
parent 9eed5aeb07
commit 0214817122
No known key found for this signature in database
GPG key ID: B4EC22B66D61A3F5
7 changed files with 47 additions and 3 deletions

17
Cargo.lock generated
View file

@ -120,6 +120,15 @@ version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
[[package]]
name = "assert_cfg"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04e2651f366b7ee3f97729fded1441539b49d5f39eeb05b842689e11e84501b2"
dependencies = [
"const_panic",
]
[[package]]
name = "async-backtrace"
version = "0.2.7"
@ -531,6 +540,12 @@ version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
[[package]]
name = "const_panic"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7782af8f90fe69a4bb41e460abe1727d493403d8b2cc43201a3a3e906b24379f"
[[package]]
name = "core-foundation"
version = "0.9.4"
@ -1517,6 +1532,7 @@ name = "librqbit-core"
version = "4.0.1"
dependencies = [
"anyhow",
"assert_cfg",
"bytes",
"data-encoding",
"directories",
@ -1583,6 +1599,7 @@ dependencies = [
name = "librqbit-sha1-wrapper"
version = "4.0.0"
dependencies = [
"assert_cfg",
"crypto-hash",
"ring",
]

View file

@ -17,8 +17,19 @@ http-api = ["axum", "tower-http"]
upnp-serve-adapter = ["upnp-serve"]
webui = []
timed_existence = []
default-tls = ["reqwest/default-tls", "sha1w/sha1-crypto-hash"]
rust-tls = ["reqwest/rustls-tls", "sha1w/sha1-ring"]
default-tls = [
"reqwest/default-tls",
"sha1w/sha1-crypto-hash",
"bencode/sha1-crypto-hash",
"librqbit-core/sha1-crypto-hash",
]
rust-tls = [
"reqwest/rustls-tls",
"sha1w/sha1-ring",
"sha1w/sha1-ring",
"bencode/sha1-ring",
"librqbit-core/sha1-ring",
]
storage_middleware = ["lru"]
storage_examples = []
tracing-subscriber-utils = ["tracing-subscriber"]

View file

@ -31,6 +31,7 @@ directories = "5"
tokio-util = "0.7.10"
data-encoding = "2.6.0"
bytes = "1.7.1"
assert_cfg = "0.1.0"
[dev-dependencies]

View file

@ -9,3 +9,8 @@ pub mod speed_estimator;
pub mod torrent_metainfo;
pub use hash_id::Id20;
assert_cfg::exactly_one! {
feature = "sha1-crypto-hash",
feature = "sha1-ring",
}

View file

@ -29,7 +29,11 @@ pub fn torrent_from_bytes_ext<'de, BufType: Deserialize<'de> + From<&'de [u8]>>(
let mut t = TorrentMetaV1::deserialize(&mut de)?;
let (digest, info_bytes) = match (de.torrent_info_digest, de.torrent_info_bytes) {
(Some(digest), Some(info_bytes)) => (digest, info_bytes),
_ => anyhow::bail!("programming error"),
(o1, o2) => anyhow::bail!(
"programming error: digest.is_some()={}, info_bytes.is_some()={}. Probably one of bencode/sha1* features isn't enabled.",
o1.is_some(),
o2.is_some()
),
};
t.info_hash = Id20::new(digest);
Ok(ParsedTorrent {

View file

@ -16,5 +16,6 @@ sha1-crypto-hash = ["crypto-hash"]
sha1-ring = ["ring"]
[dependencies]
assert_cfg = "0.1.0"
crypto-hash = { version = "0.3", optional = true }
ring = { version = "0.17", optional = true }

View file

@ -11,6 +11,11 @@ pub trait ISha1 {
fn finish(self) -> [u8; 20];
}
assert_cfg::exactly_one! {
feature = "sha1-crypto-hash",
feature = "sha1-ring",
}
#[cfg(feature = "sha1-crypto-hash")]
mod crypto_hash_impl {
use super::ISha1;