ring/error/
mod.rs

1// Copyright 2016-2024 Brian Smith.
2//
3// Permission to use, copy, modify, and/or distribute this software for any
4// purpose with or without fee is hereby granted, provided that the above
5// copyright notice and this permission notice appear in all copies.
6//
7// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
15//! Error reporting.
16
17pub use self::{key_rejected::KeyRejected, unspecified::Unspecified};
18
19pub(crate) use self::{
20    input_too_long::InputTooLongError, len_mismatch_error::LenMismatchError,
21    too_much_output_requested::TooMuchOutputRequestedError,
22};
23
24mod input_too_long;
25mod into_unspecified;
26mod key_rejected;
27mod unspecified;
28
29#[cold]
30#[inline(never)]
31pub(crate) fn erase<T>(_: T) -> Unspecified {
32    Unspecified
33}
34
35cold_exhaustive_error! {
36    struct too_much_output_requested::TooMuchOutputRequestedError
37        with pub(crate) constructor {
38        // Note that this might not actually be the (exact) output length
39        // requested, and its units might be lost. For example, it could be any of
40        // the following:
41        //
42        //    * The length in bytes of the entire output.
43        //    * The length in bytes of some *part* of the output.
44        //    * A bit length.
45        //    * A length in terms of "blocks" or other grouping of output values.
46        //    * Some intermediate quantity that was used when checking the output
47        //      length.
48        //    * Some arbitrary value.
49        imprecise_output_length: usize
50    }
51}
52
53cold_exhaustive_error! {
54    struct len_mismatch_error::LenMismatchError
55        with pub(crate) constructor {
56        len: usize
57    }
58}