diff --git a/Cargo.lock b/Cargo.lock index 103d2e8ee..877cd2b16 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1074,15 +1074,6 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" -[[package]] -name = "js-sys" -version = "0.3.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" -dependencies = [ - "wasm-bindgen", -] - [[package]] name = "kernel32-sys" version = "0.2.2" @@ -1753,21 +1744,6 @@ dependencies = [ "quick-error", ] -[[package]] -name = "ring" -version = "0.16.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5911690c9b773bab7e657471afc207f3827b249a657241327e3544d79bcabdd" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi 0.3.9", -] - [[package]] name = "rmp" version = "0.8.9" @@ -1950,12 +1926,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "standback" version = "0.2.13" @@ -2031,17 +2001,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "sync-server" -version = "0.1.0" -dependencies = [ - "actix-rt", - "actix-web", - "failure", - "futures", - "taskchampion", -] - [[package]] name = "synstructure" version = "0.12.4" @@ -2063,7 +2022,6 @@ dependencies = [ "kv", "lmdb-rkv", "proptest", - "ring", "serde", "serde_json", "tempdir", @@ -2082,6 +2040,17 @@ dependencies = [ "taskchampion", ] +[[package]] +name = "taskchampion-sync-server" +version = "0.1.0" +dependencies = [ + "actix-rt", + "actix-web", + "failure", + "futures", + "taskchampion", +] + [[package]] name = "tempdir" version = "0.3.7" @@ -2390,12 +2359,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "url" version = "2.2.0" @@ -2505,16 +2468,6 @@ version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" -[[package]] -name = "web-sys" -version = "0.3.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "widestring" version = "0.4.3" diff --git a/taskchampion/Cargo.toml b/taskchampion/Cargo.toml index 509a7db8b..1f6681454 100644 --- a/taskchampion/Cargo.toml +++ b/taskchampion/Cargo.toml @@ -12,7 +12,6 @@ chrono = { version = "0.4.10", features = ["serde"] } failure = {version = "0.1.5", features = ["derive"] } kv = {version = "0.10.0", features = ["msgpack-value"]} lmdb-rkv = {version = "0.12.3"} -ring = { version = "0.16.17", features = ["std"] } [dev-dependencies] proptest = "0.9.4" diff --git a/taskchampion/src/server/mod.rs b/taskchampion/src/server/mod.rs index 0331bb63c..26e021957 100644 --- a/taskchampion/src/server/mod.rs +++ b/taskchampion/src/server/mod.rs @@ -2,7 +2,6 @@ pub(crate) mod test; mod local; -mod signing; mod types; pub use local::LocalServer; diff --git a/taskchampion/src/server/signing.rs b/taskchampion/src/server/signing.rs deleted file mode 100644 index e1e49501a..000000000 --- a/taskchampion/src/server/signing.rs +++ /dev/null @@ -1,87 +0,0 @@ -#![allow(dead_code)] // TODO: temporary until this module is used -//! This is a general wrapper around an asymmetric-key signature system. - -use failure::Fallible; -use ring::{ - rand, - signature::{Ed25519KeyPair, KeyPair, Signature, UnparsedPublicKey, ED25519}, -}; - -type PublicKey = Vec; -type PrivateKey = Vec; - -/// Generate a pair of (public, private) key material (in fact the private key is a keypair) -pub fn new_keypair() -> Fallible<(PublicKey, PrivateKey)> { - let rng = rand::SystemRandom::new(); - let key_pkcs8 = Ed25519KeyPair::generate_pkcs8(&rng)?; - let key_pair = Ed25519KeyPair::from_pkcs8(key_pkcs8.as_ref())?; - let pub_key = key_pair.public_key(); - Ok(( - pub_key.as_ref().to_vec() as PublicKey, - key_pkcs8.as_ref().to_vec() as PrivateKey, - )) -} - -pub struct Signer { - key_pair: Ed25519KeyPair, -} - -impl Signer { - /// Create a new signer, given a pkcs#8 v2 document containing the keypair. - fn new(priv_key: PrivateKey) -> Fallible { - Ok(Self { - key_pair: Ed25519KeyPair::from_pkcs8(&priv_key)?, - }) - } - - pub fn sign>(&self, message: B) -> Fallible { - Ok(self.key_pair.sign(message.as_ref())) - } -} - -pub struct Verifier { - pub_key: PublicKey, -} - -impl Verifier { - fn new(pub_key: PublicKey) -> Fallible { - Ok(Self { pub_key }) - } - - pub fn verify, B2: AsRef<[u8]>>( - &self, - message: B1, - signature: B2, - ) -> Fallible<()> { - let pub_key = UnparsedPublicKey::new(&ED25519, &self.pub_key); - Ok(pub_key.verify(message.as_ref(), signature.as_ref())?) - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn test_verify_ok() -> Fallible<()> { - let (public, private) = new_keypair()?; - let signer = Signer::new(private)?; - let verifier = Verifier::new(public)?; - - let message = b"Hello, world"; - let signature = signer.sign(message)?; - verifier.verify(message, signature) - } - - #[test] - fn test_verify_bad_message() -> Fallible<()> { - let (public, private) = new_keypair()?; - let signer = Signer::new(private)?; - let verifier = Verifier::new(public)?; - - let message = b"Hello, world"; - let signature = signer.sign(message)?; - assert!(verifier.verify(b"Hello, cruel world", signature).is_err()); - Ok(()) - } -}