[package] name = "libtsforge" version = "0.1.0" edition = "2021" rust-version = "1.74" description = "SPP trusted-store codec for TSforge activation — CRC/hash primitives, store container format, and product tables." license = "GPL-3.0-or-later" # Dependency-free by default so the store/CRC/hash logic and data tables are # unit-tested on any OS, offline. The RSA/AES layers needed to sign a real # ticket are the one part that should pull vetted crates (RustCrypto: `rsa`, # `aes`, `cbc`) behind a future `crypto` feature — see src/crypto.rs. CRC32 and # SHA-256 are hand-rolled here (small, standard, test-vector-verified) so the # store-integrity layers stay dependency-free and portable. [lib] name = "libtsforge" path = "src/lib.rs" # The RSA/AES/HMAC backend (src/crypto_real.rs) that signs a real ticket. Off by # default so the pure store/CRC/hash core stays dependency-free and `cargo test`s # offline; enabling it pulls the RustCrypto crates. `sha1` needs the `oid` # feature for the PKCS#1 v1.5 SHA1 DigestInfo prefix; `cbc`'s `alloc` feature # provides the PKCS7 vec helpers. `rand` supplies OsRng for the random HMAC key # and RSA PKCS#1 v1.5 encryption padding. [features] crypto = ["dep:rsa", "dep:aes", "dep:cbc", "dep:hmac", "dep:sha1", "dep:rand"] [dependencies] rsa = { version = "0.9", optional = true } aes = { version = "0.8", optional = true } cbc = { version = "0.1", optional = true, features = ["alloc"] } hmac = { version = "0.12", optional = true } sha1 = { version = "0.10", optional = true, features = ["oid"] } rand = { version = "0.8", optional = true }