|
3 | 3 | use core::fmt;
|
4 | 4 |
|
5 | 5 | /// Error type.
|
6 |
| -// TODO(tarcieri): finer-grained context-specific errors? |
| 6 | +// TODO(tarcieri): consolidate/replace with `password_hash::Error` |
7 | 7 | #[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
8 | 8 | pub enum Error {
|
9 | 9 | /// Associated data is too long
|
@@ -77,3 +77,28 @@ impl fmt::Display for Error {
|
77 | 77 | })
|
78 | 78 | }
|
79 | 79 | }
|
| 80 | + |
| 81 | +#[cfg(feature = "password-hash")] |
| 82 | +#[cfg_attr(docsrs, doc(cfg(feature = "password-hash")))] |
| 83 | +impl From<Error> for password_hash::Error { |
| 84 | + fn from(err: Error) -> password_hash::Error { |
| 85 | + match err { |
| 86 | + Error::AdTooLong => password_hash::Error::ParamValueInvalid, |
| 87 | + Error::AlgorithmInvalid => password_hash::Error::Algorithm, |
| 88 | + Error::LanesTooFew => password_hash::Error::ParamValueInvalid, |
| 89 | + Error::LanesTooMany => password_hash::Error::ParamValueInvalid, |
| 90 | + Error::MemoryTooLittle => password_hash::Error::ParamValueInvalid, |
| 91 | + Error::MemoryTooMuch => password_hash::Error::ParamValueInvalid, |
| 92 | + Error::PwdTooLong => password_hash::Error::Password, |
| 93 | + Error::OutputTooShort => password_hash::Error::OutputTooShort, |
| 94 | + Error::OutputTooLong => password_hash::Error::OutputTooLong, |
| 95 | + Error::SaltTooShort => password_hash::Error::SaltTooLong, |
| 96 | + Error::SaltTooLong => password_hash::Error::SaltTooLong, |
| 97 | + Error::SecretTooLong => password_hash::Error::ParamValueInvalid, |
| 98 | + Error::ThreadsTooFew => password_hash::Error::ParamValueInvalid, |
| 99 | + Error::ThreadsTooMany => password_hash::Error::ParamValueInvalid, |
| 100 | + Error::TimeTooSmall => password_hash::Error::ParamValueInvalid, |
| 101 | + Error::VersionInvalid => password_hash::Error::Version, |
| 102 | + } |
| 103 | + } |
| 104 | +} |
0 commit comments