[package] name = "sp-core" version = "34.0.0" authors.workspace = true edition.workspace = true license = "Apache-2.0" homepage = "https://substrate.io" repository.workspace = true description = "Shareable Substrate types. (polkadot v1.13.0)" documentation = "https://docs.rs/sp-core" [lints] workspace = true [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } log = { workspace = true } serde = { optional = true, features = ["alloc", "derive"], workspace = true } bounded-collections = { version = "0.2.0", default-features = false } primitive-types = { version = "0.12.0", default-features = false, features = ["codec", "scale-info"] } impl-serde = { version = "0.4.0", default-features = false, optional = true } hash-db = { version = "0.16.0", default-features = false } hash256-std-hasher = { version = "0.15.2", default-features = false } bs58 = { version = "0.5.0", default-features = false, optional = true } rand = { version = "0.8.5", features = ["small_rng"], optional = true } substrate-bip39 = { path = "../../utils/substrate-bip39", default-features = false, version = "0.6.0" } # personal fork here as workaround for: https://github.com/rust-bitcoin/rust-bip39/pull/64 bip39 = { package = "parity-bip39", version = "2.0.1", default-features = false, features = ["alloc"] } zeroize = { version = "1.4.3", default-features = false } secrecy = { version = "0.8.0", default-features = false, features = ["alloc"] } parking_lot = { version = "0.12.1", optional = true } ss58-registry = { version = "1.34.0", default-features = false } sp-std = { path = "../std", default-features = false, version = "14.0.0" } sp-debug-derive = { path = "../debug-derive", default-features = false, version = "14.0.0" } sp-storage = { path = "../storage", default-features = false, version = "21.0.0" } sp-externalities = { path = "../externalities", optional = true, default-features = false, version = "0.29.0" } futures = { version = "0.3.30", optional = true } dyn-clonable = { version = "0.9.0", optional = true } thiserror = { optional = true, workspace = true } tracing = { version = "0.1.29", optional = true } bitflags = "1.3" paste = "1.0.7" itertools = { version = "0.11", optional = true } # full crypto array-bytes = { version = "6.2.2" } ed25519-zebra = { version = "4.0.3", default-features = false } blake2 = { version = "0.10.4", default-features = false, optional = true } libsecp256k1 = { version = "0.7", default-features = false, features = ["static-context"] } schnorrkel = { version = "0.11.4", features = ["preaudit_deprecated"], default-features = false } merlin = { version = "3.0", default-features = false } sp-crypto-hashing = { path = "../crypto/hashing", default-features = false, version = "0.1.0" } sp-runtime-interface = { path = "../runtime-interface", default-features = false, version = "28.0.0" } # k256 crate, better portability, intended to be used in substrate-runtimes (no-std) k256 = { version = "0.13.3", features = ["alloc", "ecdsa"], default-features = false } # secp256k1 crate, better performance, intended to be used on host side (std) secp256k1 = { version = "0.28.0", default-features = false, features = ["alloc", "recovery"], optional = true } # bls crypto w3f-bls = { version = "0.1.3", default-features = false, optional = true } [dev-dependencies] criterion = "0.5.1" serde_json = { workspace = true, default-features = true } lazy_static = "1.4.0" regex = "1.6.0" [[bench]] name = "bench" harness = false [lib] bench = false [features] default = ["std"] std = [ "bip39/rand", "bip39/std", "blake2/std", "bounded-collections/std", "bs58/std", "codec/std", "dyn-clonable", "ed25519-zebra/std", "full_crypto", "futures", "futures/thread-pool", "hash-db/std", "hash256-std-hasher/std", "impl-serde/std", "itertools", "k256/std", "libsecp256k1/std", "log/std", "merlin/std", "parking_lot", "primitive-types/byteorder", "primitive-types/rustc-hex", "primitive-types/serde", "primitive-types/std", "rand", "scale-info/std", "schnorrkel/std", "secp256k1/global-context", "secp256k1/std", "serde/std", "sp-crypto-hashing/std", "sp-debug-derive/std", "sp-externalities/std", "sp-runtime-interface/std", "sp-std/std", "sp-storage/std", "ss58-registry/std", "substrate-bip39/std", "thiserror", "tracing", "w3f-bls?/std", "zeroize/alloc", "zeroize/std", ] # Serde support without relying on std features. serde = [ "blake2", "bounded-collections/serde", "bs58/alloc", "dep:serde", "impl-serde", "k256/serde", "primitive-types/serde_no_std", "scale-info/serde", "sp-storage/serde", ] # This feature enables all crypto primitives for `no_std` builds like microcontrollers # or Intel SGX. # For the regular wasm runtime builds this should not be used. full_crypto = [ "blake2", "sp-runtime-interface/disable_target_static_assertions", ] # This feature adds BLS crypto primitives. # It should not be used in production since the implementation and interface may still # be subject to significant changes. bls-experimental = ["w3f-bls"]