encryption-rust 1.3.0

可插拔密码学组件库的 Rust 实现:在统一契约下提供对称加密、非对称加密、哈希、密钥派生(HKDF / PBKDF2 / Argon2 / scrypt)、签名(SM2 / ECDSA / Ed25519)、密钥协商(ECDH / X25519)与后量子密钥封装(ML-KEM),包含 AES/Sodium 与国密 SM2/SM3/SM4/ZUC 等实现
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.88"
name = "encryption-rust"
version = "1.3.0"
authors = ["erik <erik@erik.xyz>"]
build = false
exclude = [
    "CLAUDE.md",
    "AGENTS.md",
    "ruvector.db",
    ".swarm",
    ".claude-flow",
    ".claude",
    ".agents",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "可插拔密码学组件库的 Rust 实现:在统一契约下提供对称加密、非对称加密、哈希、密钥派生(HKDF / PBKDF2 / Argon2 / scrypt)、签名(SM2 / ECDSA / Ed25519)、密钥协商(ECDH / X25519)与后量子密钥封装(ML-KEM),包含 AES/Sodium 与国密 SM2/SM3/SM4/ZUC 等实现"
readme = "README.md"
keywords = [
    "encryption",
    "cryptography",
    "sm2",
    "sm3",
    "sm4",
]
categories = ["cryptography"]
license = "MIT"
repository = "https://github.com/erikwang2013/encryption-rust"

[package.metadata.docs.rs]
all-features = true

[features]
actix-web = ["dep:actix-web"]
axum = ["dep:axum"]
bee-rust = [
    "axum",
    "dep:bee_router",
]
default = []
ecat = [
    "axum",
    "dep:ecat-middleware",
    "dep:tower",
    "dep:http",
]
poem = ["dep:poem"]
rocket = ["dep:rocket"]
salvo = ["dep:salvo"]
warp = ["dep:warp"]

[lib]
name = "encryption"
path = "src/lib.rs"

[[example]]
name = "quickstart"
path = "examples/quickstart.rs"

[[test]]
name = "crypto_roundtrip"
path = "tests/crypto_roundtrip.rs"

[[test]]
name = "invariants"
path = "tests/invariants.rs"

[[test]]
name = "known_answer"
path = "tests/known_answer.rs"

[[test]]
name = "sm2"
path = "tests/sm2.rs"

[[bench]]
name = "crypto_bench"
path = "benches/crypto_bench.rs"
harness = false

[dependencies.actix-web]
version = "4"
optional = true

[dependencies.aes]
version = "0.8"
features = ["zeroize"]

[dependencies.aes-gcm]
version = "0.10"
features = ["zeroize"]

[dependencies.aes-gcm-siv]
version = "0.11.1"

[dependencies.argon2]
version = "0.5.3"
features = ["zeroize"]

[dependencies.aria]
version = "0.1.0"
features = ["zeroize"]

[dependencies.axum]
version = "0.8"
optional = true

[dependencies.base64]
version = "0.22"

[dependencies.bee_router]
version = "1"
optional = true
default-features = false

[dependencies.belt-hash]
version = "0.1.1"

[dependencies.blake2]
version = "0.10.6"

[dependencies.blake3]
version = "1.8"

[dependencies.camellia]
version = "0.1.0"
features = ["zeroize"]

[dependencies.cbc]
version = "0.1"
features = [
    "alloc",
    "block-padding",
]

[dependencies.chacha20]
version = "0.9"
features = ["zeroize"]

[dependencies.chacha20poly1305]
version = "0.10"

[dependencies.ctr]
version = "0.9"

[dependencies.ecat-middleware]
version = "4"
optional = true
default-features = false

[dependencies.ed25519-dalek]
version = "2.2"
features = ["rand_core"]

[dependencies.getrandom]
version = "0.4"
features = ["sys_rng"]

[dependencies.ghash]
version = "0.5.1"

[dependencies.hkdf]
version = "0.12"

[dependencies.hmac]
version = "0.12"

[dependencies.http]
version = "1"
optional = true

[dependencies.k256]
version = "0.13.4"
features = [
    "ecdsa",
    "ecdh",
]

[dependencies.kuznyechik]
version = "0.8.2"
features = ["zeroize"]

[dependencies.ml-kem]
version = "0.2.3"
features = ["zeroize"]

[dependencies.p256]
version = "0.13.2"
features = [
    "ecdsa",
    "ecdh",
]

[dependencies.p384]
version = "0.13.1"
features = [
    "ecdsa",
    "ecdh",
]

[dependencies.pbkdf2]
version = "0.12"

[dependencies.poem]
version = "3"
optional = true

[dependencies.poly1305]
version = "0.8"
features = ["zeroize"]

[dependencies.rand_core]
version = "0.6"
features = ["getrandom"]

[dependencies.rocket]
version = "0.5"
optional = true

[dependencies.rsa]
version = "0.9.10"
features = ["getrandom"]

[dependencies.salsa20]
version = "0.10.2"
features = ["zeroize"]

[dependencies.salvo]
version = "1"
optional = true

[dependencies.scrypt]
version = "0.11.0"

[dependencies.sha2]
version = "0.10"

[dependencies.sha3]
version = "0.10.9"

[dependencies.sm2]
version = "0.14"
features = [
    "arithmetic",
    "pke",
    "dsa",
    "alloc",
    "std",
    "precomputed-tables",
]
default-features = false

[dependencies.sm3]
version = "0.5"

[dependencies.sm4]
version = "0.5"
features = ["zeroize"]

[dependencies.streebog]
version = "0.10.2"

[dependencies.threefish]
version = "0.5.2"
features = ["zeroize"]

[dependencies.tower]
version = "0.5"
optional = true

[dependencies.warp]
version = "0.4"
optional = true

[dependencies.x25519-dalek]
version = "2.0.1"
features = [
    "static_secrets",
    "zeroize",
    "getrandom",
]

[dependencies.zeroize]
version = "1"

[dependencies.zuc]
version = "0.4"

[dev-dependencies.criterion]
version = "0.8"

[dev-dependencies.ml-kem]
version = "0.2.3"
features = [
    "deterministic",
    "zeroize",
]

[dev-dependencies.tokio]
version = "1"
features = [
    "macros",
    "rt",
]

[dev-dependencies.tower]
version = "0.5"
features = ["util"]

[dev-dependencies.warp]
version = "0.4"
features = ["test"]

[profile.release]
lto = true
codegen-units = 1