# Copyright 2018 Google LLC
#
# Use of this source code is governed by an MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT.

[package]
name = "mundane"
# remember to update html_root_url
# TODO(joshlf): use version-sync crate to test this in CI
version = "0.4.0"
authors = ["Joshua Liebow-Feeser <joshlf@google.com>"]
description = "Cryptography which is easy to use and hard to misuse"
readme = "README.md"
license-file = "LICENSE"
keywords = ["boringssl"]
categories = ["cryptography"]
repository = "https://mundane.googlesource.com/mundane"
documentation = "https://joshlf.com/rustdoc/mundane"

# Exclude these test files in order to get under the minimum crates.io crate
# file size.
exclude = [
    "boringssl/boringssl/fuzz/*",
    "boringssl/boringssl/third_party/wycheproof_testvectors/*",
    "boringssl/boringssl/crypto/fipsmodule/*/*_tests.txt",
    "boringssl/boringssl/crypto/cipher_extra/test/*"
]

build = "build/main.rs"
[build-dependencies]
goblin = "0.0.24"

# If you edit this list, make sure to update test.sh!
[features]
default = ["rsa-test-generate-large-keys"]
insecure = []
kdf = []
bytes = []
rsa-pkcs1v15 = []
# Run the RSA `test_generate` test with larger key sizes. This is disabled in
# some configurations because large RSA keys take a long time to generate. This
# feature only affects tests, so shouldn't be relevant to most consumers.
rsa-test-generate-large-keys = []
experimental-sha512-ec = []
# Run the `boringssl/test_symbol_conflict.sh` test during `cargo test`. This is
# disabled by default because the test takes a long time to run.
run-symbol-conflict-test = []
