Skip to content

Commit

Permalink
fix(serdey): use ByteBuf in alloc or std
Browse files Browse the repository at this point in the history
Signed-off-by: becominginsane <francesco@zondax.ch>
  • Loading branch information
Karrq committed Mar 18, 2021
1 parent 0d2be05 commit f3dde94
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
10 changes: 7 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ version = "0.11.5"
default-features = false
optional = true

[dependencies.cfg-if]
version = "1.0.0"
optional = true

[dependencies.sha2]
version = "0.9.3"
default-features = false
Expand Down Expand Up @@ -107,13 +111,13 @@ harness = false
default = ["std", "u64_backend", "getrandom"] # "rand"
preaudit_deprecated = []
nightly = ["curve25519-dalek/nightly", "rand/nightly"] # "zeroize/nightly"
alloc = ["curve25519-dalek/alloc", "rand_core/alloc"]
std = ["getrandom", "curve25519-dalek/std"] # "failure/std"
alloc = ["curve25519-dalek/alloc", "rand_core/alloc", "serde_bytes/alloc"]
std = ["getrandom", "curve25519-dalek/std", "serde_bytes/std"] # "failure/std"
asm = ["sha2/asm"]
u64_backend = ["curve25519-dalek/u64_backend"]
u32_backend = ["curve25519-dalek/u32_backend"]
avx2_backend = ["curve25519-dalek/avx2_backend"]
serde = ["serde_crate", "serde_bytes"]
serde = ["serde_crate", "serde_bytes", "cfg-if"]
# We cannot make getrandom a direct dependency because rand_core makes
# getrandom a feature name, which requires forwarding.
getrandom = ["rand_core/getrandom"]
Expand Down
8 changes: 7 additions & 1 deletion src/serdey.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,13 @@ impl ::serde_crate::Serialize for $t {

impl<'d> ::serde_crate::Deserialize<'d> for $t {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: ::serde_crate::Deserializer<'d> {
let bytes = <&::serde_bytes::Bytes>::deserialize(deserializer)?;
cfg_if::cfg_if!{
if #[cfg(any(feature = "alloc", feature = "std"))] {
let bytes = <::serde_bytes::ByteBuf>::deserialize(deserializer)?;
} else {
let bytes = <&::serde_bytes::Bytes>::deserialize(deserializer)?;
}
}

Self::from_bytes(bytes.as_ref())
.map_err(crate::errors::serde_error_from_signature_error)
Expand Down

0 comments on commit f3dde94

Please sign in to comment.