- cardclaws-wallet::google — inline GenericObject + RS256 `savetowallet` JWT
(Rs256Signer via jsonwebtoken; FakeGoogleSigner test double)
- POST /v1/cards/{id}/wallet/google → { saveUrl }
- POST /v1/profile/{handle}/contact — validate, rate-limit, record
contact_form_submission, email the owner (HTML-escaped, Resend)
- WalletConfig gains google issuer id + service account email
84 backend tests; fmt + clippy clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
36 lines
1.0 KiB
TOML
36 lines
1.0 KiB
TOML
[package]
|
|
name = "cardclaws-wallet"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[features]
|
|
# Real Apple PKCS#7 signing pulls in the (heavy) openssl dependency. Off by
|
|
# default so the crate and its tests build fast against the fake signer; the
|
|
# production binary enables it. The signing code is fully implemented either way.
|
|
default = []
|
|
apple-signing = ["dep:openssl"]
|
|
|
|
[dependencies]
|
|
cardclaws-types = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
sha1 = { workspace = true }
|
|
zip = { workspace = true }
|
|
image = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
# Google Wallet "save" JWT (RS256). jsonwebtoken is pure-Rust, so this is always
|
|
# compiled (unlike the openssl-backed Apple signer).
|
|
jsonwebtoken = { workspace = true }
|
|
base64 = { workspace = true }
|
|
openssl = { version = "0.10", features = ["vendored"], optional = true }
|
|
|
|
[dev-dependencies]
|
|
zip = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
sha1 = { workspace = true }
|