pub enum EncryptError<E> {
Cipher(E),
Source(SourceError),
Shape(Refusal),
Count(LeafCount),
}Expand description
Why encryption failed.
A cipher’s own error is printed in the message rather than chained as
the source(), so a cipher error type need not implement Error.
Every failure is an error, never a panic, including the ones that look
like contract violations: a value too long for the frame’s u32 length
prefixes (Unencryptable::Unwritable,
Unencryptable::UnframablePassthrough) and a cipher that returns the
wrong number of leaves (EncryptError::Count). The value often comes
from a host (a JavaScript object, a Go frame) and the cipher may be a
remote key provider, so neither is under the caller’s control. A panic
there would let hostile input or a bad response abort the process: in
the Node binding, a panic aborts Node.
A type that derives Encrypt cannot hit most of these. The derive
refuses a duplicate key, a struct that seals nothing and a type too deep
for MAX_DEPTH at compile time, and
Timestamp (with the chrono feature) is a time
that cannot be a leap second. What remains is a value deeper than
MAX_DEPTH through a field whose type does not fix its depth (a
recursive type, a frame, a hand-written source), a value too long for
the frame, a source’s own error (such as a leap second in a
DateTime<Utc> field, or a passthrough frame that does not parse), a
Raw leaf whose value does not fit its logical type, and the cipher’s
own errors.
Variants§
Cipher(E)
The cipher refused to seal a leaf.
Source(SourceError)
The source stopped the walk, or a sink teed beside this one did (an index sink refusing a value, say); the error inside says which.
Shape(Refusal)
The value cannot be encrypted as given: why, and where in the
value. See Refusal.
Count(LeafCount)
The cipher returned the wrong number of leaves: a cipher bug, not a problem with the value.
Trait Implementations§
Source§impl<E: Debug> Debug for EncryptError<E>
impl<E: Debug> Debug for EncryptError<E>
Source§impl<E> Display for EncryptError<E>where
E: Display,
impl<E> Display for EncryptError<E>where
E: Display,
Source§impl<E> Error for EncryptError<E>
impl<E> Error for EncryptError<E>
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()