diff --git a/Cargo.lock b/Cargo.lock index c0d14e318..f6b83fadc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5521,7 +5521,7 @@ dependencies = [ "sc-tracing 3.0.0", "serde", "serde_json", - "sp-application-crypto", + "sp-core", "tokio 1.9.0", "tracing", "tracing-test", diff --git a/crates/robonode-server/Cargo.toml b/crates/robonode-server/Cargo.toml index d01458303..906ac3437 100644 --- a/crates/robonode-server/Cargo.toml +++ b/crates/robonode-server/Cargo.toml @@ -17,7 +17,7 @@ rand = "0.7" reqwest = "0.11" sc-tracing = "3" serde = { version = "1", features = ["derive"] } -sp-application-crypto = { git = "https://github.com/humanode-network/substrate", branch = "master" } +sp-core = { git = "https://github.com/humanode-network/substrate", branch = "master" } tokio = { version = "1", features = ["full"] } tracing = "0.1" uuid = { version = "0.8", features = ["v4"] } diff --git a/crates/robonode-server/src/http/tests.rs b/crates/robonode-server/src/http/tests.rs index 6e60d367e..f2b71eba6 100644 --- a/crates/robonode-server/src/http/tests.rs +++ b/crates/robonode-server/src/http/tests.rs @@ -4,7 +4,6 @@ use mockall::predicate::*; use mockall::*; use primitives_auth_ticket::OpaqueAuthTicket; use primitives_liveness_data::OpaqueLivenessData; -use sp_application_crypto::sp_core::hexdisplay::AsBytesRef; use warp::hyper::StatusCode; use crate::{ @@ -167,7 +166,7 @@ async fn it_works_authenticate() { let expected_response = serde_json::to_string(&provide_authenticate_response()).unwrap(); assert_eq!(res.status(), StatusCode::OK); - assert_eq!(res.body().as_bytes_ref(), expected_response.as_bytes()); + assert_eq!(res.body().as_ref(), expected_response.as_bytes()); } #[tokio::test] @@ -221,7 +220,7 @@ async fn it_works_get_facetec_session_token() { let expected_response = serde_json::to_string(&provide_facetec_session_token()).unwrap(); assert_eq!(res.status(), StatusCode::OK); - assert_eq!(res.body().as_bytes_ref(), expected_response.as_bytes()); + assert_eq!(res.body().as_ref(), expected_response.as_bytes()); } #[tokio::test] @@ -274,5 +273,5 @@ async fn it_works_get_facetec_device_sdk_params() { let expected_response = serde_json::to_string(&provide_facetec_device_sdk_params()).unwrap(); assert_eq!(res.status(), StatusCode::OK); - assert_eq!(res.body().as_bytes_ref(), expected_response.as_bytes()); + assert_eq!(res.body().as_ref(), expected_response.as_bytes()); } diff --git a/crates/robonode-server/src/lib.rs b/crates/robonode-server/src/lib.rs index 6bd54e176..ee6820f88 100644 --- a/crates/robonode-server/src/lib.rs +++ b/crates/robonode-server/src/lib.rs @@ -35,7 +35,7 @@ pub fn init( execution_id, facetec: facetec_api_client, signer: robonode_keypair, - public_key_type: PhantomData::, + public_key_type: PhantomData::>, }), facetec_device_sdk_params, }; diff --git a/crates/robonode-server/src/validator_key.rs b/crates/robonode-server/src/validator_key.rs index ed05d283f..9fb9e1ff1 100644 --- a/crates/robonode-server/src/validator_key.rs +++ b/crates/robonode-server/src/validator_key.rs @@ -1,17 +1,19 @@ //! The validator key integration logic. -use std::convert::TryFrom; +use std::convert::{TryFrom, TryInto}; -use sp_application_crypto::Public; -use sp_application_crypto::RuntimePublic; +use sp_core::crypto::{CryptoType, Pair, Public}; use crate::logic; -/// A validator public key implemented via substrate's aura consensus key. -pub struct AuraPublic(sp_application_crypto::sr25519::Public); +/// A validator public key implemented via substrate crypto. +pub struct SubstratePublic(::Public); #[async_trait::async_trait] -impl logic::Verifier> for AuraPublic { +impl logic::Verifier> for SubstratePublic +where + ::Signature: for<'a> TryFrom<&'a [u8]>, +{ type Error = (); async fn verify<'a, D>(&self, data: D, signature: Vec) -> Result @@ -19,26 +21,29 @@ impl logic::Verifier> for AuraPublic { D: AsRef<[u8]> + Send + 'a, { let data = data.as_ref(); - let signature = sp_application_crypto::sr25519::Signature::try_from(signature.as_slice())?; - Ok(self.0.verify(&data, &signature)) + let signature = signature.as_slice().try_into().map_err(|_| ())?; + Ok(T::Pair::verify(&signature, &data, &self.0)) } } -impl TryFrom<&[u8]> for AuraPublic { +impl TryFrom<&[u8]> for SubstratePublic +where + ::Public: for<'a> TryFrom<&'a [u8]>, +{ type Error = (); fn try_from(val: &[u8]) -> Result { - Ok(Self(sp_application_crypto::sr25519::Public::try_from(val)?)) + Ok(Self(val.try_into().map_err(|_| ())?)) } } -impl From for Vec { - fn from(val: AuraPublic) -> Self { - val.as_ref().to_vec() +impl From> for Vec { + fn from(val: SubstratePublic) -> Self { + val.0.to_raw_vec() } } -impl AsRef<[u8]> for AuraPublic { +impl AsRef<[u8]> for SubstratePublic { fn as_ref(&self) -> &[u8] { self.0.as_slice() }