Updating the toolchain surfaced five workspaces that did not build. Every one
was verified against its ORIGINAL pre-update lockfile and manifest before being
touched: all of them were already broken. None of this was caused by the
dependency update.
The same handful of upstream migrations account for nearly all of it:
hmac 0.13 moved new_from_slice from Mac to KeyInit
openpay: op-webhook, op-bnpl, op-ewallets-asia, op-mobile-wallets — plus
the op-bnpl and op-ewallets-asia *test* targets, which a src-only search
misses and `--all-targets` does not.
reqwest 0.13 gates builder methods behind features
eoc-tools needed "query"; openpay/op-tax needed "form".
cipher 0.4 -> 0.5
openpay/op-mobile-wallets declared aes 0.9 (cipher 0.5) while ctr 0.9 and
aes-gcm 0.10 both sit on cipher 0.4. Aligned aes to 0.8.
jcp-schema::Grant gained budget_funds and caveats
mesh-core and joule-ui-interaction examples were never updated. A path
dependency, so no lockfile change could have caused or fixed this.
Not one line of this is a behaviour change. Every fix is an import, a feature
flag, a version alignment, or two struct fields.
The finding is larger than the diff. smart-byte (47k LOC, fixed earlier today),
openpay (six separate breakages across five crates), eoc, mesh and joule-ui were
all silently broken, all by the same small set of migrations, all invisible
because nothing ever compiled them. The build gate added in this branch
currently covers three workspaces; on this evidence it should cover every one.
Verified after fixing: openpay 1935 tests pass, eoc/mesh/joule-ui build clean.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
44 lines
1.8 KiB
TOML
44 lines
1.8 KiB
TOML
[package]
|
|
name = "op-mobile-wallets"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
description = "OpenPay mobile-wallet acceptance: Apple Pay, Google Pay, Samsung Pay payment-token decryption. PCI-zero — raw PAN never crosses the public API."
|
|
|
|
[dependencies]
|
|
op-core = { path = "../op-core" }
|
|
op-rails-card = { path = "../op-rails-card" }
|
|
thiserror = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
time = { workspace = true }
|
|
zeroize = { workspace = true }
|
|
subtle = { workspace = true }
|
|
|
|
# RustCrypto stack.
|
|
# - p256: ECDH on the NIST P-256 curve. All three wallets use P-256.
|
|
# - hkdf: RFC 5869 KDF used by Apple Pay (X9.63-style construction
|
|
# implemented on top of HKDF-extract+expand) and Google Pay (HKDF
|
|
# directly).
|
|
# - aes-gcm: AES-256-GCM for Apple Pay / Samsung Pay payload AEAD.
|
|
# - aes + ctr: AES-256-CTR primitive used by Google Pay ECv2 (with a
|
|
# separate HMAC-SHA256 tag).
|
|
# - hmac + sha2: HMAC-SHA256 tag + SHA-256 digests across all three.
|
|
# - base64: payloads arrive base64-encoded from JS / native SDKs.
|
|
p256 = { version = "0.13", default-features = false, features = ["ecdh", "ecdsa", "std", "arithmetic", "pem"] }
|
|
hkdf = { version = "0.13", default-features = false }
|
|
aes-gcm = { version = "0.10", default-features = false, features = ["aes", "alloc"] }
|
|
aes = { version = "0.8", default-features = false }
|
|
ctr = { version = "0.9", default-features = false }
|
|
hmac = { version = "0.13", default-features = false }
|
|
sha2 = { version = "0.11", default-features = false }
|
|
base64 = { version = "0.22", default-features = false, features = ["std"] }
|
|
|
|
[dev-dependencies]
|
|
proptest = { workspace = true }
|
|
hex = { workspace = true }
|
|
|
|
[features]
|
|
default = []
|