Cargo Features

[dependencies]
ursa = { version = "0.3.7", default-features = false, features = ["aescbc", "aescbc_native", "aesgcm_native", "aesgcm", "asm", "benchmarkaesgcm", "benchmarked25519", "benchmarksecp256k1", "benchmarkxchacha20poly1305", "bls_bls12381", "bls_bn254", "bls_bn254_asm", "cl", "cl_native", "chacha20poly1305", "chacha20poly1305_native", "ecdh_secp256k1", "ecdh_secp256k1_native", "ecdh_secp256k1_asm", "ecdsa_secp256k1", "ecdsa_secp256k1_native", "ecdsa_secp256k1_asm", "ed25519", "ed25519_asm", "encryption", "encryption_asm", "ffi", "hashes", "hashes_asm", "kex", "kex_native", "kex_asm", "logger", "portable", "portable_wasm", "sharing", "sharing_native", "signatures", "signatures_native", "signatures_asm", "wasm", "x25519", "x25519_asm"] }
default = encryption, hashes, kex, serde, sharing_native, signatures_native

These default features are set whenever ursa is added without default-features = false somewhere in the dependency tree.

aescbc encryption = aead, aes, block-modes, block-padding, hex, hmac, rand, subtle, zeroize

Enables std of sha2 ^0.9.5

Affects symm::aescbc, ursa::encryption

aescbc_native encryption_asm? = aead, hex, openssl, rand, zeroize

Affects symm::aescbc, ursa::encryption

aesgcm_native encryption_asm? = aead, hex, openssl, rand, zeroize

Affects symm::aesgcm, ursa::encryption

aesgcm encryption = aead, aes-gcm, hex, rand, zeroize

Affects symm::aesgcm, ursa::encryption

asm = encryption_asm, ffi, hashes_asm, serde, signatures_asm
benchmarkaescbc benchmarkaesgcm = openssl
benchmarked25519 = libsodium-ffi
benchmarksecp256k1 = bitcoinsecp256k1, openssl
benchmarkxchacha20poly1305 = libsodium-ffi
bls_bls12381 signatures? signatures_asm? signatures_native = amcl_wrapper, hex, hkdf, zeroize

Affects signatures::bls, ursa::signatures, ursa::keys, ursa::utils

bls_bn254 signatures? signatures_native = amcl, failure, log, rand, sha3

Enables std of sha2 ^0.9.5

Affects wasm::bls, ursa::bls, ursa::pair, ursa::errors

bls_bn254_asm signatures_asm? = amcl, failure, log, rand, sha3

Enables asm of sha2 ^0.9.5

Affects ursa::bls, ursa::pair, ursa::errors

cl signatures? = amcl, failure, glass_pumpkin, int_traits, lazy_static, log, num-bigint, num-integer, num-traits, rand, time

Enables std of sha2 ^0.9.5

Affects ursa::bn, ursa::cl, utils::commitment, ursa::pair, ursa::errors, ursa::utils

cl_native signatures_asm? signatures_native = amcl, failure, int_traits, lazy_static, log, openssl, rand, time

Affects ursa::bn, ursa::cl, utils::commitment, ursa::pair, ursa::errors, ursa::utils

chacha20poly1305 encryption = aead, hex, rand, rustchacha20poly1305, zeroize

Affects symm::chacha20poly1305, symm::xchacha20poly1305, ursa::encryption

chacha20poly1305_native encryption_asm? = aead, hex, lazy_static, libsodium-ffi, rand, zeroize

Affects symm::chacha20poly1305, symm::xchacha20poly1305, ursa::encryption

ecdh_secp256k1 kex = amcl, arrayref, failure, hex, k256, rand, rand_chacha, zeroize

Enables std of sha2 ^0.9.5

Affects kex::secp256k1, ursa::kex, ursa::keys, ursa::utils

ecdh_secp256k1_native kex_native? = arrayref, bitcoinsecp256k1, failure, hex, log, rand, rand_chacha, zeroize

Enables std of sha2 ^0.9.5

Affects kex::secp256k1, ursa::kex, ursa::keys, ursa::utils

ecdh_secp256k1_asm kex_asm? = arrayref, bitcoinsecp256k1, failure, hex, log, rand, rand_chacha, zeroize

Enables asm of sha2 ^0.9.5

Affects kex::secp256k1, ursa::kex, ursa::keys, ursa::utils

ecdsa_secp256k1 signatures? = amcl, arrayref, failure, hex, k256, rand, rand_chacha, zeroize

Enables std of sha2 ^0.9.5

