aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2019-01-25 18:46:57 +0000
committerRobin Krahl <robin.krahl@ireas.org>2019-01-25 19:49:35 +0100
commit809d31a4273505487febb2dd281376d2bb3766ab (patch)
tree127b0fa98b7c9e309e7de9a05506dba720e878af /src
parent846c34226572d53bf93bb4191f4742eb6eaa37b1 (diff)
downloadnitrokey-rs-809d31a4273505487febb2dd281376d2bb3766ab.tar.gz
nitrokey-rs-809d31a4273505487febb2dd281376d2bb3766ab.tar.bz2
Remove rand_core::Error from public API
rand_core does not have a stable release yet, and it is unlikely that there will be one soon. To be able to stabilize nitrokey without waiting for a stable rand_core version, we remove the rand_core::Error type from the public API and replace it with a Box<dyn error::Error>.
Diffstat (limited to 'src')
-rw-r--r--src/error.rs10
-rw-r--r--src/util.rs2
2 files changed, 3 insertions, 9 deletions
diff --git a/src/error.rs b/src/error.rs
index 9cdb932..1b36975 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -19,7 +19,7 @@ pub enum Error {
/// A library usage error.
LibraryError(LibraryError),
/// An error that occured during random number generation.
- RandError(rand_core::Error),
+ RandError(Box<dyn error::Error>),
/// An error that is caused by an unexpected value returned by libnitrokey.
UnexpectedError,
/// An unknown error returned by libnitrokey.
@@ -60,12 +60,6 @@ impl From<LibraryError> for Error {
}
}
-impl From<rand_core::Error> for Error {
- fn from(error: rand_core::Error) -> Self {
- Error::RandError(error)
- }
-}
-
impl From<str::Utf8Error> for Error {
fn from(error: str::Utf8Error) -> Self {
Error::Utf8Error(error)
@@ -84,7 +78,7 @@ impl error::Error for Error {
Error::CommandError(ref err) => Some(err),
Error::CommunicationError(ref err) => Some(err),
Error::LibraryError(ref err) => Some(err),
- Error::RandError(ref err) => Some(err),
+ Error::RandError(ref err) => Some(err.as_ref()),
Error::UnexpectedError => None,
Error::Unknown(_) => None,
Error::Utf8Error(ref err) => Some(err),
diff --git a/src/util.rs b/src/util.rs
index 5f25655..d87cd7c 100644
--- a/src/util.rs
+++ b/src/util.rs
@@ -73,7 +73,7 @@ pub fn get_last_error() -> Error {
}
pub fn generate_password(length: usize) -> Result<Vec<u8>, Error> {
- let mut rng = OsRng::new()?;
+ let mut rng = OsRng::new().map_err(|err| Error::RandError(Box::new(err)))?;
let mut data = vec![0u8; length];
rng.fill_bytes(&mut data[..]);
Ok(data)