Make serde an optional feature

This commit is contained in:
Henry de Valence 2017-05-14 18:06:59 -07:00
parent 7c32271346
commit 69fd268aa4
5 changed files with 22 additions and 15 deletions

View file

@ -7,6 +7,7 @@ rust:
env: env:
- TEST_COMMAND=test FEATURES=--features="yolocrypto" - TEST_COMMAND=test FEATURES=--features="yolocrypto"
- TEST_COMMAND=test FEATURES=--features="yolocrypto serde"
- TEST_COMMAND=test FEATURES=--features="yolocrypto nightly" - TEST_COMMAND=test FEATURES=--features="yolocrypto nightly"
- TEST_COMMAND=bench FEATURES=--features="yolocrypto bench" - TEST_COMMAND=bench FEATURES=--features="yolocrypto bench"
- TEST_COMMAND=bench FEATURES=--features="yolocrypto nightly bench" - TEST_COMMAND=bench FEATURES=--features="yolocrypto nightly bench"

View file

@ -20,12 +20,7 @@ travis-ci = { repository = "isislovecruft/curve25519-dalek", branch = "master"}
[dependencies.serde] [dependencies.serde]
version = "1.0" version = "1.0"
optional = true
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_cbor]
version = "0.6"
[dependencies.arrayref] [dependencies.arrayref]
version = "0.3.3" version = "0.3.3"
@ -44,6 +39,9 @@ version = "^0.6"
[dev-dependencies.sha2] [dev-dependencies.sha2]
version = "0.4" version = "0.4"
[dev-dependencies.serde_cbor]
version = "0.6"
[features] [features]
nightly = ["radix_51"] nightly = ["radix_51"]
default = ["std"] default = ["std"]

View file

@ -286,11 +286,12 @@ impl CompressedMontgomeryU {
// structs containing `ExtendedPoint`s and use Serde's derived // structs containing `ExtendedPoint`s and use Serde's derived
// serializers to serialize those structures. // serializers to serialize those structures.
use serde::{Serialize, Deserialize}; #[cfg(feature = "serde")]
use serde::{Serializer, Deserializer}; use serde::{self, Serialize, Deserialize, Serializer, Deserializer};
#[cfg(feature = "serde")]
use serde::de::Visitor; use serde::de::Visitor;
use serde;
#[cfg(feature = "serde")]
impl Serialize for ExtendedPoint { impl Serialize for ExtendedPoint {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer where S: Serializer
@ -299,6 +300,7 @@ impl Serialize for ExtendedPoint {
} }
} }
#[cfg(feature = "serde")]
impl<'de> Deserialize<'de> for ExtendedPoint { impl<'de> Deserialize<'de> for ExtendedPoint {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de> where D: Deserializer<'de>
@ -1630,9 +1632,11 @@ mod test {
} }
} }
#[cfg(feature = "serde")]
use serde_cbor; use serde_cbor;
#[test] #[test]
#[cfg(feature = "serde")]
fn serde_cbor_basepoint_roundtrip() { fn serde_cbor_basepoint_roundtrip() {
let output = serde_cbor::to_vec(&constants::ED25519_BASEPOINT).unwrap(); let output = serde_cbor::to_vec(&constants::ED25519_BASEPOINT).unwrap();
let parsed: ExtendedPoint = serde_cbor::from_slice(&output).unwrap(); let parsed: ExtendedPoint = serde_cbor::from_slice(&output).unwrap();

View file

@ -116,11 +116,12 @@ impl Identity for CompressedDecaf {
// structs containing `DecafPoint`s and use Serde's derived // structs containing `DecafPoint`s and use Serde's derived
// serializers to serialize those structures. // serializers to serialize those structures.
use serde::{Serialize, Deserialize}; #[cfg(feature = "serde")]
use serde::{Serializer, Deserializer}; use serde::{self, Serialize, Deserialize, Serializer, Deserializer};
#[cfg(feature = "serde")]
use serde::de::Visitor; use serde::de::Visitor;
use serde;
#[cfg(feature = "serde")]
impl Serialize for DecafPoint { impl Serialize for DecafPoint {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer where S: Serializer
@ -129,6 +130,7 @@ impl Serialize for DecafPoint {
} }
} }
#[cfg(feature = "serde")]
impl<'de> Deserialize<'de> for DecafPoint { impl<'de> Deserialize<'de> for DecafPoint {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de> where D: Deserializer<'de>
@ -436,9 +438,11 @@ mod test {
use curve::Identity; use curve::Identity;
use super::*; use super::*;
#[cfg(feature = "serde")]
use serde_cbor; use serde_cbor;
#[test] #[test]
#[cfg(feature = "serde")]
fn serde_cbor_basepoint_roundtrip() { fn serde_cbor_basepoint_roundtrip() {
let output = serde_cbor::to_vec(&constants::DECAF_ED25519_BASEPOINT).unwrap(); let output = serde_cbor::to_vec(&constants::DECAF_ED25519_BASEPOINT).unwrap();
let parsed: DecafPoint = serde_cbor::from_slice(&output).unwrap(); let parsed: DecafPoint = serde_cbor::from_slice(&output).unwrap();

View file

@ -47,10 +47,10 @@ extern crate arrayref;
extern crate generic_array; extern crate generic_array;
extern crate digest; extern crate digest;
//#[cfg(feature = "serde")] #[cfg(feature = "serde")]
extern crate serde; extern crate serde;
#[cfg(all(test, feature = "serde"))]
extern crate serde_cbor; extern crate serde_cbor;
extern crate serde_json;
#[cfg(feature = "std")] #[cfg(feature = "std")]
extern crate core; extern crate core;