###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
#     bazel run //third_party/rust:crate_index
###############################################################################

load("@rules_rust//rust:defs.bzl", "rust_library")

package(default_visibility = ["//visibility:public"])

# licenses([
#     "TODO",  # MIT OR Apache-2.0
# ])

rust_library(
    name = "rsa",
    srcs = glob(["**/*.rs"]),
    aliases = {
        "@crate_index__num-bigint-dig-0.7.0//:num_bigint_dig": "num_bigint",
    },
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_features = [
        "alloc",
        "default",
        "pem",
        "std",
    ],
    crate_root = "src/lib.rs",
    edition = "2018",
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=rsa",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.5.0",
    deps = [
        "@crate_index__byteorder-1.4.3//:byteorder",
        "@crate_index__digest-0.9.0//:digest",
        "@crate_index__lazy_static-1.4.0//:lazy_static",
        "@crate_index__num-bigint-dig-0.7.0//:num_bigint_dig",
        "@crate_index__num-integer-0.1.45//:num_integer",
        "@crate_index__num-iter-0.1.43//:num_iter",
        "@crate_index__num-traits-0.2.15//:num_traits",
        "@crate_index__pkcs1-0.2.4//:pkcs1",
        "@crate_index__pkcs8-0.7.6//:pkcs8",
        "@crate_index__rand-0.8.5//:rand",
        "@crate_index__subtle-2.4.1//:subtle",
        "@crate_index__zeroize-1.4.3//:zeroize",
    ],
)
