// Copyright 2015-2016 Brian Smith. // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice appear in all copies. // // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY // SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. //! Safe, fast, small crypto using Rust with BoringSSL's cryptography //! primitives. //! //! # Feature Flags //! //! //!
Feature //! Description //!
alloc (default) //! Enable features that require use of the heap, RSA in particular. //!
std //! Enable features that use libstd, in particular //! std::error::Error integration. Implies `alloc`. //!
wasm32_unknown_unknown_js //! When this feature is enabled, for the wasm32-unknown-unknown target, //! Web APIs will be used to implement features like `ring::rand` that //! require an operating environment of some kind. This has no effect //! for any other target. This enables the `getrandom` crate's `js` //! feature. //!
// When running mk/package.sh, don't actually build any code. #![cfg(not(pregenerate_asm_only))] #![doc(html_root_url = "https://briansmith.org/rustdoc/")] #![allow( missing_copy_implementations, missing_debug_implementations, non_camel_case_types, non_snake_case, unsafe_code )] // `#[derive(...)]` uses `trivial_numeric_casts` and `unused_qualifications` // internally. #![deny(missing_docs, variant_size_differences)] #![forbid(unused_results)] #![no_std] #[cfg(feature = "alloc")] extern crate alloc; #[macro_use] mod debug; #[macro_use] mod prefixed; #[macro_use] pub mod test; #[macro_use] mod arithmetic; #[macro_use] mod bssl; #[macro_use] mod polyfill; pub mod aead; #[cfg(not(target_arch = "wasm32"))] pub mod agreement; mod bits; pub(crate) mod c; pub mod constant_time; pub mod io; mod cpu; pub mod digest; mod ec; mod endian; pub mod error; pub mod hkdf; pub mod hmac; mod limb; pub mod pbkdf2; pub mod pkcs8; pub mod rand; #[cfg(feature = "alloc")] pub mod rsa; pub mod signature; mod sealed { /// Traits that are designed to only be implemented internally in *ring*. // // Usage: // ``` // use crate::sealed; // // pub trait MyType: sealed::Sealed { // // [...] // } // // impl sealed::Sealed for MyType {} // ``` pub trait Sealed {} }