Affects wasm::secp256k1, signatures::secp256k1, signatures::EcdsaPublicKeyHandler, ursa::signatures, ursa::keys, ursa::utils

ecdsa_secp256k1_native signatures_native = arrayref, bitcoinsecp256k1, failure, hex, log, rand, rand_chacha, zeroize

Enables std of sha2 ^0.9.5

Affects signatures::secp256k1, signatures::EcdsaPublicKeyHandler, ursa::signatures, ursa::errors, ursa::keys, ursa::utils

ecdsa_secp256k1_asm signatures_asm? = arrayref, bitcoinsecp256k1, failure, hex, log, rand, rand_chacha, zeroize

Enables asm of sha2 ^0.9.5

Affects signatures::secp256k1, signatures::EcdsaPublicKeyHandler, ursa::signatures, ursa::errors, ursa::keys, ursa::utils

ed25519 signatures? signatures_native = arrayref, hex, rand, rand_chacha, zeroize

Enables std and u64_backend of ed25519-dalek ^1.0, std of sha2 ^0.9.5

Affects wasm::ed25519, signatures::ed25519, ursa::signatures, ursa::keys, ursa::utils

ed25519_asm signatures_asm? = arrayref, hex, rand, rand_chacha, zeroize

Enables nightly and simd_backend of ed25519-dalek ^1.0, asm of sha2 ^0.9.5

Affects signatures::ed25519, ursa::signatures, ursa::keys, ursa::utils

encryption default portable? = aescbc, aesgcm, chacha20poly1305

Affects wasm::encryption

encryption_asm asm? = aescbc_native, aesgcm_native, chacha20poly1305_native
ffi asm? = failure, ffi-support, logger, serde, serde_json, time

Affects errors::prelude, errors::set_current_error, errors::get_current_error_c_json, ursa::ffi, utils::ctypes, ursa::errors, ursa::utils

hashes default portable? = sha3

Enables std of blake2 ^0.9 and sha2 ^0.9.5

hashes_asm asm? = sha3

Enables simd_asm of blake2 ^0.9, asm of sha2 ^0.9.5

kex default portable? = ecdh_secp256k1, x25519
kex_native = ecdh_secp256k1_native, x25519
kex_asm = ecdh_secp256k1_asm, x25519_asm
logger ffi? = env_logger, log

Affects utils::logger

portable portable_wasm? = encryption, hashes, kex, serde, sharing, signatures

Enables no_cc of clear_on_drop

portable_wasm = portable, wasm
sharing portable? = failure, glass_pumpkin, int_traits, lazy_static, log, num-bigint, num-integer, num-traits, rand, time

Enables std of sha2 ^0.9.5

Affects ursa::bn, ursa::sharing, ursa::errors

sharing_native default = failure, int_traits, lazy_static, log, openssl, rand, time

Affects ursa::bn, ursa::sharing, ursa::errors

signatures portable? = bls_bls12381, bls_bn254, cl, ecdsa_secp256k1, ed25519
signatures_native default = bls_bls12381, bls_bn254, cl_native, ecdsa_secp256k1_native, ed25519
signatures_asm asm? = bls_bls12381, bls_bn254_asm, cl_native, ecdsa_secp256k1_asm, ed25519_asm
wasm portable_wasm? = console_error_panic_hook, failure, hex, js-sys, log, serde, serde_json, wasm-bindgen, zeroize

Enables rand ^0.7

TODO: Find out if the wasm-bindgen feature can be made dependent on our own wasm feature

Affects ursa::wasm, ursa::errors, ursa::keys, ursa::utils

x25519 kex kex_native? = arrayref, hex, rand, rand_chacha, zeroize

Enables std and u64_backend of curve25519-dalek ^3.1, std of sha2 ^0.9.5, std and u64_backend of x25519-dalek ^1.1

Affects wasm::x25519, kex::x25519, ursa::kex, ursa::keys, ursa::utils

x25519_asm kex_asm? = arrayref, hex, rand, rand_chacha, zeroize

Enables avx2_backend and nightly of curve25519-dalek ^3.1, asm of sha2 ^0.9.5, nightly and u64_backend of x25519-dalek ^1.1

Affects kex::x25519, ursa::kex, ursa::keys, ursa::utils

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features.

aead aescbc? aescbc_native? aesgcm? aesgcm_native? chacha20poly1305? chacha20poly1305_native?

Enables aead ^0.3

aes aescbc?

Enables aes ^0.6

aes-gcm aesgcm?

Enables aes-gcm ^0.8

