[package] name = "subxt-signer" version.workspace = true authors.workspace = true edition.workspace = true rust-version.workspace = true publish = true license.workspace = true readme = "README.md" repository.workspace = true documentation.workspace = true homepage.workspace = true description = "Sign extrinsics to be submitted by Subxt" keywords = ["parity", "subxt", "extrinsic", "signer"] [features] default = ["sr25519", "ecdsa", "subxt", "std"] std = [ "regex/std", "pbkdf2/std", "sha2/std", "hmac/std", "bip39/std", "schnorrkel?/std", "secp256k1?/std", "serde?/std", "serde_json?/std", "base64?/std", "scrypt?/std", "crypto_secretbox?/std", ] # Pick the signer implementation(s) you need by enabling the # corresponding features. Note: I had more difficulties getting # ecdsa compiling to WASM on my mac; following this comment helped: # https://github.com/rust-bitcoin/rust-bitcoin/issues/930#issuecomment-1215538699 sr25519 = ["schnorrkel"] ecdsa = ["secp256k1"] unstable-eth = ["keccak-hash", "ecdsa", "secp256k1", "bip32"] # Enable support for loading key pairs from polkadot-js json. polkadot-js-compat = ["std", "subxt", "sr25519", "base64", "scrypt", "crypto_secretbox", "serde", "serde_json"] # Make the keypair algorithms here compatible with Subxt's Signer trait, # so that they can be used to sign transactions for compatible chains. subxt = ["dep:subxt-core"] # The getrandom package is used via schnorrkel. We need to enable the JS # feature on it if compiling for the web. web = ["getrandom/js"] [dependencies] subxt-core = { workspace = true, optional = true, default-features = false } secrecy = { workspace = true } regex = { workspace = true, features = ["unicode"] } hex = { workspace = true, features = ["alloc"] } cfg-if = { workspace = true } codec = { package = "parity-scale-codec", workspace = true, features = [ "derive", ] } polkadot-sdk = { workspace = true, features = ["sp-crypto-hashing"] } pbkdf2 = { workspace = true } sha2 = { workspace = true } hmac = { workspace = true } zeroize = { workspace = true } bip39 = { workspace = true } bip32 = { workspace = true, features = ["alloc", "secp256k1"], optional = true } schnorrkel = { workspace = true, optional = true } secp256k1 = { workspace = true, optional = true, features = [ "alloc", "recovery", ] } keccak-hash = { workspace = true, optional = true } # These are used if the polkadot-js-compat feature is enabled serde = { workspace = true, optional = true } serde_json = { workspace = true, optional = true } base64 = { workspace = true, optional = true, features = ["alloc"] } scrypt = { workspace = true, default-features = false, optional = true } crypto_secretbox = { workspace = true, optional = true, features = ["alloc", "salsa20"] } # We only pull this in to enable the JS flag for schnorrkel to use. getrandom = { workspace = true, optional = true } [dev-dependencies] proptest = { workspace = true } hex-literal = { workspace = true } polkadot-sdk = { workspace = true, features = ["sp-core", "sp-keyring"] } [package.metadata.cargo-machete] ignored = ["getrandom"] [package.metadata.docs.rs] default-features = true rustdoc-args = ["--cfg", "docsrs"] [package.metadata.playground] default-features = true [lints] workspace = true