[workspace]
resolver = "2"
members = [".", "crates/webylib-wasm"]
[package]
name = "webylib"
version = "0.3.2"
edition = "2021"
rust-version = "1.85"
description = "Webcash HD wallet library — bearer e-cash with BIP32-style key derivation, SQLite storage, AES-256-GCM encryption, and full C FFI for cross-platform SDKs"
license = "MIT"
authors = ["Webycash Developers"]
homepage = "https://weby.cash"
repository = "https://github.com/webycash/webylib"
documentation = "https://docs.rs/webylib"
readme = "README.md"
keywords = ["webcash", "wallet", "payments", "bearer-cash", "hd-wallet"]
categories = ["cryptography", "cryptography::cryptocurrencies", "api-bindings"]
include = [
"src/**/*.rs",
"tests/**/*.rs",
"tests/**/*.txt",
"LICENSE",
"README.md",
"CHANGELOG.md",
"docs/**/*.md",
"include/**/*",
"cbindgen.toml",
]
[lib]
name = "webylib"
crate-type = ["lib", "cdylib", "staticlib"]
[[bin]]
name = "webyc"
path = "src/bin/cli.rs"
required-features = ["cli"]
[dependencies]
log = "0.4"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror = "2.0"
anyhow = "1.0"
async-trait = "0.1"
sha2 = "0.10"
hmac = "0.12"
rand = "0.9"
rand_chacha = "0.9"
aes-gcm = "0.10"
argon2 = "0.5"
hkdf = "0.12"
hex = "0.4"
base64 = "0.22"
chrono = { version = "0.4", default-features = false, features = ["serde", "clock"] }
uuid = { version = "1.0", features = ["v4"] }
url = "2.5"
zeroize = { version = "1.5", features = ["derive"] }
getrandom = "0.2"
getrandom_0_3 = { package = "getrandom", version = "0.3" }
tokio = { version = "1.0", features = ["full"], optional = true }
rusqlite = { version = "0.37.0", features = ["bundled"], optional = true }
reqwest = { version = "0.12", default-features = false, features = ["json"], optional = true }
keyring = { version = "3", features = ["apple-native", "linux-native", "windows-native"], optional = true }
clap = { version = "4.0", features = ["derive"], optional = true }
rpassword = { version = "7.3", optional = true }
dirs-next = { version = "2", optional = true }
[dev-dependencies]
tempfile = "3.0"
mockito = "1.7.0"
[features]
default = ["native", "cli"]
native = [
"dep:tokio",
"dep:rusqlite",
"dep:reqwest",
"reqwest?/rustls-tls",
"dep:keyring",
"bundled-sqlite",
]
bundled-sqlite = ["rusqlite?/bundled"]
wasm = ["dep:reqwest", "getrandom/js", "getrandom_0_3/wasm_js", "uuid/js"]
ffi = []
cli = ["dep:clap", "dep:rpassword", "dep:dirs-next"]
passkey = []
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]