amcl bls_bn254? bls_bn254_asm? cl? cl_native? ecdh_secp256k1? ecdsa_secp256k1?
amcl_wrapper bls_bls12381?
arrayref ecdh_secp256k1? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1? ecdsa_secp256k1_asm? ecdsa_secp256k1_native? ed25519? ed25519_asm? x25519? x25519_asm?
blake2 hashes hashes_asm?

Enables blake2 ^0.9

Affects hash::blake2, ursa::hash

block-modes aescbc?

Enables block-modes ^0.7

block-padding aescbc?

Enables block-padding ^0.2

clear_on_drop portable?
console_error_panic_hook wasm?
curve25519-dalek x25519? x25519_asm?

Enables curve25519-dalek ^3.1

ed25519-dalek ed25519? ed25519_asm?

Enables ed25519-dalek ^1.0

env_logger logger?

Enables env_logger ^0.7.0

failure bls_bn254? bls_bn254_asm? cl? cl_native? ecdh_secp256k1? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1? ecdsa_secp256k1_asm? ecdsa_secp256k1_native? ffi? sharing? sharing_native wasm?
ffi-support ffi?
glass_pumpkin cl? sharing?

Enables glass_pumpkin ^0.4

hex aescbc? aescbc_native? aesgcm? aesgcm_native? bls_bls12381? chacha20poly1305? chacha20poly1305_native? ecdh_secp256k1? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1? ecdsa_secp256k1_asm? ecdsa_secp256k1_native? ed25519? ed25519_asm? wasm? x25519? x25519_asm?
hkdf bls_bls12381?

Enables hkdf ^0.11.0

hmac aescbc?

Enables hmac ^0.11.0

int_traits cl? cl_native? sharing? sharing_native
js-sys wasm?
lazy_static chacha20poly1305_native? cl? cl_native? sharing? sharing_native
libsodium-ffi benchmarked25519? benchmarkxchacha20poly1305? chacha20poly1305_native?
log bls_bn254? bls_bn254_asm? cl? cl_native? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1_asm? ecdsa_secp256k1_native? logger? sharing? sharing_native wasm?
num-bigint cl? sharing?

Enables num-bigint ^0.3.0

num-integer cl? sharing?

Enables num-integer =0.1.42

num-traits cl? sharing?

Enables num-traits =0.2.11

openssl aescbc_native? aesgcm_native? benchmarkaescbc? benchmarkaesgcm? benchmarksecp256k1? cl_native? sharing_native
rand aescbc? aescbc_native? aesgcm? aesgcm_native? bls_bn254? bls_bn254_asm? chacha20poly1305? chacha20poly1305_native? cl? cl_native? ecdh_secp256k1? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1? ecdsa_secp256k1_asm? ecdsa_secp256k1_native? ed25519? ed25519_asm? sharing? sharing_native wasm? x25519? x25519_asm?

Enables rand ^0.7

rand_chacha ecdh_secp256k1? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1? ecdsa_secp256k1_asm? ecdsa_secp256k1_native? ed25519? ed25519_asm? x25519? x25519_asm?

Enables rand_chacha =0.2.1

rustchacha20poly1305 chacha20poly1305?

Enables chacha20poly1305 ^0.7

k256 ecdh_secp256k1? ecdsa_secp256k1?

Enables k256 ^0.9.6

bitcoinsecp256k1 benchmarksecp256k1? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1_asm? ecdsa_secp256k1_native?

Enables secp256k1 ^0.19

serde default asm? ffi? portable? wasm?
serde_json ffi? wasm?
sha2 aescbc? bls_bn254? bls_bn254_asm? cl? ecdh_secp256k1? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1? ecdsa_secp256k1_asm? ecdsa_secp256k1_native? ed25519? ed25519_asm? hashes hashes_asm? sharing? x25519? x25519_asm?

Enables sha2 ^0.9.5

Affects ursa::hash

sha3 bls_bn254? bls_bn254_asm? hashes hashes_asm?

Enables sha3 ^0.9.1

Affects ursa::hash

subtle aescbc?
time cl? cl_native? ffi? sharing? sharing_native

Enables time ^0.1

wasm-bindgen wasm?
x25519-dalek x25519? x25519_asm?

Enables x25519-dalek ^1.1

zeroize aescbc? aescbc_native? aesgcm? aesgcm_native? bls_bls12381? chacha20poly1305? chacha20poly1305_native? ecdh_secp256k1? ecdh_secp256k1_asm? ecdh_secp256k1_native? ecdsa_secp256k1? ecdsa_secp256k1_asm? ecdsa_secp256k1_native? ed25519? ed25519_asm? wasm? x25519? x25519_asm?