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:
- TEST_COMMAND=test FEATURES=--features="yolocrypto"
- TEST_COMMAND=test FEATURES=--features="yolocrypto serde"
- TEST_COMMAND=test FEATURES=--features="yolocrypto nightly"
- TEST_COMMAND=bench FEATURES=--features="yolocrypto 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]
version = "1.0"
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_cbor]
version = "0.6"
optional = true
[dependencies.arrayref]
version = "0.3.3"
@ -44,6 +39,9 @@ version = "^0.6"
[dev-dependencies.sha2]
version = "0.4"
[dev-dependencies.serde_cbor]
version = "0.6"
[features]
nightly = ["radix_51"]
default = ["std"]

View file

@ -286,11 +286,12 @@ impl CompressedMontgomeryU {
// structs containing `ExtendedPoint`s and use Serde's derived
// serializers to serialize those structures.
use serde::{Serialize, Deserialize};
use serde::{Serializer, Deserializer};
#[cfg(feature = "serde")]
use serde::{self, Serialize, Deserialize, Serializer, Deserializer};
#[cfg(feature = "serde")]
use serde::de::Visitor;
use serde;
#[cfg(feature = "serde")]
impl Serialize for ExtendedPoint {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer
@ -299,6 +300,7 @@ impl Serialize for ExtendedPoint {
}
}
#[cfg(feature = "serde")]
impl<'de> Deserialize<'de> for ExtendedPoint {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>
@ -1610,7 +1612,7 @@ mod test {
mod vartime {
use super::super::*;
use super::{A_SCALAR, B_SCALAR, A_TIMES_BASEPOINT, DOUBLE_SCALAR_MULT_RESULT};
/// Test double_scalar_mult_vartime vs ed25519.py
#[test]
fn double_scalar_mult_basepoint_vs_ed25519py() {
@ -1630,9 +1632,11 @@ mod test {
}
}
#[cfg(feature = "serde")]
use serde_cbor;
#[test]
#[cfg(feature = "serde")]
fn serde_cbor_basepoint_roundtrip() {
let output = serde_cbor::to_vec(&constants::ED25519_BASEPOINT).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
// serializers to serialize those structures.
use serde::{Serialize, Deserialize};
use serde::{Serializer, Deserializer};
#[cfg(feature = "serde")]
use serde::{self, Serialize, Deserialize, Serializer, Deserializer};
#[cfg(feature = "serde")]
use serde::de::Visitor;
use serde;
#[cfg(feature = "serde")]
impl Serialize for DecafPoint {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer
@ -129,6 +130,7 @@ impl Serialize for DecafPoint {
}
}
#[cfg(feature = "serde")]
impl<'de> Deserialize<'de> for DecafPoint {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>
@ -436,9 +438,11 @@ mod test {
use curve::Identity;
use super::*;
#[cfg(feature = "serde")]
use serde_cbor;
#[test]
#[cfg(feature = "serde")]
fn serde_cbor_basepoint_roundtrip() {
let output = serde_cbor::to_vec(&constants::DECAF_ED25519_BASEPOINT).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 digest;
//#[cfg(feature = "serde")]
#[cfg(feature = "serde")]
extern crate serde;
#[cfg(all(test, feature = "serde"))]
extern crate serde_cbor;
extern crate serde_json;
#[cfg(feature = "std")]
extern crate core;