op-vault and op-screening pinned `rand_core = "0.10"` with the `getrandom`
feature, but rand_core 0.10 removed that feature — so the ENTIRE openpay
workspace failed to resolve (cargo build -p op-core failed identically).
The pin was doubly wrong: both crates use rand_core 0.6's RNG traits —
op-vault via aes-gcm-siv 0.11's `aead::OsRng`, op-screening via
`rand_core::OsRng` + ed25519-dalek's `SigningKey::generate` — both of
which are rand_core 0.6 (already locked at 0.6.4; there was never a 0.10).
Pin both to `rand_core = "0.6"` (which HAS the getrandom feature gating
OsRng). The workspace now resolves; op-vault + op-screening compile and
their 94 tests pass; op-rails-x402 (added in af27203) now builds in the
workspace, not just standalone.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
50 lines
1.7 KiB
TOML
50 lines
1.7 KiB
TOML
[package]
|
|
name = "op-screening"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
description = "OpenPay sanctions screening: OFAC/EU/UN/HMT/DFAT/SEMA list ingestion, fuzzy name matching, BSA/FinCEN reporting helpers, signed audit log."
|
|
|
|
[dependencies]
|
|
op-core = { path = "../op-core" }
|
|
|
|
# HTTP client. rustls-only to avoid linking native TLS.
|
|
reqwest = { version = "0.13", default-features = false, features = ["rustls", "json"] }
|
|
|
|
# Async runtime. Same minor features op-server uses.
|
|
tokio = { workspace = true }
|
|
|
|
# Serde stack.
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
|
|
# XML parsing for OFAC / EU / UN list payloads.
|
|
quick-xml = { workspace = true }
|
|
|
|
# CBOR for on-disk snapshot persistence.
|
|
ciborium = "0.2"
|
|
|
|
# The task spec mandates chrono for SanctionedEntity / list timestamps.
|
|
# The workspace also uses `time` elsewhere; both can coexist.
|
|
chrono = { version = "0.4", default-features = false, features = ["std", "clock", "serde"] }
|
|
|
|
# Unicode normalisation: NFKD + diacritic stripping for name canonicalisation.
|
|
unicode-normalization = "0.1"
|
|
|
|
# Audit-log cryptography.
|
|
ed25519-dalek = { version = "2", default-features = false, features = ["std", "rand_core"] }
|
|
blake3 = "1"
|
|
# 0.6 to match ed25519-dalek 2.x's RNG traits (`SigningKey::generate(&mut OsRng)`
|
|
# and `rand_core::OsRng`). `getrandom` gates OsRng. (A "0.10" pin never matched
|
|
# usage and lacks the getrandom feature, breaking the workspace resolve.)
|
|
rand_core = { version = "0.6", features = ["getrandom"] }
|
|
|
|
# Errors + tracing per workspace convention.
|
|
thiserror = { workspace = true }
|
|
tracing = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
proptest = { workspace = true }
|
|
tokio = { workspace = true }
|