diff --git a/Cargo.toml b/Cargo.toml index 90f7349..8261780 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ ed25519-dalek = { version = "2.1.0", features = ["rand_core"] } rand_chacha = { version = "0.3.1", optional = true } rand_core = "0.6.4" reddsa = { git = "https://github.com/ZcashFoundation/reddsa.git", rev = "b9c3107e6ec5333a89a7fa064f2d10f749a90cce", features = ["frost", "frost-rerandomized"] } -siphasher = { version = "1.0.0", optional = true } +siphasher = { version = "1.0.0" } x25519-dalek = { version = "2.0.0", features = ["reusable_secrets", "static_secrets"] } [dev-dependencies] @@ -24,8 +24,8 @@ hex-literal = "0.4.1" rand = "0.8.5" [features] -default = ["std", "signing", "dkg"] +default = ["signing", "dkg"] std = [] -signing = ["dep:blake3", "dep:rand_chacha", "dep:siphasher", "std"] -dkg = ["std", "signing"] +signing = ["dep:blake3", "dep:rand_chacha", "std"] +dkg = ["signing"] diff --git a/src/checksum.rs b/src/checksum.rs index ecdfe02..bb3cb6c 100644 --- a/src/checksum.rs +++ b/src/checksum.rs @@ -2,8 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use std::error; -use std::fmt; +use core::fmt; use siphasher::sip::SipHasher24; @@ -32,5 +31,3 @@ impl fmt::Display for ChecksumError { } } } - -impl error::Error for ChecksumError {} diff --git a/src/dkg/round2.rs b/src/dkg/round2.rs index b9898fd..2085cef 100644 --- a/src/dkg/round2.rs +++ b/src/dkg/round2.rs @@ -319,18 +319,19 @@ impl CombinedPublicPackage { Ok(write_variable_length( writer, &self.packages, - |writer, pkg| Ok(pkg.serialize_without_sender_into(writer)?), + |writer, pkg| { + pkg.serialize_without_sender_into(writer) + .map_err(|_| io::Error::other("serialize_into failed")) + }, )?) } - pub fn deserialize_from(mut reader: R) -> io::Result { + pub fn deserialize_from(mut reader: R) -> Result { let sender_identity = Identity::deserialize_from(&mut reader)?; let packages = read_variable_length(reader, move |reader| { - Ok(PublicPackage::deserialize_without_sender_from( - reader, - sender_identity.clone(), - )?) + PublicPackage::deserialize_without_sender_from(reader, sender_identity.clone()) + .map_err(|_| io::Error::other("deserialization failed")) })?; Ok(Self { packages }) diff --git a/src/error.rs b/src/error.rs index 16b292b..e62888e 100644 --- a/src/error.rs +++ b/src/error.rs @@ -6,12 +6,13 @@ use reddsa::frost::redjubjub::frost::Error as FrostError; use reddsa::frost::redjubjub::JubjubBlake2b512; use crate::checksum::ChecksumError; +use crate::io; #[derive(Debug)] pub enum IronfishFrostError { InvalidInput, StdError, - IoError(std::io::Error), + IoError(io::Error), FrostError(FrostError), SignatureError(ed25519_dalek::SignatureError), ChecksumError(ChecksumError), @@ -23,8 +24,8 @@ impl From> for IronfishFrostError { } } -impl From for IronfishFrostError { - fn from(error: std::io::Error) -> Self { +impl From for IronfishFrostError { + fn from(error: io::Error) -> Self { IronfishFrostError::IoError(error) } } @@ -34,12 +35,3 @@ impl From for IronfishFrostError { IronfishFrostError::SignatureError(error) } } - -impl From for std::io::Error { - fn from(error: IronfishFrostError) -> Self { - match error { - IronfishFrostError::IoError(e) => e, - _ => std::io::Error::new(std::io::ErrorKind::Other, format!("{:?}", error)), - } - } -} diff --git a/src/lib.rs b/src/lib.rs index 994fbad..daed32c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,7 +11,6 @@ mod serde; -#[cfg(feature = "signing")] mod checksum; pub mod error;