From 1c8708ebaf4a2153fb585dc2a2a9c8421c4b18d5 Mon Sep 17 00:00:00 2001 From: Patrik Stas Date: Sun, 18 Oct 2020 13:11:07 +0200 Subject: [PATCH 1/7] Various messages:: cleanups - Move messages::proofs to indyvc::proofs, delete legacy code - Rename module messages to agency_vcx - Start removing depending on ::settings from ::agency_vcx - Remove concept of protocol_type from ::agency_vcx - Ignore legacy tests, fix compile errors Signed-off-by: Patrik Stas --- .../{messages => agency_vcx}/agent_utils.rs | 17 +- .../{messages => agency_vcx}/create_key.rs | 55 ++-- .../{messages => agency_vcx}/get_message.rs | 56 ++-- .../{messages => agency_vcx}/message_type.rs | 9 +- libvcx/src/{messages => agency_vcx}/mod.rs | 81 ++---- .../src/{messages => agency_vcx}/payload.rs | 7 +- libvcx/src/{messages => agency_vcx}/thread.rs | 0 .../update_connection.rs | 46 ++-- .../update_message.rs | 51 ++-- .../update_profile.rs | 49 ++-- libvcx/src/api/utils.rs | 12 +- libvcx/src/api/vcx.rs | 4 +- .../aries/handlers/connection/agent_info.rs | 8 +- .../aries/handlers/connection/connection.rs | 2 +- libvcx/src/aries/handlers/connection/mod.rs | 4 +- .../proof_presentation/prover/prover.rs | 1 - libvcx/src/aries/messages/a2a/message_type.rs | 2 +- libvcx/src/aries/messages/ack.rs | 2 +- .../src/aries/messages/connection/did_doc.rs | 2 +- .../messages/connection/problem_report.rs | 2 +- .../src/aries/messages/connection/response.rs | 2 +- .../src/aries/messages/discovery/disclose.rs | 2 +- libvcx/src/aries/messages/error.rs | 2 +- .../src/aries/messages/issuance/credential.rs | 2 +- .../messages/issuance/credential_offer.rs | 2 +- .../messages/issuance/credential_proposal.rs | 2 +- .../messages/issuance/credential_request.rs | 2 +- .../proof_presentation/presentation.rs | 24 +- .../presentation_proposal.rs | 2 +- .../presentation_request.rs | 35 +-- libvcx/src/aries/messages/trust_ping/ping.rs | 2 +- .../messages/trust_ping/ping_response.rs | 2 +- libvcx/src/aries/mod.rs | 6 +- libvcx/src/connection.rs | 17 +- libvcx/src/credential_def.rs | 2 +- libvcx/src/disclosed_proof.rs | 3 +- libvcx/src/disclosed_proof_utils.rs | 9 +- libvcx/src/indyvc/mod.rs | 1 + libvcx/src/{messages => indyvc}/proofs/mod.rs | 0 libvcx/src/indyvc/proofs/proof_message.rs | 57 ++++ .../proofs/proof_request.rs | 245 +----------------- libvcx/src/lib.rs | 3 +- libvcx/src/messages/proofs/proof_message.rs | 197 -------------- libvcx/src/proof_utils.rs | 6 +- libvcx/src/schema.rs | 2 +- libvcx/src/settings.rs | 30 +-- libvcx/src/utils/devsetup.rs | 8 +- libvcx/src/utils/mod.rs | 1 + libvcx/src/{messages => utils}/validation.rs | 0 49 files changed, 235 insertions(+), 841 deletions(-) rename libvcx/src/{messages => agency_vcx}/agent_utils.rs (96%) rename libvcx/src/{messages => agency_vcx}/create_key.rs (69%) rename libvcx/src/{messages => agency_vcx}/get_message.rs (86%) rename libvcx/src/{messages => agency_vcx}/message_type.rs (94%) rename libvcx/src/{messages => agency_vcx}/mod.rs (91%) rename libvcx/src/{messages => agency_vcx}/payload.rs (80%) rename libvcx/src/{messages => agency_vcx}/thread.rs (100%) rename libvcx/src/{messages => agency_vcx}/update_connection.rs (77%) rename libvcx/src/{messages => agency_vcx}/update_message.rs (80%) rename libvcx/src/{messages => agency_vcx}/update_profile.rs (78%) create mode 100644 libvcx/src/indyvc/mod.rs rename libvcx/src/{messages => indyvc}/proofs/mod.rs (100%) create mode 100644 libvcx/src/indyvc/proofs/proof_message.rs rename libvcx/src/{messages => indyvc}/proofs/proof_request.rs (60%) delete mode 100644 libvcx/src/messages/proofs/proof_message.rs rename libvcx/src/{messages => utils}/validation.rs (100%) diff --git a/libvcx/src/messages/agent_utils.rs b/libvcx/src/agency_vcx/agent_utils.rs similarity index 96% rename from libvcx/src/messages/agent_utils.rs rename to libvcx/src/agency_vcx/agent_utils.rs index 8dd2aca5da..339df50728 100644 --- a/libvcx/src/messages/agent_utils.rs +++ b/libvcx/src/agency_vcx/agent_utils.rs @@ -2,8 +2,8 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; use error::prelude::*; -use messages::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; -use messages::message_type::MessageTypes; +use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_vcx::message_type::MessageTypes; use settings; use utils::{constants, error, httpclient}; use utils::httpclient::{AgencyMockDecrypted}; @@ -386,12 +386,7 @@ pub fn update_agent_webhook(webhook_url: &str) -> VcxResult<()> { match settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID) { Ok(to_did) => { - match settings::get_protocol_type() { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => update_agent_webhook_v2(&to_did, com_method)?, - } + update_agent_webhook_v2(&to_did, com_method)?; } Err(e) => warn!("Unable to update webhook (did you provide remote did in the config?): {}", e) } @@ -413,12 +408,12 @@ fn update_agent_webhook_v2(to_did: &str, com_method: ComMethod) -> VcxResult<()> } pub fn send_message_to_agency(message: &A2AMessage, did: &str) -> VcxResult> { - let data = prepare_message_for_agency(message, &did, &settings::get_protocol_type())?; + let data = prepare_message_for_agency(message, &did)?; let response = httpclient::post_u8(&data) .map_err(|err| err.map(VcxErrorKind::InvalidHttpResponse, error::INVALID_HTTP_RESPONSE.message))?; - parse_response_from_agency(&response, &settings::get_protocol_type()) + parse_response_from_agency(&response) } #[cfg(test)] @@ -426,7 +421,7 @@ mod tests { use std::env; use api::vcx::vcx_shutdown; - use messages::agent_utils::{ComMethodType, Config, configure_wallet, connect_register_provision, update_agent_webhook}; + use agency_vcx::agent_utils::{ComMethodType, Config, configure_wallet, connect_register_provision, update_agent_webhook}; use utils::devsetup::{SetupMocks, SetupDefaults, SetupLibraryAgencyV2}; #[test] diff --git a/libvcx/src/messages/create_key.rs b/libvcx/src/agency_vcx/create_key.rs similarity index 69% rename from libvcx/src/messages/create_key.rs rename to libvcx/src/agency_vcx/create_key.rs index de81ff028b..9e0a2fe651 100644 --- a/libvcx/src/messages/create_key.rs +++ b/libvcx/src/agency_vcx/create_key.rs @@ -1,9 +1,9 @@ +use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_vcx::message_type::MessageTypes; use error::prelude::*; -use messages::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency, validation}; -use messages::message_type::MessageTypes; use settings; use settings::ProtocolTypes; -use utils::{constants, httpclient}; +use utils::{constants, httpclient, validation}; use utils::httpclient::AgencyMock; #[derive(Deserialize, Serialize, Debug, PartialEq)] @@ -30,8 +30,7 @@ pub struct CreateKeyResponse { #[derive(Debug)] pub struct CreateKeyBuilder { for_did: String, - for_verkey: String, - version: ProtocolTypes, + for_verkey: String } impl CreateKeyBuilder { @@ -40,8 +39,7 @@ impl CreateKeyBuilder { CreateKeyBuilder { for_did: String::new(), - for_verkey: String::new(), - version: settings::get_protocol_type(), + for_verkey: String::new() } } @@ -57,24 +55,11 @@ impl CreateKeyBuilder { Ok(self) } - pub fn version(&mut self, version: &Option) -> VcxResult<&mut Self> { - self.version = match version { - Some(version) => version.clone(), - None => settings::get_protocol_type() - }; - Ok(self) - } - pub fn send_secure(&self) -> VcxResult<(String, String)> { trace!("CreateKeyMsg::send >>>"); if settings::agency_mocks_enabled() { - match self.version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => AgencyMock::set_next_response(constants::CREATE_KEYS_V2_RESPONSE.to_vec()), - } + AgencyMock::set_next_response(constants::CREATE_KEYS_V2_RESPONSE.to_vec()); } let data = self.prepare_request()?; @@ -85,27 +70,21 @@ impl CreateKeyBuilder { } fn prepare_request(&self) -> VcxResult> { - let message = match self.version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => - A2AMessage::Version2( - A2AMessageV2::CreateKey(CreateKey { - msg_type: MessageTypes::MessageTypeV2(MessageTypes::build_v2(A2AMessageKinds::CreateKey)), - for_did: self.for_did.to_string(), - for_verkey: self.for_verkey.to_string(), - }) - ), - }; + let message = A2AMessage::Version2( + A2AMessageV2::CreateKey(CreateKey { + msg_type: MessageTypes::MessageTypeV2(MessageTypes::build_v2(A2AMessageKinds::CreateKey)), + for_did: self.for_did.to_string(), + for_verkey: self.for_verkey.to_string(), + }) + ); let agency_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; - prepare_message_for_agency(&message, &agency_did, &self.version) + prepare_message_for_agency(&message, &agency_did) } fn parse_response(&self, response: &Vec) -> VcxResult<(String, String)> { - let mut response = parse_response_from_agency(response, &self.version)?; + let mut response = parse_response_from_agency(response)?; match response.remove(0) { A2AMessage::Version2(A2AMessageV2::CreateKeyResponse(res)) => Ok((res.for_did, res.for_verkey)), _ => Err(VcxError::from(VcxErrorKind::InvalidHttpResponse)) @@ -115,7 +94,7 @@ impl CreateKeyBuilder { #[cfg(test)] mod tests { - use messages::create_keys; + use agency_vcx::create_keys; use utils::constants::{CREATE_KEYS_V2_RESPONSE, MY1_SEED, MY2_SEED, MY3_SEED}; use utils::devsetup::*; use utils::libindy::signus::create_and_store_my_did; @@ -162,7 +141,7 @@ mod tests { let mut builder = create_keys(); - let (for_did, for_verkey) = builder.version(&Some(ProtocolTypes::V2)).unwrap().parse_response(&CREATE_KEYS_V2_RESPONSE.to_vec()).unwrap(); + let (for_did, for_verkey) = builder.parse_response(&CREATE_KEYS_V2_RESPONSE.to_vec()).unwrap(); assert_eq!(for_did, "MNepeSWtGfhnv8jLB1sFZC"); assert_eq!(for_verkey, "C73MRnns4qUjR5N4LRwTyiXVPKPrA5q4LCT8PZzxVdt9"); diff --git a/libvcx/src/messages/get_message.rs b/libvcx/src/agency_vcx/get_message.rs similarity index 86% rename from libvcx/src/messages/get_message.rs rename to libvcx/src/agency_vcx/get_message.rs index 91944774de..5abbf69050 100644 --- a/libvcx/src/messages/get_message.rs +++ b/libvcx/src/agency_vcx/get_message.rs @@ -2,8 +2,8 @@ use std::collections::HashMap; use aries::utils::encryption_envelope::EncryptionEnvelope; use aries::handlers::connection::agent_info::AgentInfo; use error::{VcxError, VcxErrorKind, VcxResult}; -use messages::{A2AMessage, A2AMessageKinds, A2AMessageV2, GeneralMessage, get_messages, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency, prepare_message_for_agent, RemoteMessageType}; -use messages::message_type::MessageTypes; +use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, GeneralMessage, get_messages, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency, prepare_message_for_agent, RemoteMessageType}; +use agency_vcx::message_type::MessageTypes; use settings; use settings::ProtocolTypes; use utils::{constants, httpclient}; @@ -75,7 +75,6 @@ pub struct GetMessagesBuilder { uids: Option>, status_codes: Option>, pairwise_dids: Option>, - version: ProtocolTypes, } impl GetMessagesBuilder { @@ -90,16 +89,13 @@ impl GetMessagesBuilder { uids: None, exclude_payload: None, status_codes: None, - pairwise_dids: None, - version: settings::get_protocol_type(), + pairwise_dids: None } } #[cfg(test)] pub fn create_v1() -> GetMessagesBuilder { - let mut builder = GetMessagesBuilder::create(); - builder.version = settings::ProtocolTypes::V1; - builder + GetMessagesBuilder::create() } pub fn uid(&mut self, uids: Option>) -> VcxResult<&mut Self> { @@ -125,14 +121,6 @@ impl GetMessagesBuilder { Ok(self) } - pub fn version(&mut self, version: &Option) -> VcxResult<&mut Self> { - self.version = match version { - Some(version) => version.clone(), - None => settings::get_protocol_type() - }; - Ok(self) - } - pub fn send_secure(&mut self) -> VcxResult> { debug!("GetMessages::send >>> self.agent_vk={} self.agent_did={} self.to_did={} self.to_vk={}", self.agent_vk, self.agent_did, self.to_did, self.to_vk); @@ -146,7 +134,7 @@ impl GetMessagesBuilder { fn parse_response(&self, response: Vec) -> VcxResult> { trace!("parse_get_messages_response >>> processing payload of {} bytes", response.len()); - let mut response = parse_response_from_agency(&response, &self.version)?; + let mut response = parse_response_from_agency(&response)?; trace!("parse_get_messages_response >>> obtained agency response {:?}", response); @@ -187,13 +175,13 @@ impl GetMessagesBuilder { let agency_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; - prepare_message_for_agency(&message, &agency_did, &self.version) + prepare_message_for_agency(&message, &agency_did) } // todo: This should be removed after public method vcx_messages_download is removed fn parse_download_messages_response_noauth(&self, response: Vec) -> VcxResult> { trace!("parse_download_messages_response >>>"); - let mut response = parse_response_from_agency(&response, &self.version)?; + let mut response = parse_response_from_agency(&response)?; trace!("parse_download_messages_response: parsed response {:?}", response); let msgs = match response.remove(0) { @@ -223,23 +211,17 @@ impl GeneralMessage for GetMessagesBuilder { fn set_agent_vk(&mut self, vk: String) { self.agent_vk = vk; } fn prepare_request(&mut self) -> VcxResult> { - debug!("prepare_request >> This connection is using protocol_type: {:?}", self.version); - let message = match self.version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => - A2AMessage::Version2( - A2AMessageV2::GetMessages( - GetMessages::build(A2AMessageKinds::GetMessages, - self.exclude_payload.clone(), - self.uids.clone(), - self.status_codes.clone(), - self.pairwise_dids.clone())) - ), - }; + debug!("prepare_request >>"); + let message = A2AMessage::Version2( + A2AMessageV2::GetMessages( + GetMessages::build(A2AMessageKinds::GetMessages, + self.exclude_payload.clone(), + self.uids.clone(), + self.status_codes.clone(), + self.pairwise_dids.clone())) + ); - prepare_message_for_agent(vec![message], &self.to_vk, &self.agent_did, &self.agent_vk, &self.version) + prepare_message_for_agent(vec![message], &self.to_vk, &self.agent_did, &self.agent_vk) } } @@ -327,7 +309,6 @@ pub fn get_connection_messages(pw_did: &str, pw_vk: &str, agent_did: &str, agent .agent_vk(&agent_vk)? .uid(msg_uid)? .status_codes(status_codes)? - .version(version)? .send_secure() .map_err(|err| err.map(VcxErrorKind::PostMessageFailed, "Cannot get messages"))?; @@ -384,9 +365,8 @@ pub fn download_messages_noauth(pairwise_dids: Option>, status_codes .uid(uids)? .status_codes(status_codes)? .pairwise_dids(pairwise_dids)? - .version(&Some(::settings::get_protocol_type()))? .download_messages_noauth()?; trace!("message returned: {:?}", response); Ok(response) -} +} \ No newline at end of file diff --git a/libvcx/src/messages/message_type.rs b/libvcx/src/agency_vcx/message_type.rs similarity index 94% rename from libvcx/src/messages/message_type.rs rename to libvcx/src/agency_vcx/message_type.rs index 296a5cf1c9..37aa40a237 100644 --- a/libvcx/src/messages/message_type.rs +++ b/libvcx/src/agency_vcx/message_type.rs @@ -2,8 +2,8 @@ use regex::{Match, Regex}; use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; +use agency_vcx::A2AMessageKinds; use error::prelude::*; -use messages::A2AMessageKinds; use settings; pub const MESSAGE_VERSION_V1: &str = "1.0"; @@ -33,12 +33,7 @@ impl MessageTypes { } pub fn build(kind: A2AMessageKinds) -> MessageTypes { - match settings::get_protocol_type() { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => MessageTypes::MessageTypeV2(MessageTypes::build_v2(kind)) - } + MessageTypes::MessageTypeV2(MessageTypes::build_v2(kind)) } pub fn name<'a>(&'a self) -> &'a str { diff --git a/libvcx/src/messages/mod.rs b/libvcx/src/agency_vcx/mod.rs similarity index 91% rename from libvcx/src/messages/mod.rs rename to libvcx/src/agency_vcx/mod.rs index 6fe0527650..f44c6846f5 100644 --- a/libvcx/src/messages/mod.rs +++ b/libvcx/src/agency_vcx/mod.rs @@ -1,29 +1,25 @@ use std::u8; -use log; +use ::{log, settings}; use serde::{de, Deserialize, Deserializer, ser, Serialize, Serializer}; use serde_json::Value; use error::prelude::*; -use settings; -use settings::ProtocolTypes; use utils::httpclient::AgencyMockDecrypted; use utils::libindy::crypto; +use utils::validation; use self::agent_utils::{ComMethodUpdated, Connect, ConnectResponse, CreateAgent, CreateAgentResponse, SignUp, SignUpResponse, UpdateComMethod}; use self::create_key::{CreateKey, CreateKeyBuilder, CreateKeyResponse}; use self::get_message::{GetMessages, GetMessagesBuilder, GetMessagesResponse, MessagesByConnections}; use self::message_type::*; -use self::proofs::proof_request::ProofRequestMessage; use self::update_connection::{DeleteConnectionBuilder, UpdateConnection, UpdateConnectionResponse}; use self::update_message::{UpdateMessageStatusByConnections, UpdateMessageStatusByConnectionsResponse}; use self::update_profile::{UpdateConfigs, UpdateConfigsResponse, UpdateProfileDataBuilder}; pub mod create_key; -pub mod validation; pub mod get_message; pub mod update_profile; -pub mod proofs; pub mod agent_utils; pub mod update_connection; pub mod update_message; @@ -253,24 +249,17 @@ pub struct ForwardV2 { } impl ForwardV2 { - fn new(fwd: String, msg: Vec, version: ProtocolTypes) -> VcxResult { - match version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => { - let msg = serde_json::from_slice(msg.as_slice()) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidState, err))?; - - Ok(A2AMessage::Version2(A2AMessageV2::Forward( - ForwardV2 { - msg_type: MessageTypes::build_v2(A2AMessageKinds::Forward), - fwd, - msg, - } - ))) + fn new(fwd: String, msg: Vec) -> VcxResult { + let msg = serde_json::from_slice(msg.as_slice()) + .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidState, err))?; + + Ok(A2AMessage::Version2(A2AMessageV2::Forward( + ForwardV2 { + msg_type: MessageTypes::build_v2(A2AMessageKinds::Forward), + fwd, + msg, } - } + ))) } } @@ -506,13 +495,8 @@ impl A2AMessageKinds { } } -pub fn prepare_message_for_agency(message: &A2AMessage, agency_did: &str, version: &ProtocolTypes) -> VcxResult> { - match version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => pack_for_agency_v2(message, agency_did) - } +pub fn prepare_message_for_agency(message: &A2AMessage, agency_did: &str) -> VcxResult> { + pack_for_agency_v2(message, agency_did) } fn pack_for_agency_v2(message: &A2AMessage, agency_did: &str) -> VcxResult> { @@ -527,18 +511,7 @@ fn pack_for_agency_v2(message: &A2AMessage, agency_did: &str) -> VcxResult, version: &ProtocolTypes) -> VcxResult> { - trace!("parse_response_from_agency >>>"); - - match version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => parse_response_from_agency_v2(response) - } + prepare_forward_message(message, agency_did) } pub fn parse_message_from_response(response: &Vec) -> VcxResult { @@ -551,8 +524,8 @@ pub fn parse_message_from_response(response: &Vec) -> VcxResult { .ok_or(VcxError::from_msg(VcxErrorKind::InvalidJson, "Cannot find `message` field on response"))?.to_string()) } -fn parse_response_from_agency_v2(response: &Vec) -> VcxResult> { - trace!("parse_response_from_agency_v2 >>> processing payload of {} bytes", response.len()); +fn parse_response_from_agency(response: &Vec) -> VcxResult> { + trace!("parse_response_from_agency >>> processing payload of {} bytes", response.len()); let message: String = if AgencyMockDecrypted::has_decrypted_mock_responses() { warn!("parse_response_from_agency_v2 >> retrieving decrypted mock response"); @@ -626,10 +599,10 @@ pub fn bundle_from_u8(data: Vec) -> VcxResult>> { }) } -fn prepare_forward_message(message: Vec, did: &str, version: ProtocolTypes) -> VcxResult> { +fn prepare_forward_message(message: Vec, did: &str) -> VcxResult> { let agency_vk = settings::get_config_value(settings::CONFIG_AGENCY_VERKEY)?; - let message = ForwardV2::new(did.to_string(), message, version)?; + let message = ForwardV2::new(did.to_string(), message)?; match message { A2AMessage::Version2(A2AMessageV2::Forward(msg)) => prepare_forward_message_for_agency_v2(&msg, &agency_vk), @@ -647,17 +620,8 @@ fn prepare_forward_message_for_agency_v2(message: &ForwardV2, agency_vk: &str) - crypto::pack_message(None, &receiver_keys, message.as_bytes()) } -pub fn prepare_message_for_agent(messages: Vec, pw_vk: &str, agent_did: &str, agent_vk: &str, version: &ProtocolTypes) -> VcxResult> { +fn prepare_message_for_agent(messages: Vec, pw_vk: &str, agent_did: &str, agent_vk: &str) -> VcxResult> { debug!("prepare_message_for_agent >> {:?}", messages); - match version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => prepare_message_for_agent_v2(messages, pw_vk, agent_did, agent_vk) - } -} - -fn prepare_message_for_agent_v2(messages: Vec, pw_vk: &str, agent_did: &str, agent_vk: &str) -> VcxResult> { let message = messages.get(0) .ok_or(VcxError::from_msg(VcxErrorKind::SerializationError, "Cannot get message"))?; @@ -670,7 +634,7 @@ fn prepare_message_for_agent_v2(messages: Vec, pw_vk: &str, agent_di let message = crypto::pack_message(Some(pw_vk), &receiver_keys, message.as_bytes())?; /* forward to did */ - let message = ForwardV2::new(agent_did.to_owned(), message, ProtocolTypes::V2)?; + let message = ForwardV2::new(agent_did.to_owned(), message)?; let to_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; @@ -755,8 +719,6 @@ pub fn update_data() -> UpdateProfileDataBuilder { UpdateProfileDataBuilder::cre pub fn get_messages() -> GetMessagesBuilder { GetMessagesBuilder::create() } -pub fn proof_request() -> ProofRequestMessage { ProofRequestMessage::create() } - #[cfg(test)] pub mod tests { use utils::devsetup::*; @@ -783,5 +745,4 @@ pub mod tests { let buf = to_i8(&vec); info!("new bundle: {:?}", buf); } - } diff --git a/libvcx/src/messages/payload.rs b/libvcx/src/agency_vcx/payload.rs similarity index 80% rename from libvcx/src/messages/payload.rs rename to libvcx/src/agency_vcx/payload.rs index d492e816b3..7cc50b5a42 100644 --- a/libvcx/src/messages/payload.rs +++ b/libvcx/src/agency_vcx/payload.rs @@ -1,10 +1,9 @@ use serde_json::Value; use error::{VcxError, VcxErrorKind, VcxResult}; -use messages::get_message::MessagePayload; -use messages::message_type::*; -use messages::thread::Thread; -use settings::{get_protocol_type, ProtocolTypes}; +use agency_vcx::get_message::MessagePayload; +use agency_vcx::message_type::*; +use agency_vcx::thread::Thread; use utils::libindy::crypto; #[derive(Debug, Deserialize, Serialize, Clone, PartialEq)] diff --git a/libvcx/src/messages/thread.rs b/libvcx/src/agency_vcx/thread.rs similarity index 100% rename from libvcx/src/messages/thread.rs rename to libvcx/src/agency_vcx/thread.rs diff --git a/libvcx/src/messages/update_connection.rs b/libvcx/src/agency_vcx/update_connection.rs similarity index 77% rename from libvcx/src/messages/update_connection.rs rename to libvcx/src/agency_vcx/update_connection.rs index 47dbe86d6b..4c95fde13f 100644 --- a/libvcx/src/messages/update_connection.rs +++ b/libvcx/src/agency_vcx/update_connection.rs @@ -1,9 +1,9 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; +use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, delete_connection, GeneralMessage, parse_response_from_agency, prepare_message_for_agent}; +use agency_vcx::message_type::MessageTypes; use error::prelude::*; -use messages::{A2AMessage, A2AMessageKinds, A2AMessageV2, delete_connection, GeneralMessage, parse_response_from_agency, prepare_message_for_agent}; -use messages::message_type::MessageTypes; use settings; use utils::httpclient; @@ -61,7 +61,6 @@ pub struct DeleteConnectionBuilder { status_code: ConnectionStatus, agent_did: String, agent_vk: String, - version: settings::ProtocolTypes, } impl DeleteConnectionBuilder { @@ -73,19 +72,10 @@ impl DeleteConnectionBuilder { to_vk: String::new(), status_code: ConnectionStatus::Deleted, agent_did: String::new(), - agent_vk: String::new(), - version: settings::get_protocol_type(), + agent_vk: String::new() } } - pub fn version(&mut self, version: &Option) -> VcxResult<&mut Self> { - self.version = match version { - Some(version) => version.clone(), - None => settings::get_protocol_type() - }; - Ok(self) - } - pub fn send_secure(&mut self) -> VcxResult<()> { trace!("DeleteConnection::send >>>"); @@ -99,7 +89,7 @@ impl DeleteConnectionBuilder { fn parse_response(&self, response: &Vec) -> VcxResult<()> { trace!("parse_response >>>"); - let mut response = parse_response_from_agency(response, &self.version)?; + let mut response = parse_response_from_agency(response)?; match response.remove(0) { A2AMessage::Version2(A2AMessageV2::UpdateConnectionResponse(_)) => Ok(()), @@ -136,31 +126,25 @@ impl GeneralMessage for DeleteConnectionBuilder { } fn prepare_request(&mut self) -> VcxResult> { - let message = match self.version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => - A2AMessage::Version2( - A2AMessageV2::UpdateConnection( - UpdateConnection { - msg_type: MessageTypes::build(A2AMessageKinds::UpdateConnectionStatus), - status_code: self.status_code.clone(), - } - ) - ) - }; - - prepare_message_for_agent(vec![message], &self.to_vk, &self.agent_did, &self.agent_vk, &self.version) + let message = A2AMessage::Version2( + A2AMessageV2::UpdateConnection( + UpdateConnection { + msg_type: MessageTypes::build(A2AMessageKinds::UpdateConnectionStatus), + status_code: self.status_code.clone(), + } + ) + ); + + prepare_message_for_agent(vec![message], &self.to_vk, &self.agent_did, &self.agent_vk) } } #[cfg(test)] mod tests { + use utils::constants::DELETE_CONNECTION_DECRYPTED_RESPONSE; use utils::devsetup::SetupDefaults; use super::*; - use utils::constants::DELETE_CONNECTION_DECRYPTED_RESPONSE; #[test] #[cfg(feature = "general_test")] diff --git a/libvcx/src/messages/update_message.rs b/libvcx/src/agency_vcx/update_message.rs similarity index 80% rename from libvcx/src/messages/update_message.rs rename to libvcx/src/agency_vcx/update_message.rs index 914bfde096..170c638c98 100644 --- a/libvcx/src/messages/update_message.rs +++ b/libvcx/src/agency_vcx/update_message.rs @@ -1,6 +1,6 @@ use error::{VcxError, VcxErrorKind, VcxResult}; -use messages::{A2AMessage, A2AMessageKinds, A2AMessageV2, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency}; -use messages::message_type::MessageTypes; +use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency}; +use agency_vcx::message_type::MessageTypes; use settings; use utils::{constants, httpclient}; use utils::httpclient::AgencyMock; @@ -33,8 +33,7 @@ pub struct UIDsByConn { struct UpdateMessageStatusByConnectionsBuilder { status_code: Option, - uids_by_conns: Vec, - version: settings::ProtocolTypes, + uids_by_conns: Vec } impl UpdateMessageStatusByConnectionsBuilder { @@ -44,7 +43,6 @@ impl UpdateMessageStatusByConnectionsBuilder { UpdateMessageStatusByConnectionsBuilder { status_code: None, uids_by_conns: Vec::new(), - version: settings::get_protocol_type(), } } @@ -60,15 +58,6 @@ impl UpdateMessageStatusByConnectionsBuilder { Ok(self) } - #[allow(dead_code)] - pub fn version(&mut self, version: &Option) -> VcxResult<&mut Self> { - self.version = match version { - Some(version) => version.clone(), - None => settings::get_protocol_type() - }; - Ok(self) - } - pub fn send_secure(&mut self) -> VcxResult<()> { trace!("UpdateMessages::send >>>"); @@ -82,30 +71,24 @@ impl UpdateMessageStatusByConnectionsBuilder { } fn prepare_request(&mut self) -> VcxResult> { - let message = match self.version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => - A2AMessage::Version2( - A2AMessageV2::UpdateMessageStatusByConnections( - UpdateMessageStatusByConnections { - msg_type: MessageTypes::build(A2AMessageKinds::UpdateMessageStatusByConnections), - uids_by_conns: self.uids_by_conns.clone(), - status_code: self.status_code.clone(), - } - ) - ), - }; + let message = A2AMessage::Version2( + A2AMessageV2::UpdateMessageStatusByConnections( + UpdateMessageStatusByConnections { + msg_type: MessageTypes::build(A2AMessageKinds::UpdateMessageStatusByConnections), + uids_by_conns: self.uids_by_conns.clone(), + status_code: self.status_code.clone(), + } + ) + ); let agency_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; - prepare_message_for_agency(&message, &agency_did, &self.version) + prepare_message_for_agency(&message, &agency_did) } fn parse_response(&self, response: &Vec) -> VcxResult<()> { trace!("UpdateMessageStatusByConnectionsBuilder::parse_response >>>"); - let mut response = parse_response_from_agency(response, &self.version)?; + let mut response = parse_response_from_agency(response)?; match response.remove(0) { A2AMessage::Version2(A2AMessageV2::UpdateMessageStatusByConnectionsResponse(_)) => Ok(()), @@ -150,9 +133,9 @@ mod tests { use std::time::Duration; use connection::send_generic_message; - use messages::get_message::download_messages_noauth; - use messages::MessageStatusCode; - use messages::update_message::{UIDsByConn, update_agency_messages, UpdateMessageStatusByConnectionsBuilder}; + use agency_vcx::get_message::download_messages_noauth; + use agency_vcx::MessageStatusCode; + use agency_vcx::update_message::{UIDsByConn, update_agency_messages, UpdateMessageStatusByConnectionsBuilder}; use utils::devsetup::{SetupMocks, SetupLibraryAgencyV2}; use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_agency::AGENCY_MSG_STATUS_UPDATED_BY_CONNS; diff --git a/libvcx/src/messages/update_profile.rs b/libvcx/src/agency_vcx/update_profile.rs similarity index 78% rename from libvcx/src/messages/update_profile.rs rename to libvcx/src/agency_vcx/update_profile.rs index 45809c858c..76e726b90d 100644 --- a/libvcx/src/messages/update_profile.rs +++ b/libvcx/src/agency_vcx/update_profile.rs @@ -1,17 +1,16 @@ +use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_vcx::message_type::MessageTypes; use error::{VcxError, VcxErrorKind, VcxResult}; -use messages::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency, validation}; -use messages::message_type::MessageTypes; use settings; +use utils::{httpclient, validation}; use utils::constants::UPDATE_PROFILE_RESPONSE; -use utils::httpclient; use utils::httpclient::AgencyMock; #[derive(Debug)] pub struct UpdateProfileDataBuilder { to_did: String, agent_payload: String, - configs: Vec, - version: settings::ProtocolTypes, + configs: Vec } #[derive(Clone, Deserialize, Serialize, Debug, PartialEq)] @@ -40,8 +39,7 @@ impl UpdateProfileDataBuilder { UpdateProfileDataBuilder { to_did: String::new(), configs: Vec::new(), - agent_payload: String::new(), - version: settings::get_protocol_type(), + agent_payload: String::new() } } @@ -81,15 +79,6 @@ impl UpdateProfileDataBuilder { Ok(self) } - pub fn version(&mut self, version: &Option) -> VcxResult<&mut Self> { - self.version = match version { - Some(version) => version.clone(), - None => settings::get_protocol_type() - }; - Ok(self) - } - - pub fn send_secure(&mut self) -> VcxResult<()> { trace!("UpdateProfileData::send_secure >>>"); @@ -103,28 +92,22 @@ impl UpdateProfileDataBuilder { } fn prepare_request(&self) -> VcxResult> { - let message = match self.version { - settings::ProtocolTypes::V1 | - settings::ProtocolTypes::V2 | - settings::ProtocolTypes::V3 | - settings::ProtocolTypes::V4 => - A2AMessage::Version2( - A2AMessageV2::UpdateConfigs( - UpdateConfigs { - msg_type: MessageTypes::build(A2AMessageKinds::UpdateConfigs), - configs: self.configs.clone(), - } - ) - ) - }; + let message = A2AMessage::Version2( + A2AMessageV2::UpdateConfigs( + UpdateConfigs { + msg_type: MessageTypes::build(A2AMessageKinds::UpdateConfigs), + configs: self.configs.clone(), + } + ) + ); let agency_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; - prepare_message_for_agency(&message, &agency_did, &self.version) + prepare_message_for_agency(&message, &agency_did) } fn parse_response(&self, response: Vec) -> VcxResult<()> { - let mut response = parse_response_from_agency(&response, &self.version)?; + let mut response = parse_response_from_agency(&response)?; match response.remove(0) { A2AMessage::Version2(A2AMessageV2::UpdateConfigsResponse(_)) => Ok(()), @@ -135,7 +118,7 @@ impl UpdateProfileDataBuilder { #[cfg(test)] mod tests { - use messages::update_data; + use agency_vcx::update_data; use utils::constants::{MY1_SEED, MY2_SEED, MY3_SEED}; use utils::devsetup::*; use utils::httpclient::AgencyMockDecrypted; diff --git a/libvcx/src/api/utils.rs b/libvcx/src/api/utils.rs index 62b30362f6..d1560d3322 100644 --- a/libvcx/src/api/utils.rs +++ b/libvcx/src/api/utils.rs @@ -6,9 +6,9 @@ use libc::c_char; use serde_json; use error::prelude::*; -use messages; +use agency_vcx; use connection; -use messages::get_message::{parse_status_codes, parse_connection_handles}; +use agency_vcx::get_message::{parse_status_codes, parse_connection_handles}; use utils::constants::*; use utils::cstring::CStringUtils; use utils::error; @@ -44,7 +44,7 @@ pub extern fn vcx_provision_agent(config: *const c_char) -> *mut c_char { trace!("vcx_provision_agent(config: {})", config); - match messages::agent_utils::connect_register_provision(&config) { + match agency_vcx::agent_utils::connect_register_provision(&config) { Err(e) => { error!("Provision Agent Error {}.", e); let _res: u32 = e.into(); @@ -84,7 +84,7 @@ pub extern fn vcx_agent_provision_async(command_handle: CommandHandle, command_handle, config); thread::spawn(move || { - match messages::agent_utils::connect_register_provision(&config) { + match agency_vcx::agent_utils::connect_register_provision(&config) { Err(e) => { error!("vcx_agent_provision_async_cb(command_handle: {}, rc: {}, config: NULL", command_handle, e); cb(command_handle, e.into(), ptr::null_mut()); @@ -331,7 +331,7 @@ pub extern fn vcx_messages_download(command_handle: CommandHandle, command_handle, message_status, uids); spawn(move || { - match ::messages::get_message::download_messages_noauth(pw_dids, message_status, uids) { + match ::agency_vcx::get_message::download_messages_noauth(pw_dids, message_status, uids) { Ok(x) => { match serde_json::to_string(&x) { Ok(x) => { @@ -484,7 +484,7 @@ pub extern fn vcx_messages_update_status(command_handle: CommandHandle, command_handle, message_status, msg_json); spawn(move || { - match ::messages::update_message::update_agency_messages(&message_status, &msg_json) { + match ::agency_vcx::update_message::update_agency_messages(&message_status, &msg_json) { Ok(()) => { trace!("vcx_messages_set_status_cb(command_handle: {}, rc: {})", command_handle, error::SUCCESS.message); diff --git a/libvcx/src/api/vcx.rs b/libvcx/src/api/vcx.rs index 7eeb737008..e97e7c1160 100644 --- a/libvcx/src/api/vcx.rs +++ b/libvcx/src/api/vcx.rs @@ -309,7 +309,7 @@ fn _finish_init(command_handle: CommandHandle, cb: extern fn(xcommand_handle: Co info!("_finish_init: getting and setting webhook url"); match settings::get_config_value(settings::CONFIG_WEBHOOK_URL) { - Ok(webhook_url) => match ::messages::agent_utils::update_agent_webhook(&webhook_url) { + Ok(webhook_url) => match ::agency_vcx::agent_utils::update_agent_webhook(&webhook_url) { Ok(()) => { info!("Agent webhook url updated on init, webhook_url={}", webhook_url); cb(command_handle, error::SUCCESS.code_num); @@ -508,7 +508,7 @@ pub extern fn vcx_update_webhook_url(command_handle: CommandHandle, settings::set_config_value(::settings::CONFIG_WEBHOOK_URL, ¬ification_webhook_url); spawn(move || { - match ::messages::agent_utils::update_agent_webhook(¬ification_webhook_url[..]) { + match ::agency_vcx::agent_utils::update_agent_webhook(¬ification_webhook_url[..]) { Ok(()) => { trace!("vcx_update_webhook_url_cb(command_handle: {}, rc: {})", command_handle, error::SUCCESS.message); diff --git a/libvcx/src/aries/handlers/connection/agent_info.rs b/libvcx/src/aries/handlers/connection/agent_info.rs index 8dea544be1..51c690440d 100644 --- a/libvcx/src/aries/handlers/connection/agent_info.rs +++ b/libvcx/src/aries/handlers/connection/agent_info.rs @@ -5,10 +5,10 @@ use aries::messages::connection::did_doc::DidDoc; use aries::utils::encryption_envelope::EncryptionEnvelope; use connection::create_agent_keys; use error::prelude::*; -use messages::get_message::{get_connection_messages, Message}; -use messages::MessageStatusCode; -use messages::update_connection::send_delete_connection_message; -use messages::update_message::{UIDsByConn, update_messages as update_messages_status}; +use agency_vcx::get_message::{get_connection_messages, Message}; +use agency_vcx::MessageStatusCode; +use agency_vcx::update_connection::send_delete_connection_message; +use agency_vcx::update_message::{UIDsByConn, update_messages as update_messages_status}; use settings; use settings::ProtocolTypes; use utils::httpclient; diff --git a/libvcx/src/aries/handlers/connection/connection.rs b/libvcx/src/aries/handlers/connection/connection.rs index 27b61c2d69..94a21a12c0 100644 --- a/libvcx/src/aries/handlers/connection/connection.rs +++ b/libvcx/src/aries/handlers/connection/connection.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use error::prelude::*; -use messages::get_message::Message; +use agency_vcx::get_message::Message; use aries::handlers::connection::agent_info::AgentInfo; use aries::handlers::connection::invitee::state_machine::{InviteeState, SmConnectionInvitee}; use aries::handlers::connection::inviter::state_machine::{InviterState, SmConnectionInviter}; diff --git a/libvcx/src/aries/handlers/connection/mod.rs b/libvcx/src/aries/handlers/connection/mod.rs index d3a6831845..1c8b51bbf5 100644 --- a/libvcx/src/aries/handlers/connection/mod.rs +++ b/libvcx/src/aries/handlers/connection/mod.rs @@ -89,7 +89,7 @@ pub mod tests { } } - let _res = ::messages::get_message::download_messages_noauth(None, None, Some(vec![uid.clone()])).unwrap(); + let _res = ::agency_vcx::get_message::download_messages_noauth(None, None, Some(vec![uid.clone()])).unwrap(); info!("test_connection_send_works:: Test if Get Message by id works"); { @@ -136,7 +136,7 @@ pub mod tests { info!("test_connection_send_works:: Test if Download Messages"); { - use messages::get_message::{download_messages_noauth, MessageByConnection, Message}; + use agency_vcx::get_message::{download_messages_noauth, MessageByConnection, Message}; let credential_offer = ::aries::messages::issuance::credential_offer::tests::_credential_offer(); diff --git a/libvcx/src/aries/handlers/proof_presentation/prover/prover.rs b/libvcx/src/aries/handlers/proof_presentation/prover/prover.rs index b3d1b3a2fc..1238d3cc44 100644 --- a/libvcx/src/aries/handlers/proof_presentation/prover/prover.rs +++ b/libvcx/src/aries/handlers/proof_presentation/prover/prover.rs @@ -3,7 +3,6 @@ use std::collections::HashMap; use ::{connection, settings}; use error::prelude::*; -use messages::proofs::proof_message::ProofMessage; use utils::libindy::anoncreds; use aries::handlers::proof_presentation::prover::messages::ProverMessages; use aries::messages::a2a::A2AMessage; diff --git a/libvcx/src/aries/messages/a2a/message_type.rs b/libvcx/src/aries/messages/a2a/message_type.rs index 2015f227af..039ff5729f 100644 --- a/libvcx/src/aries/messages/a2a/message_type.rs +++ b/libvcx/src/aries/messages/a2a/message_type.rs @@ -1,7 +1,7 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; -use messages::message_type::parse_message_type; +use agency_vcx::message_type::parse_message_type; use aries::messages::a2a::message_family::MessageFamilies; #[derive(Debug, Clone, PartialEq, Default)] diff --git a/libvcx/src/aries/messages/ack.rs b/libvcx/src/aries/messages/ack.rs index 02f0fd8f47..2a3fe1d7ce 100644 --- a/libvcx/src/aries/messages/ack.rs +++ b/libvcx/src/aries/messages/ack.rs @@ -1,4 +1,4 @@ -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)] diff --git a/libvcx/src/aries/messages/connection/did_doc.rs b/libvcx/src/aries/messages/connection/did_doc.rs index 91b9af08b5..0d584773b6 100644 --- a/libvcx/src/aries/messages/connection/did_doc.rs +++ b/libvcx/src/aries/messages/connection/did_doc.rs @@ -2,7 +2,7 @@ use aries::messages::connection::invite::Invitation; use error::prelude::*; use url::Url; -use messages::validation::validate_verkey; +use utils::validation::validate_verkey; pub const CONTEXT: &str = "https://w3id.org/did/v1"; pub const KEY_TYPE: &str = "Ed25519VerificationKey2018"; diff --git a/libvcx/src/aries/messages/connection/problem_report.rs b/libvcx/src/aries/messages/connection/problem_report.rs index d21b58c959..4c2c252ed2 100644 --- a/libvcx/src/aries/messages/connection/problem_report.rs +++ b/libvcx/src/aries/messages/connection/problem_report.rs @@ -1,4 +1,4 @@ -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::localization::Localization; diff --git a/libvcx/src/aries/messages/connection/response.rs b/libvcx/src/aries/messages/connection/response.rs index bce87ab105..70af4aa84f 100644 --- a/libvcx/src/aries/messages/connection/response.rs +++ b/libvcx/src/aries/messages/connection/response.rs @@ -2,7 +2,7 @@ use base64; use time; use error::prelude::*; -use messages::thread::Thread; +use agency_vcx::thread::Thread; use utils::libindy::crypto; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::a2a::message_family::MessageFamilies; diff --git a/libvcx/src/aries/messages/discovery/disclose.rs b/libvcx/src/aries/messages/discovery/disclose.rs index 28d85b8221..04e26ac01a 100644 --- a/libvcx/src/aries/messages/discovery/disclose.rs +++ b/libvcx/src/aries/messages/discovery/disclose.rs @@ -1,4 +1,4 @@ -use messages::thread::Thread; +use agency_vcx::thread::Thread; use settings::Actors; use aries::messages::a2a::{MessageId, A2AMessage}; diff --git a/libvcx/src/aries/messages/error.rs b/libvcx/src/aries/messages/error.rs index eefc1f75c8..8c30b8fd2b 100644 --- a/libvcx/src/aries/messages/error.rs +++ b/libvcx/src/aries/messages/error.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)] diff --git a/libvcx/src/aries/messages/issuance/credential.rs b/libvcx/src/aries/messages/issuance/credential.rs index 611b404a51..807eff1dcc 100644 --- a/libvcx/src/aries/messages/issuance/credential.rs +++ b/libvcx/src/aries/messages/issuance/credential.rs @@ -1,6 +1,6 @@ use error::VcxResult; use error::prelude::*; -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::ack::PleaseAck; use aries::messages::attachment::{AttachmentId, Attachments}; diff --git a/libvcx/src/aries/messages/issuance/credential_offer.rs b/libvcx/src/aries/messages/issuance/credential_offer.rs index 01ba1b4768..5fe45611e4 100644 --- a/libvcx/src/aries/messages/issuance/credential_offer.rs +++ b/libvcx/src/aries/messages/issuance/credential_offer.rs @@ -1,5 +1,5 @@ use error::VcxResult; -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::attachment::{AttachmentId, Attachments}; use aries::messages::issuance::CredentialPreviewData; diff --git a/libvcx/src/aries/messages/issuance/credential_proposal.rs b/libvcx/src/aries/messages/issuance/credential_proposal.rs index f3f427408b..8d1c0b3406 100644 --- a/libvcx/src/aries/messages/issuance/credential_proposal.rs +++ b/libvcx/src/aries/messages/issuance/credential_proposal.rs @@ -1,5 +1,5 @@ use error::VcxResult; -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::issuance::CredentialPreviewData; use aries::messages::mime_type::MimeType; diff --git a/libvcx/src/aries/messages/issuance/credential_request.rs b/libvcx/src/aries/messages/issuance/credential_request.rs index b435ebd476..c5a7d09ea3 100644 --- a/libvcx/src/aries/messages/issuance/credential_request.rs +++ b/libvcx/src/aries/messages/issuance/credential_request.rs @@ -1,5 +1,5 @@ use error::VcxResult; -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::attachment::{AttachmentId, Attachments}; diff --git a/libvcx/src/aries/messages/proof_presentation/presentation.rs b/libvcx/src/aries/messages/proof_presentation/presentation.rs index b012e546e7..5ebb08f126 100644 --- a/libvcx/src/aries/messages/proof_presentation/presentation.rs +++ b/libvcx/src/aries/messages/proof_presentation/presentation.rs @@ -1,8 +1,7 @@ use std::convert::TryInto; use error::prelude::*; -use messages::proofs::proof_message::ProofMessage; -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::ack::PleaseAck; use aries::messages::attachment::{AttachmentId, Attachments}; @@ -42,27 +41,6 @@ please_ack!(Presentation); threadlike!(Presentation); a2a_message!(Presentation); -impl TryInto for ProofMessage { - type Error = VcxError; - - fn try_into(self) -> Result { - let presentation = Presentation::create() - .set_presentations_attach(self.libindy_proof)? - .ask_for_ack(); - - Ok(presentation) - } -} - -impl TryInto for Presentation { - type Error = VcxError; - - fn try_into(self) -> Result { - let mut proof = ProofMessage::new(); - proof.libindy_proof = self.presentations_attach.content().unwrap(); - Ok(proof) - } -} #[cfg(test)] pub mod tests { diff --git a/libvcx/src/aries/messages/proof_presentation/presentation_proposal.rs b/libvcx/src/aries/messages/proof_presentation/presentation_proposal.rs index 8085f90192..6ac001c2ca 100644 --- a/libvcx/src/aries/messages/proof_presentation/presentation_proposal.rs +++ b/libvcx/src/aries/messages/proof_presentation/presentation_proposal.rs @@ -1,4 +1,4 @@ -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::a2a::message_family::MessageFamilies; use aries::messages::a2a::message_type::MessageType; diff --git a/libvcx/src/aries/messages/proof_presentation/presentation_request.rs b/libvcx/src/aries/messages/proof_presentation/presentation_request.rs index 0b361948ce..71dbf86a2b 100644 --- a/libvcx/src/aries/messages/proof_presentation/presentation_request.rs +++ b/libvcx/src/aries/messages/proof_presentation/presentation_request.rs @@ -1,10 +1,10 @@ use std::convert::TryInto; use error::prelude::*; -pub use messages::proofs::proof_request::{ProofRequestData, ProofRequestMessage, ProofRequestVersion}; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::attachment::{AttachmentId, Attachments}; use aries::messages::connection::service::Service; +use indyvc::proofs::proof_request::ProofRequestData; #[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Default)] pub struct PresentationRequest { @@ -51,43 +51,12 @@ impl PresentationRequest { a2a_message!(PresentationRequest); -impl TryInto for ProofRequestMessage { - type Error = VcxError; - - fn try_into(self) -> Result { - let presentation_request = PresentationRequest::create() - .set_id(self.thread_id.unwrap_or_default()) - .set_request_presentations_attach(&self.proof_request_data)? - .set_service(self.service); - - Ok(presentation_request) - } -} - -impl TryInto for PresentationRequest { - type Error = VcxError; - - fn try_into(self) -> Result { - let proof_request: ProofRequestMessage = ProofRequestMessage::create() - .set_proof_request_data( - ::serde_json::from_str(&self.request_presentations_attach.content()? - ).map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, err))? - )? - .type_version("1.0")? - .proof_data_version("0.1")? - .set_thread_id(self.id.0.clone())? - .set_service(self.service)? - .clone(); - - Ok(proof_request) - } -} pub type PresentationRequestData = ProofRequestData; #[cfg(test)] pub mod tests { - use messages::thread::Thread; + use agency_vcx::thread::Thread; use aries::messages::connection::service::tests::_service; use super::*; diff --git a/libvcx/src/aries/messages/trust_ping/ping.rs b/libvcx/src/aries/messages/trust_ping/ping.rs index 059f38d1e7..9fb9186eb7 100644 --- a/libvcx/src/aries/messages/trust_ping/ping.rs +++ b/libvcx/src/aries/messages/trust_ping/ping.rs @@ -1,4 +1,4 @@ -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)] diff --git a/libvcx/src/aries/messages/trust_ping/ping_response.rs b/libvcx/src/aries/messages/trust_ping/ping_response.rs index a37929e998..a3f900f39c 100644 --- a/libvcx/src/aries/messages/trust_ping/ping_response.rs +++ b/libvcx/src/aries/messages/trust_ping/ping_response.rs @@ -1,4 +1,4 @@ -use messages::thread::Thread; +use agency_vcx::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)] diff --git a/libvcx/src/aries/mod.rs b/libvcx/src/aries/mod.rs index e0a89bd5cc..88ee90d870 100644 --- a/libvcx/src/aries/mod.rs +++ b/libvcx/src/aries/mod.rs @@ -11,8 +11,8 @@ pub mod test { use ::{rand, settings}; use rand::Rng; - use messages::agent_utils::connect_register_provision; - use messages::payload::{PayloadKinds}; + use agency_vcx::agent_utils::connect_register_provision; + use agency_vcx::payload::{PayloadKinds}; use utils::devsetup::*; use utils::libindy::wallet::*; use utils::plugins::init_plugin; @@ -77,7 +77,7 @@ pub mod test { } fn download_message(did: String, filter_msg_type: PayloadKinds) -> VcxAgencyMessage { - let mut messages = ::messages::get_message::download_messages_noauth(Some(vec![did]), Some(vec![String::from("MS-103")]), None).unwrap(); + let mut messages = ::agency_vcx::get_message::download_messages_noauth(Some(vec![did]), Some(vec![String::from("MS-103")]), None).unwrap(); assert_eq!(1, messages.len()); let messages = messages.pop().unwrap(); diff --git a/libvcx/src/connection.rs b/libvcx/src/connection.rs index 39d6590b36..eb831e8eea 100644 --- a/libvcx/src/connection.rs +++ b/libvcx/src/connection.rs @@ -8,9 +8,9 @@ use aries::messages::a2a::A2AMessage; use aries::messages::connection::did_doc::DidDoc; use aries::messages::connection::invite::Invitation as InvitationV3; use error::prelude::*; -use messages; -use messages::get_message::{get_bootstrap_agent_messages, MessageByConnection, Message}; -use messages::{SerializableObjectWithState, MessageStatusCode}; +use agency_vcx; +use agency_vcx::get_message::{get_bootstrap_agent_messages, MessageByConnection, Message}; +use agency_vcx::{SerializableObjectWithState, MessageStatusCode}; use settings; use settings::ProtocolTypes; use utils::error; @@ -23,10 +23,9 @@ lazy_static! { pub fn create_agent_keys(source_id: &str, pw_did: &str, pw_verkey: &str) -> VcxResult<(String, String)> { debug!("creating pairwise keys on agent for connection {}", source_id); - let (agent_did, agent_verkey) = messages::create_keys() + let (agent_did, agent_verkey) = agency_vcx::create_keys() .for_did(pw_did)? .for_verkey(pw_verkey)? - .version(&Some(settings::get_protocol_type()))? .send_secure() .map_err(|err| err.extend("Cannot create pairwise keys"))?; @@ -67,10 +66,6 @@ pub fn get_agent_verkey(handle: u32) -> VcxResult { }) } -pub fn get_version(_handle: u32) -> VcxResult> { - Ok(Some(settings::get_protocol_type())) -} - pub fn get_pw_verkey(handle: u32) -> VcxResult { CONNECTION_MAP.get(handle, |connection| { Ok(connection.agent_info().pw_vk.clone()) @@ -313,8 +308,8 @@ pub mod tests { use serde_json::Value; use api::VcxStateType; - use messages::get_message::download_messages_noauth; - use messages::MessageStatusCode; + use agency_vcx::get_message::download_messages_noauth; + use agency_vcx::MessageStatusCode; use utils::constants::*; use utils::constants; use utils::devsetup::*; diff --git a/libvcx/src/credential_def.rs b/libvcx/src/credential_def.rs index 81c014de5a..c766e2ae4e 100644 --- a/libvcx/src/credential_def.rs +++ b/libvcx/src/credential_def.rs @@ -2,7 +2,7 @@ use serde_json; use api::PublicEntityStateType; use error::prelude::*; -use messages::ObjectWithVersion; +use agency_vcx::ObjectWithVersion; use utils::constants::DEFAULT_SERIALIZE_VERSION; use utils::libindy::anoncreds; use utils::libindy::cache::update_rev_reg_ids_cache; diff --git a/libvcx/src/disclosed_proof.rs b/libvcx/src/disclosed_proof.rs index a94bde2e5d..3eae689eea 100644 --- a/libvcx/src/disclosed_proof.rs +++ b/libvcx/src/disclosed_proof.rs @@ -8,10 +8,9 @@ use aries::{ }; use connection; use error::prelude::*; -use messages::{ +use agency_vcx::{ get_message::Message, }; -use messages::proofs::proof_request::ProofRequestMessage; use settings; use settings::indy_mocks_enabled; use utils::constants::GET_MESSAGES_DECRYPTED_RESPONSE; diff --git a/libvcx/src/disclosed_proof_utils.rs b/libvcx/src/disclosed_proof_utils.rs index 26f18dc642..bef209a961 100644 --- a/libvcx/src/disclosed_proof_utils.rs +++ b/libvcx/src/disclosed_proof_utils.rs @@ -3,18 +3,13 @@ use std::collections::HashMap; use serde_json::Value; use error::prelude::*; -use messages::proofs::{ - proof_message::CredInfoProver, - proof_request::{ - NonRevokedInterval, - ProofRequestData, - }, -}; use settings; use utils::libindy::anoncreds; use utils::libindy::anoncreds::{get_rev_reg_def_json, get_rev_reg_delta_json}; use utils::libindy::cache::{get_rev_reg_cache, RevRegCache, RevState, set_rev_reg_cache}; use utils::mockdata::mock_settings::get_mock_generate_indy_proof; +use indyvc::proofs::proof_message::CredInfoProver; +use indyvc::proofs::proof_request::{ProofRequestData, NonRevokedInterval}; fn build_schemas_json_prover(credentials_identifiers: &Vec) -> VcxResult { trace!("build_schemas_json_prover >>> credentials_identifiers: {:?}", credentials_identifiers); diff --git a/libvcx/src/indyvc/mod.rs b/libvcx/src/indyvc/mod.rs new file mode 100644 index 0000000000..bf1cba86b5 --- /dev/null +++ b/libvcx/src/indyvc/mod.rs @@ -0,0 +1 @@ +pub mod proofs; \ No newline at end of file diff --git a/libvcx/src/messages/proofs/mod.rs b/libvcx/src/indyvc/proofs/mod.rs similarity index 100% rename from libvcx/src/messages/proofs/mod.rs rename to libvcx/src/indyvc/proofs/mod.rs diff --git a/libvcx/src/indyvc/proofs/proof_message.rs b/libvcx/src/indyvc/proofs/proof_message.rs new file mode 100644 index 0000000000..ed76029ae5 --- /dev/null +++ b/libvcx/src/indyvc/proofs/proof_message.rs @@ -0,0 +1,57 @@ +use serde_json; +use serde_json::Value; + +use api::VcxStateType; +use error::prelude::*; +use indyvc::proofs::proof_request::NonRevokedInterval; + +#[derive(Debug, Deserialize, Serialize, PartialEq)] +pub struct CredInfoVerifier { + pub schema_id: String, + pub cred_def_id: String, + pub rev_reg_id: Option, + pub timestamp: Option, +} + +#[derive(Debug, Deserialize, Serialize, PartialEq)] +pub struct CredInfoProver { + pub requested_attr: String, + pub referent: String, + pub schema_id: String, + pub cred_def_id: String, + pub rev_reg_id: Option, + pub cred_rev_id: Option, + pub revocation_interval: Option, + pub tails_file: Option, + pub timestamp: Option, +} + +pub fn get_credential_info(proof: &str) -> VcxResult> { + let mut rtn = Vec::new(); + + let credentials: Value = serde_json::from_str(&proof) + .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot deserialize libndy proof: {}", err)))?; + + if let Value::Array(ref identifiers) = credentials["identifiers"] { + for identifier in identifiers { + if let (Some(schema_id), Some(cred_def_id)) = (identifier["schema_id"].as_str(), + identifier["cred_def_id"].as_str()) { + let rev_reg_id = identifier["rev_reg_id"] + .as_str() + .map(|x| x.to_string()); + + let timestamp = identifier["timestamp"].as_u64(); + rtn.push( + CredInfoVerifier { + schema_id: schema_id.to_string(), + cred_def_id: cred_def_id.to_string(), + rev_reg_id, + timestamp, + } + ); + } else { return Err(VcxError::from_msg(VcxErrorKind::InvalidProofCredentialData, "Cannot get identifiers")); } + } + } + + Ok(rtn) +} diff --git a/libvcx/src/messages/proofs/proof_request.rs b/libvcx/src/indyvc/proofs/proof_request.rs similarity index 60% rename from libvcx/src/messages/proofs/proof_request.rs rename to libvcx/src/indyvc/proofs/proof_request.rs index 159ca206e6..5aef161e20 100644 --- a/libvcx/src/messages/proofs/proof_request.rs +++ b/libvcx/src/indyvc/proofs/proof_request.rs @@ -5,7 +5,7 @@ use serde_json; use aries::messages::connection::service::Service; use error::prelude::*; -use messages::validation; +use utils::validation; use utils::libindy::anoncreds; use utils::qualifier; @@ -94,225 +94,6 @@ pub struct ProofRequestData { pub ver: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] -pub struct ProofRequestMessage { - #[serde(rename = "@type")] - type_header: ProofType, - #[serde(rename = "@topic")] - topic: ProofTopic, - pub proof_request_data: ProofRequestData, - pub msg_ref_id: Option, - from_timestamp: Option, - to_timestamp: Option, - pub thread_id: Option, - #[serde(rename = "~service")] - #[serde(skip_serializing_if = "Option::is_none")] - pub service: Option, -} - -impl ProofPredicates { - pub fn create() -> ProofPredicates { - ProofPredicates { - predicates: Vec::new() - } - } -} - -impl ProofRequestMessage { - pub fn create() -> ProofRequestMessage { - ProofRequestMessage { - type_header: ProofType { - name: String::from(PROOF_REQUEST), - type_version: String::new(), - }, - topic: ProofTopic { - tid: 0, - mid: 0, - }, - proof_request_data: ProofRequestData { - nonce: String::new(), - name: String::new(), - data_version: String::new(), - requested_attributes: HashMap::new(), - requested_predicates: HashMap::new(), - non_revoked: None, - ver: None, - }, - msg_ref_id: None, - from_timestamp: None, - to_timestamp: None, - thread_id: None, - service: None, - } - } - - pub fn type_version(&mut self, version: &str) -> VcxResult<&mut Self> { - self.type_header.type_version = String::from(version); - Ok(self) - } - - pub fn tid(&mut self, tid: u32) -> VcxResult<&mut Self> { - self.topic.tid = tid; - Ok(self) - } - - pub fn mid(&mut self, mid: u32) -> VcxResult<&mut Self> { - self.topic.mid = mid; - Ok(self) - } - - pub fn nonce(&mut self, nonce: &str) -> VcxResult<&mut Self> { - let nonce = validation::validate_nonce(nonce)?; - self.proof_request_data.nonce = nonce; - Ok(self) - } - - pub fn proof_name(&mut self, name: &str) -> VcxResult<&mut Self> { - self.proof_request_data.name = String::from(name); - Ok(self) - } - - pub fn proof_request_format_version(&mut self, version: Option) -> VcxResult<&mut Self> { - self.proof_request_data.ver = version; - Ok(self) - } - - pub fn proof_data_version(&mut self, version: &str) -> VcxResult<&mut Self> { - self.proof_request_data.data_version = String::from(version); - Ok(self) - } - - - pub fn requested_attrs(&mut self, attrs: &str) -> VcxResult<&mut Self> { - let mut check_req_attrs: HashMap = HashMap::new(); - let proof_attrs: Vec = serde_json::from_str(attrs) - .map_err(|err| { - debug!("Cannot parse attributes: {}", err); - VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot parse attributes: {}", err)) - })?; - - let mut index = 1; - for mut attr in proof_attrs.into_iter() { - let attr_name = match (attr.name.as_ref(), attr.names.as_ref()) { - (Some(name), None) => { name.clone() } - (None, Some(names)) => { - if names.is_empty() { - return Err(VcxError::from_msg(VcxErrorKind::InvalidProofRequest, "Proof Request validation failed: there is empty request attribute names")); - } - names.join(",") - } - (Some(_), Some(_)) => { - return Err(VcxError::from_msg(VcxErrorKind::InvalidProofRequest, - format!("Proof Request validation failed: there is empty requested attribute: {:?}", attrs))); - } - (None, None) => { - return Err(VcxError::from_msg(VcxErrorKind::InvalidProofRequest, - format!("Proof request validation failed: there is a requested attribute with both name and names: {:?}", attrs))); - } - }; - - attr.restrictions = self.process_restrictions(attr.restrictions); - - if check_req_attrs.contains_key(&attr_name) { - check_req_attrs.insert(format!("{}_{}", attr_name, index), attr); - } else { - check_req_attrs.insert(attr_name, attr); - } - index = index + 1; - } - self.proof_request_data.requested_attributes = check_req_attrs; - Ok(self) - } - - pub fn requested_predicates(&mut self, predicates: &str) -> VcxResult<&mut Self> { - let mut check_predicates: HashMap = HashMap::new(); - let attr_values: Vec = serde_json::from_str(predicates) - .map_err(|err| { - debug!("Cannot parse predicates: {}", err); - VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot parse predicates: {}", err)) - })?; - - let mut index = 1; - for mut attr in attr_values.into_iter() { - attr.restrictions = self.process_restrictions(attr.restrictions); - - if check_predicates.contains_key(&attr.name) { - check_predicates.insert(format!("{}_{}", attr.name, index), attr); - } else { - check_predicates.insert(attr.name.clone(), attr); - } - index = index + 1; - } - - self.proof_request_data.requested_predicates = check_predicates; - Ok(self) - } - - fn process_restrictions(&self, restrictions: Option) -> Option { - match restrictions { - Some(Restrictions::V2(restrictions)) => Some(Restrictions::V2(restrictions)), - Some(Restrictions::V1(restrictions)) => { - Some(Restrictions::V1( - restrictions - .into_iter() - .map(|filter| { - Filter { - schema_id: filter.schema_id.as_ref().and_then(|schema_id| anoncreds::libindy_to_unqualified(&schema_id).ok()), - schema_issuer_did: filter.schema_issuer_did.as_ref().and_then(|schema_issuer_did| anoncreds::libindy_to_unqualified(&schema_issuer_did).ok()), - schema_name: filter.schema_name, - schema_version: filter.schema_version, - issuer_did: filter.issuer_did.as_ref().and_then(|issuer_did| anoncreds::libindy_to_unqualified(&issuer_did).ok()), - cred_def_id: filter.cred_def_id.as_ref().and_then(|cred_def_id| anoncreds::libindy_to_unqualified(&cred_def_id).ok()), - } - }) - .collect() - )) - } - None => None - } - } - - pub fn from_timestamp(&mut self, from: Option) -> VcxResult<&mut Self> { - self.from_timestamp = from; - Ok(self) - } - - pub fn to_timestamp(&mut self, to: Option) -> VcxResult<&mut Self> { - self.to_timestamp = to; - Ok(self) - } - - pub fn set_proof_request_data(&mut self, proof_request_data: ProofRequestData) -> VcxResult<&mut Self> { - self.proof_request_data = proof_request_data; - Ok(self) - } - - - pub fn set_thread_id(&mut self, thid: String) -> VcxResult<&mut Self> { - self.thread_id = Some(thid); - Ok(self) - } - - pub fn set_service(&mut self, service: Option) -> VcxResult<&mut Self> { - self.service = service; - Ok(self) - } - - pub fn serialize_message(&mut self) -> VcxResult { - serde_json::to_string(self) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot serialize proof request: {}", err))) - } - - pub fn get_proof_request_data(&self) -> String { - json!(self)[PROOF_DATA].to_string() - } - - pub fn to_string(&self) -> VcxResult { - serde_json::to_string(&self) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot serialize proof request: {}", err))) - } -} - impl ProofRequestData { const DEFAULT_VERSION: &'static str = "1.0"; @@ -426,7 +207,6 @@ impl Default for ProofRequestVersion { #[cfg(test)] mod tests { - use messages::proof_request; use utils::constants::{REQUESTED_ATTRS, REQUESTED_PREDICATES}; use utils::devsetup::SetupDefaults; @@ -434,24 +214,7 @@ mod tests { #[test] #[cfg(feature = "general_test")] - fn test_create_proof_request_data() { - let _setup = SetupDefaults::init(); - - let request = proof_request(); - let proof_data = ProofRequestData { - nonce: String::new(), - name: String::new(), - data_version: String::new(), - requested_attributes: HashMap::new(), - requested_predicates: HashMap::new(), - non_revoked: None, - ver: None, - }; - assert_eq!(request.proof_request_data, proof_data); - } - - #[test] - #[cfg(feature = "general_test")] + #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_proof_request_msg() { let _setup = SetupDefaults::init(); @@ -490,6 +253,7 @@ mod tests { #[test] #[cfg(feature = "general_test")] + #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_requested_attrs_constructed_correctly() { let _setup = SetupDefaults::init(); @@ -506,6 +270,7 @@ mod tests { #[test] #[cfg(feature = "general_test")] + #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_requested_predicates_constructed_correctly() { let _setup = SetupDefaults::init(); @@ -519,6 +284,7 @@ mod tests { #[test] #[cfg(feature = "general_test")] + #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_requested_attrs_constructed_correctly_for_names() { let _setup = SetupDefaults::init(); @@ -538,6 +304,7 @@ mod tests { #[test] #[cfg(feature = "general_test")] + #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_requested_attrs_constructed_correctly_for_name_and_names_passed_together() { let _setup = SetupDefaults::init(); diff --git a/libvcx/src/lib.rs b/libvcx/src/lib.rs index 8570eefeba..e68bfe9ee2 100644 --- a/libvcx/src/lib.rs +++ b/libvcx/src/lib.rs @@ -34,7 +34,7 @@ extern crate uuid; pub mod utils; pub mod settings; #[macro_use] -pub mod messages; +pub mod agency_vcx; pub mod api; pub mod init; @@ -51,6 +51,7 @@ pub mod aries; mod proof_utils; mod disclosed_proof_utils; mod filters; +mod indyvc; #[allow(unused_imports)] #[allow(dead_code)] diff --git a/libvcx/src/messages/proofs/proof_message.rs b/libvcx/src/messages/proofs/proof_message.rs deleted file mode 100644 index 05a46b782c..0000000000 --- a/libvcx/src/messages/proofs/proof_message.rs +++ /dev/null @@ -1,197 +0,0 @@ -use serde_json; -use serde_json::Value; - -use api::VcxStateType; -use error::prelude::*; -use messages::proofs::proof_request::NonRevokedInterval; - -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] -pub struct ProofMessage { - version: Option, - to_did: Option, - from_did: Option, - proof_request_id: Option, - pub libindy_proof: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub state: Option, -} - -#[derive(Debug, Deserialize, Serialize, PartialEq)] -pub struct CredInfoVerifier { - pub schema_id: String, - pub cred_def_id: String, - pub rev_reg_id: Option, - pub timestamp: Option, -} - -#[derive(Debug, Deserialize, Serialize, PartialEq)] -pub struct CredInfoProver { - pub requested_attr: String, - pub referent: String, - pub schema_id: String, - pub cred_def_id: String, - pub rev_reg_id: Option, - pub cred_rev_id: Option, - pub revocation_interval: Option, - pub tails_file: Option, - pub timestamp: Option, -} - -impl ProofMessage { - pub fn new() -> ProofMessage { - ProofMessage { - version: None, - to_did: None, - from_did: None, - proof_request_id: None, - libindy_proof: String::new(), - state: None, - } - } - - pub fn new_reject() -> ProofMessage { - ProofMessage { - version: None, - to_did: None, - from_did: None, - proof_request_id: None, - libindy_proof: String::new(), - state: Some(VcxStateType::VcxStateRejected), - } - } - - pub fn to_string(&self) -> VcxResult { - serde_json::to_string(&self) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidProof, format!("Cannot serialize proof: {}", err))) - } - - pub fn from_str(payload: &str) -> VcxResult { - serde_json::from_str(payload) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidProof, format!("Cannot deserialize proof: {}", err))) - } - - pub fn get_credential_info(&self) -> VcxResult> { - get_credential_info(&self.libindy_proof) - } -} - -pub fn get_credential_info(proof: &str) -> VcxResult> { - let mut rtn = Vec::new(); - - let credentials: Value = serde_json::from_str(&proof) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot deserialize libndy proof: {}", err)))?; - - if let Value::Array(ref identifiers) = credentials["identifiers"] { - for identifier in identifiers { - if let (Some(schema_id), Some(cred_def_id)) = (identifier["schema_id"].as_str(), - identifier["cred_def_id"].as_str()) { - let rev_reg_id = identifier["rev_reg_id"] - .as_str() - .map(|x| x.to_string()); - - let timestamp = identifier["timestamp"].as_u64(); - rtn.push( - CredInfoVerifier { - schema_id: schema_id.to_string(), - cred_def_id: cred_def_id.to_string(), - rev_reg_id, - timestamp, - } - ); - } else { return Err(VcxError::from_msg(VcxErrorKind::InvalidProofCredentialData, "Cannot get identifiers")); } - } - } - - Ok(rtn) -} - -#[cfg(test)] -pub mod tests { - use ::utils::constants::{CRED_DEF_ID, REV_REG_ID, SCHEMA_ID}; - use utils::devsetup::*; - - use super::*; - - pub fn create_default_proof() -> ProofMessage { - let mut proof = ProofMessage::new(); - proof.libindy_proof = ::utils::constants::INDY_PROOF_JSON.to_string(); - proof.from_did = Some(::settings::get_config_value(::settings::CONFIG_INSTITUTION_DID).unwrap()); - proof - } - - #[test] - #[cfg(feature = "general_test")] - fn test_proof_struct() { - let _setup = SetupMocks::init(); - - let offer = create_default_proof(); - assert_eq!(offer.from_did, Some(::settings::get_config_value(::settings::CONFIG_INSTITUTION_DID).unwrap())); - } - - #[test] - #[cfg(feature = "general_test")] - fn test_proof_reject() { - let _setup = SetupMocks::init(); - - let proof = ProofMessage::new_reject(); - assert_eq!(proof.state, Some(VcxStateType::VcxStateRejected)); - } - - #[test] - #[cfg(feature = "general_test")] - fn test_serialize_deserialize() { - let _setup = SetupDefaults::init(); - - let proof = create_default_proof(); - let serialized = proof.to_string().unwrap(); - let proof2 = ProofMessage::from_str(&serialized).unwrap(); - assert_eq!(proof, proof2); - } - - #[test] - #[cfg(feature = "general_test")] - fn test_get_credential_data() { - let _setup = SetupMocks::init(); - - let mut proof = ProofMessage::new(); - proof.libindy_proof = "".to_string(); - assert_eq!(proof.get_credential_info().unwrap_err().kind(), VcxErrorKind::InvalidJson); - - proof.libindy_proof = "{}".to_string(); - assert_eq!(proof.get_credential_info().unwrap(), Vec::new()); - - proof.libindy_proof = json!({"identifiers": []}).to_string(); - assert_eq!(proof.get_credential_info().unwrap(), Vec::new()); - - proof.libindy_proof = json!({"identifiers": [{}]}).to_string(); - assert_eq!(proof.get_credential_info().unwrap_err().kind(), VcxErrorKind::InvalidProofCredentialData); - - proof.libindy_proof = json!({"identifiers": [{ - "schema_id": null, - "cred_def_id": null, - }]}).to_string(); - assert_eq!(proof.get_credential_info().unwrap_err().kind(), VcxErrorKind::InvalidProofCredentialData); - - proof.libindy_proof = json!({"identifiers": [{ - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - }]}).to_string(); - let mut cred_info = CredInfoVerifier { - schema_id: SCHEMA_ID.to_string(), - cred_def_id: CRED_DEF_ID.to_string(), - rev_reg_id: None, - timestamp: None, - }; - assert_eq!(&proof.get_credential_info().unwrap()[0], &cred_info); - - proof.libindy_proof = json!({"identifiers": [{ - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "rev_reg_id": REV_REG_ID, - "timestamp": 123 - }]}).to_string(); - cred_info.rev_reg_id = Some(REV_REG_ID.to_string()); - cred_info.timestamp = Some(123); - assert_eq!(&proof.get_credential_info().unwrap()[0], &cred_info); - } -} diff --git a/libvcx/src/proof_utils.rs b/libvcx/src/proof_utils.rs index ec74f6adaa..71b6831cfc 100644 --- a/libvcx/src/proof_utils.rs +++ b/libvcx/src/proof_utils.rs @@ -2,14 +2,11 @@ use serde_json; use serde_json::Value; use error::prelude::*; -use messages::proofs::proof_message::{ - CredInfoVerifier, - get_credential_info, -}; use settings; use utils::libindy::anoncreds; use utils::mockdata::mock_settings::get_mock_result_for_validate_indy_proof; use utils::openssl::encode; +use indyvc::proofs::proof_message::{CredInfoVerifier, get_credential_info}; fn validate_proof_revealed_attributes(proof_json: &str) -> VcxResult<()> { if settings::indy_mocks_enabled() { return Ok(()); } @@ -174,6 +171,7 @@ pub mod tests { use utils::mockdata::mockdata_proof; use super::*; + use indyvc::proofs::proof_message::CredInfoVerifier; #[test] #[cfg(feature = "general_test")] diff --git a/libvcx/src/schema.rs b/libvcx/src/schema.rs index 2f6ec48aad..a9fc7e0a0d 100644 --- a/libvcx/src/schema.rs +++ b/libvcx/src/schema.rs @@ -4,7 +4,7 @@ use serde_json; use api::PublicEntityStateType; use error::prelude::*; -use messages::ObjectWithVersion; +use agency_vcx::ObjectWithVersion; use utils::constants::DEFAULT_SERIALIZE_VERSION; use utils::libindy::anoncreds; use utils::libindy::ledger; diff --git a/libvcx/src/settings.rs b/libvcx/src/settings.rs index 364d8b978f..5409ff2b5f 100644 --- a/libvcx/src/settings.rs +++ b/libvcx/src/settings.rs @@ -12,7 +12,7 @@ use strum::IntoEnumIterator; use url::Url; use error::prelude::*; -use messages::validation; +use utils::validation; use utils::{error, get_temp_dir_path}; use utils::file::read_file; @@ -354,22 +354,6 @@ pub fn get_payment_method() -> String { get_config_value(CONFIG_PAYMENT_METHOD).unwrap_or(DEFAULT_PAYMENT_METHOD.to_string()) } -pub fn get_communication_method() -> VcxResult { - get_config_value(COMMUNICATION_METHOD) -} - -pub fn is_aries_protocol_set() -> bool { - let protocol_type = get_protocol_type(); - - protocol_type == ProtocolTypes::V2 && ARIES_COMMUNICATION_METHOD == get_communication_method().unwrap_or_default() || - protocol_type == ProtocolTypes::V3 || - protocol_type == ProtocolTypes::V4 -} - -pub fn is_strict_aries_protocol_set() -> bool { - get_protocol_type() == ProtocolTypes::V4 -} - pub fn get_actors() -> Vec { get_config_value(CONFIG_ACTORS) .and_then(|actors| @@ -438,18 +422,6 @@ impl ::std::string::ToString for ProtocolTypes { } } -pub fn get_protocol_type() -> ProtocolTypes { - ::std::env::var("CONFIG_PROTOCOL_TYPE") - .unwrap_or_else(|_e| { - warn!("Env variable CONFIG_PROTOCOL_TYPE was not set."); - get_config_value(CONFIG_PROTOCOL_TYPE).unwrap_or_else(|_e| { - error!("Config CONFIG_PROTOCOL_TYPE was not set. Will use default value of 3.0"); - "3.0".into() - }) - }) - .into() -} - pub fn clear_config() { trace!("clear_config >>>"); let mut config = SETTINGS.write().unwrap(); diff --git a/libvcx/src/utils/devsetup.rs b/libvcx/src/utils/devsetup.rs index 604e101b8b..bd49c514b7 100644 --- a/libvcx/src/utils/devsetup.rs +++ b/libvcx/src/utils/devsetup.rs @@ -459,7 +459,7 @@ pub fn setup_agency_env(protocol_type: &str, use_zero_fees: bool) { } debug!("setup_agency_env >> Going to provision enterprise using config: {:?}", &config); - let enterprise_config = ::messages::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let enterprise_config = ::agency_vcx::agent_utils::connect_register_provision(&config.to_string()).unwrap(); ::api::vcx::vcx_shutdown(false); @@ -485,7 +485,7 @@ pub fn setup_agency_env(protocol_type: &str, use_zero_fees: bool) { } debug!("setup_agency_env >> Going to provision consumer using config: {:?}", &config); - let consumer_config = ::messages::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let consumer_config = ::agency_vcx::agent_utils::connect_register_provision(&config.to_string()).unwrap(); unsafe { INSTITUTION_CONFIG = CONFIG_STRING.add(config_with_wallet_handle(&enterprise_wallet_name, &enterprise_config)).unwrap(); @@ -536,7 +536,7 @@ pub fn create_consumer_config() -> u32 { }); debug!("create_consumer_config >> Going to provision consumer using config: {:?}", &config); - let consumer_config = ::messages::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let consumer_config = ::agency_vcx::agent_utils::connect_register_provision(&config.to_string()).unwrap(); CONFIG_STRING.add(config_with_wallet_handle(&consumer_wallet_name, &consumer_config.to_string())).unwrap() } @@ -566,7 +566,7 @@ pub fn create_institution_config() -> u32 { }); debug!("create_institution_config >> Going to provision enterprise using config: {:?}", &config); - let enterprise_config = ::messages::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let enterprise_config = ::agency_vcx::agent_utils::connect_register_provision(&config.to_string()).unwrap(); let handle = CONFIG_STRING.add(config_with_wallet_handle(&enterprise_wallet_name, &enterprise_config.to_string())).unwrap(); diff --git a/libvcx/src/utils/mod.rs b/libvcx/src/utils/mod.rs index ef76032c6d..4178a2d91c 100644 --- a/libvcx/src/utils/mod.rs +++ b/libvcx/src/utils/mod.rs @@ -60,6 +60,7 @@ pub mod plugins; #[macro_use] pub mod logger; pub mod object_cache; +pub mod validation; pub fn get_temp_dir_path(filename: &str) -> PathBuf { let mut path = env::temp_dir(); diff --git a/libvcx/src/messages/validation.rs b/libvcx/src/utils/validation.rs similarity index 100% rename from libvcx/src/messages/validation.rs rename to libvcx/src/utils/validation.rs From 42025d147fdd7e833a718462596476a831ee1c5e Mon Sep 17 00:00:00 2001 From: Patrik Stas Date: Sat, 31 Oct 2020 23:26:00 +0100 Subject: [PATCH 2/7] Use module name 'agency_comm' instead of 'agency_vcx' Signed-off-by: Patrik Stas --- .../src/{agency_vcx => agency_comm}/agent_utils.rs | 6 +++--- libvcx/src/{agency_vcx => agency_comm}/create_key.rs | 6 +++--- .../src/{agency_vcx => agency_comm}/get_message.rs | 4 ++-- .../src/{agency_vcx => agency_comm}/message_type.rs | 2 +- libvcx/src/{agency_vcx => agency_comm}/mod.rs | 0 libvcx/src/{agency_vcx => agency_comm}/payload.rs | 6 +++--- libvcx/src/{agency_vcx => agency_comm}/thread.rs | 0 .../{agency_vcx => agency_comm}/update_connection.rs | 4 ++-- .../{agency_vcx => agency_comm}/update_message.rs | 10 +++++----- .../{agency_vcx => agency_comm}/update_profile.rs | 6 +++--- libvcx/src/api/utils.rs | 12 ++++++------ libvcx/src/api/vcx.rs | 4 ++-- libvcx/src/aries/handlers/connection/agent_info.rs | 8 ++++---- libvcx/src/aries/handlers/connection/connection.rs | 2 +- libvcx/src/aries/handlers/connection/mod.rs | 4 ++-- libvcx/src/aries/messages/a2a/message_type.rs | 2 +- libvcx/src/aries/messages/ack.rs | 2 +- .../src/aries/messages/connection/problem_report.rs | 2 +- libvcx/src/aries/messages/connection/response.rs | 2 +- libvcx/src/aries/messages/discovery/disclose.rs | 2 +- libvcx/src/aries/messages/error.rs | 2 +- libvcx/src/aries/messages/issuance/credential.rs | 2 +- .../src/aries/messages/issuance/credential_offer.rs | 2 +- .../aries/messages/issuance/credential_proposal.rs | 2 +- .../aries/messages/issuance/credential_request.rs | 2 +- .../messages/proof_presentation/presentation.rs | 2 +- .../proof_presentation/presentation_proposal.rs | 2 +- .../proof_presentation/presentation_request.rs | 2 +- libvcx/src/aries/messages/trust_ping/ping.rs | 2 +- .../src/aries/messages/trust_ping/ping_response.rs | 2 +- libvcx/src/aries/mod.rs | 6 +++--- libvcx/src/connection.rs | 12 ++++++------ libvcx/src/credential_def.rs | 2 +- libvcx/src/disclosed_proof.rs | 2 +- libvcx/src/lib.rs | 2 +- libvcx/src/schema.rs | 2 +- libvcx/src/utils/devsetup.rs | 8 ++++---- 37 files changed, 69 insertions(+), 69 deletions(-) rename libvcx/src/{agency_vcx => agency_comm}/agent_utils.rs (98%) rename libvcx/src/{agency_vcx => agency_comm}/create_key.rs (96%) rename libvcx/src/{agency_vcx => agency_comm}/get_message.rs (98%) rename libvcx/src/{agency_vcx => agency_comm}/message_type.rs (99%) rename libvcx/src/{agency_vcx => agency_comm}/mod.rs (100%) rename libvcx/src/{agency_vcx => agency_comm}/payload.rs (84%) rename libvcx/src/{agency_vcx => agency_comm}/thread.rs (100%) rename libvcx/src/{agency_vcx => agency_comm}/update_connection.rs (96%) rename libvcx/src/{agency_vcx => agency_comm}/update_message.rs (94%) rename libvcx/src/{agency_vcx => agency_comm}/update_profile.rs (96%) diff --git a/libvcx/src/agency_vcx/agent_utils.rs b/libvcx/src/agency_comm/agent_utils.rs similarity index 98% rename from libvcx/src/agency_vcx/agent_utils.rs rename to libvcx/src/agency_comm/agent_utils.rs index 339df50728..d444bfe1a6 100644 --- a/libvcx/src/agency_vcx/agent_utils.rs +++ b/libvcx/src/agency_comm/agent_utils.rs @@ -2,8 +2,8 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; use error::prelude::*; -use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; -use agency_vcx::message_type::MessageTypes; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::message_type::MessageTypes; use settings; use utils::{constants, error, httpclient}; use utils::httpclient::{AgencyMockDecrypted}; @@ -421,7 +421,7 @@ mod tests { use std::env; use api::vcx::vcx_shutdown; - use agency_vcx::agent_utils::{ComMethodType, Config, configure_wallet, connect_register_provision, update_agent_webhook}; + use agency_comm::agent_utils::{ComMethodType, Config, configure_wallet, connect_register_provision, update_agent_webhook}; use utils::devsetup::{SetupMocks, SetupDefaults, SetupLibraryAgencyV2}; #[test] diff --git a/libvcx/src/agency_vcx/create_key.rs b/libvcx/src/agency_comm/create_key.rs similarity index 96% rename from libvcx/src/agency_vcx/create_key.rs rename to libvcx/src/agency_comm/create_key.rs index 9e0a2fe651..82f990fa00 100644 --- a/libvcx/src/agency_vcx/create_key.rs +++ b/libvcx/src/agency_comm/create_key.rs @@ -1,5 +1,5 @@ -use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; -use agency_vcx::message_type::MessageTypes; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::message_type::MessageTypes; use error::prelude::*; use settings; use settings::ProtocolTypes; @@ -94,7 +94,7 @@ impl CreateKeyBuilder { #[cfg(test)] mod tests { - use agency_vcx::create_keys; + use agency_comm::create_keys; use utils::constants::{CREATE_KEYS_V2_RESPONSE, MY1_SEED, MY2_SEED, MY3_SEED}; use utils::devsetup::*; use utils::libindy::signus::create_and_store_my_did; diff --git a/libvcx/src/agency_vcx/get_message.rs b/libvcx/src/agency_comm/get_message.rs similarity index 98% rename from libvcx/src/agency_vcx/get_message.rs rename to libvcx/src/agency_comm/get_message.rs index 5abbf69050..7b86512564 100644 --- a/libvcx/src/agency_vcx/get_message.rs +++ b/libvcx/src/agency_comm/get_message.rs @@ -2,8 +2,8 @@ use std::collections::HashMap; use aries::utils::encryption_envelope::EncryptionEnvelope; use aries::handlers::connection::agent_info::AgentInfo; use error::{VcxError, VcxErrorKind, VcxResult}; -use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, GeneralMessage, get_messages, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency, prepare_message_for_agent, RemoteMessageType}; -use agency_vcx::message_type::MessageTypes; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, GeneralMessage, get_messages, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency, prepare_message_for_agent, RemoteMessageType}; +use agency_comm::message_type::MessageTypes; use settings; use settings::ProtocolTypes; use utils::{constants, httpclient}; diff --git a/libvcx/src/agency_vcx/message_type.rs b/libvcx/src/agency_comm/message_type.rs similarity index 99% rename from libvcx/src/agency_vcx/message_type.rs rename to libvcx/src/agency_comm/message_type.rs index 37aa40a237..40e060666e 100644 --- a/libvcx/src/agency_vcx/message_type.rs +++ b/libvcx/src/agency_comm/message_type.rs @@ -2,7 +2,7 @@ use regex::{Match, Regex}; use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; -use agency_vcx::A2AMessageKinds; +use agency_comm::A2AMessageKinds; use error::prelude::*; use settings; diff --git a/libvcx/src/agency_vcx/mod.rs b/libvcx/src/agency_comm/mod.rs similarity index 100% rename from libvcx/src/agency_vcx/mod.rs rename to libvcx/src/agency_comm/mod.rs diff --git a/libvcx/src/agency_vcx/payload.rs b/libvcx/src/agency_comm/payload.rs similarity index 84% rename from libvcx/src/agency_vcx/payload.rs rename to libvcx/src/agency_comm/payload.rs index 7cc50b5a42..58b0a06500 100644 --- a/libvcx/src/agency_vcx/payload.rs +++ b/libvcx/src/agency_comm/payload.rs @@ -1,9 +1,9 @@ use serde_json::Value; use error::{VcxError, VcxErrorKind, VcxResult}; -use agency_vcx::get_message::MessagePayload; -use agency_vcx::message_type::*; -use agency_vcx::thread::Thread; +use agency_comm::get_message::MessagePayload; +use agency_comm::message_type::*; +use agency_comm::thread::Thread; use utils::libindy::crypto; #[derive(Debug, Deserialize, Serialize, Clone, PartialEq)] diff --git a/libvcx/src/agency_vcx/thread.rs b/libvcx/src/agency_comm/thread.rs similarity index 100% rename from libvcx/src/agency_vcx/thread.rs rename to libvcx/src/agency_comm/thread.rs diff --git a/libvcx/src/agency_vcx/update_connection.rs b/libvcx/src/agency_comm/update_connection.rs similarity index 96% rename from libvcx/src/agency_vcx/update_connection.rs rename to libvcx/src/agency_comm/update_connection.rs index 4c95fde13f..b61ae8d0b2 100644 --- a/libvcx/src/agency_vcx/update_connection.rs +++ b/libvcx/src/agency_comm/update_connection.rs @@ -1,8 +1,8 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; -use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, delete_connection, GeneralMessage, parse_response_from_agency, prepare_message_for_agent}; -use agency_vcx::message_type::MessageTypes; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, delete_connection, GeneralMessage, parse_response_from_agency, prepare_message_for_agent}; +use agency_comm::message_type::MessageTypes; use error::prelude::*; use settings; use utils::httpclient; diff --git a/libvcx/src/agency_vcx/update_message.rs b/libvcx/src/agency_comm/update_message.rs similarity index 94% rename from libvcx/src/agency_vcx/update_message.rs rename to libvcx/src/agency_comm/update_message.rs index 170c638c98..9a6df1b47e 100644 --- a/libvcx/src/agency_vcx/update_message.rs +++ b/libvcx/src/agency_comm/update_message.rs @@ -1,6 +1,6 @@ use error::{VcxError, VcxErrorKind, VcxResult}; -use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency}; -use agency_vcx::message_type::MessageTypes; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::message_type::MessageTypes; use settings; use utils::{constants, httpclient}; use utils::httpclient::AgencyMock; @@ -133,9 +133,9 @@ mod tests { use std::time::Duration; use connection::send_generic_message; - use agency_vcx::get_message::download_messages_noauth; - use agency_vcx::MessageStatusCode; - use agency_vcx::update_message::{UIDsByConn, update_agency_messages, UpdateMessageStatusByConnectionsBuilder}; + use agency_comm::get_message::download_messages_noauth; + use agency_comm::MessageStatusCode; + use agency_comm::update_message::{UIDsByConn, update_agency_messages, UpdateMessageStatusByConnectionsBuilder}; use utils::devsetup::{SetupMocks, SetupLibraryAgencyV2}; use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_agency::AGENCY_MSG_STATUS_UPDATED_BY_CONNS; diff --git a/libvcx/src/agency_vcx/update_profile.rs b/libvcx/src/agency_comm/update_profile.rs similarity index 96% rename from libvcx/src/agency_vcx/update_profile.rs rename to libvcx/src/agency_comm/update_profile.rs index 76e726b90d..badca0ee39 100644 --- a/libvcx/src/agency_vcx/update_profile.rs +++ b/libvcx/src/agency_comm/update_profile.rs @@ -1,5 +1,5 @@ -use agency_vcx::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; -use agency_vcx::message_type::MessageTypes; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::message_type::MessageTypes; use error::{VcxError, VcxErrorKind, VcxResult}; use settings; use utils::{httpclient, validation}; @@ -118,7 +118,7 @@ impl UpdateProfileDataBuilder { #[cfg(test)] mod tests { - use agency_vcx::update_data; + use agency_comm::update_data; use utils::constants::{MY1_SEED, MY2_SEED, MY3_SEED}; use utils::devsetup::*; use utils::httpclient::AgencyMockDecrypted; diff --git a/libvcx/src/api/utils.rs b/libvcx/src/api/utils.rs index d1560d3322..cc6449ee59 100644 --- a/libvcx/src/api/utils.rs +++ b/libvcx/src/api/utils.rs @@ -6,9 +6,9 @@ use libc::c_char; use serde_json; use error::prelude::*; -use agency_vcx; +use agency_comm; use connection; -use agency_vcx::get_message::{parse_status_codes, parse_connection_handles}; +use agency_comm::get_message::{parse_status_codes, parse_connection_handles}; use utils::constants::*; use utils::cstring::CStringUtils; use utils::error; @@ -44,7 +44,7 @@ pub extern fn vcx_provision_agent(config: *const c_char) -> *mut c_char { trace!("vcx_provision_agent(config: {})", config); - match agency_vcx::agent_utils::connect_register_provision(&config) { + match agency_comm::agent_utils::connect_register_provision(&config) { Err(e) => { error!("Provision Agent Error {}.", e); let _res: u32 = e.into(); @@ -84,7 +84,7 @@ pub extern fn vcx_agent_provision_async(command_handle: CommandHandle, command_handle, config); thread::spawn(move || { - match agency_vcx::agent_utils::connect_register_provision(&config) { + match agency_comm::agent_utils::connect_register_provision(&config) { Err(e) => { error!("vcx_agent_provision_async_cb(command_handle: {}, rc: {}, config: NULL", command_handle, e); cb(command_handle, e.into(), ptr::null_mut()); @@ -331,7 +331,7 @@ pub extern fn vcx_messages_download(command_handle: CommandHandle, command_handle, message_status, uids); spawn(move || { - match ::agency_vcx::get_message::download_messages_noauth(pw_dids, message_status, uids) { + match ::agency_comm::get_message::download_messages_noauth(pw_dids, message_status, uids) { Ok(x) => { match serde_json::to_string(&x) { Ok(x) => { @@ -484,7 +484,7 @@ pub extern fn vcx_messages_update_status(command_handle: CommandHandle, command_handle, message_status, msg_json); spawn(move || { - match ::agency_vcx::update_message::update_agency_messages(&message_status, &msg_json) { + match ::agency_comm::update_message::update_agency_messages(&message_status, &msg_json) { Ok(()) => { trace!("vcx_messages_set_status_cb(command_handle: {}, rc: {})", command_handle, error::SUCCESS.message); diff --git a/libvcx/src/api/vcx.rs b/libvcx/src/api/vcx.rs index e97e7c1160..7ecf93c29a 100644 --- a/libvcx/src/api/vcx.rs +++ b/libvcx/src/api/vcx.rs @@ -309,7 +309,7 @@ fn _finish_init(command_handle: CommandHandle, cb: extern fn(xcommand_handle: Co info!("_finish_init: getting and setting webhook url"); match settings::get_config_value(settings::CONFIG_WEBHOOK_URL) { - Ok(webhook_url) => match ::agency_vcx::agent_utils::update_agent_webhook(&webhook_url) { + Ok(webhook_url) => match ::agency_comm::agent_utils::update_agent_webhook(&webhook_url) { Ok(()) => { info!("Agent webhook url updated on init, webhook_url={}", webhook_url); cb(command_handle, error::SUCCESS.code_num); @@ -508,7 +508,7 @@ pub extern fn vcx_update_webhook_url(command_handle: CommandHandle, settings::set_config_value(::settings::CONFIG_WEBHOOK_URL, ¬ification_webhook_url); spawn(move || { - match ::agency_vcx::agent_utils::update_agent_webhook(¬ification_webhook_url[..]) { + match ::agency_comm::agent_utils::update_agent_webhook(¬ification_webhook_url[..]) { Ok(()) => { trace!("vcx_update_webhook_url_cb(command_handle: {}, rc: {})", command_handle, error::SUCCESS.message); diff --git a/libvcx/src/aries/handlers/connection/agent_info.rs b/libvcx/src/aries/handlers/connection/agent_info.rs index 51c690440d..8b567f7535 100644 --- a/libvcx/src/aries/handlers/connection/agent_info.rs +++ b/libvcx/src/aries/handlers/connection/agent_info.rs @@ -5,10 +5,10 @@ use aries::messages::connection::did_doc::DidDoc; use aries::utils::encryption_envelope::EncryptionEnvelope; use connection::create_agent_keys; use error::prelude::*; -use agency_vcx::get_message::{get_connection_messages, Message}; -use agency_vcx::MessageStatusCode; -use agency_vcx::update_connection::send_delete_connection_message; -use agency_vcx::update_message::{UIDsByConn, update_messages as update_messages_status}; +use agency_comm::get_message::{get_connection_messages, Message}; +use agency_comm::MessageStatusCode; +use agency_comm::update_connection::send_delete_connection_message; +use agency_comm::update_message::{UIDsByConn, update_messages as update_messages_status}; use settings; use settings::ProtocolTypes; use utils::httpclient; diff --git a/libvcx/src/aries/handlers/connection/connection.rs b/libvcx/src/aries/handlers/connection/connection.rs index 94a21a12c0..0a95bb3e45 100644 --- a/libvcx/src/aries/handlers/connection/connection.rs +++ b/libvcx/src/aries/handlers/connection/connection.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use error::prelude::*; -use agency_vcx::get_message::Message; +use agency_comm::get_message::Message; use aries::handlers::connection::agent_info::AgentInfo; use aries::handlers::connection::invitee::state_machine::{InviteeState, SmConnectionInvitee}; use aries::handlers::connection::inviter::state_machine::{InviterState, SmConnectionInviter}; diff --git a/libvcx/src/aries/handlers/connection/mod.rs b/libvcx/src/aries/handlers/connection/mod.rs index 1c8b51bbf5..b141309b95 100644 --- a/libvcx/src/aries/handlers/connection/mod.rs +++ b/libvcx/src/aries/handlers/connection/mod.rs @@ -89,7 +89,7 @@ pub mod tests { } } - let _res = ::agency_vcx::get_message::download_messages_noauth(None, None, Some(vec![uid.clone()])).unwrap(); + let _res = ::agency_comm::get_message::download_messages_noauth(None, None, Some(vec![uid.clone()])).unwrap(); info!("test_connection_send_works:: Test if Get Message by id works"); { @@ -136,7 +136,7 @@ pub mod tests { info!("test_connection_send_works:: Test if Download Messages"); { - use agency_vcx::get_message::{download_messages_noauth, MessageByConnection, Message}; + use agency_comm::get_message::{download_messages_noauth, MessageByConnection, Message}; let credential_offer = ::aries::messages::issuance::credential_offer::tests::_credential_offer(); diff --git a/libvcx/src/aries/messages/a2a/message_type.rs b/libvcx/src/aries/messages/a2a/message_type.rs index 039ff5729f..bf9ac06bd7 100644 --- a/libvcx/src/aries/messages/a2a/message_type.rs +++ b/libvcx/src/aries/messages/a2a/message_type.rs @@ -1,7 +1,7 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; -use agency_vcx::message_type::parse_message_type; +use agency_comm::message_type::parse_message_type; use aries::messages::a2a::message_family::MessageFamilies; #[derive(Debug, Clone, PartialEq, Default)] diff --git a/libvcx/src/aries/messages/ack.rs b/libvcx/src/aries/messages/ack.rs index 2a3fe1d7ce..76c7cd799f 100644 --- a/libvcx/src/aries/messages/ack.rs +++ b/libvcx/src/aries/messages/ack.rs @@ -1,4 +1,4 @@ -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)] diff --git a/libvcx/src/aries/messages/connection/problem_report.rs b/libvcx/src/aries/messages/connection/problem_report.rs index 4c2c252ed2..4e3527b87d 100644 --- a/libvcx/src/aries/messages/connection/problem_report.rs +++ b/libvcx/src/aries/messages/connection/problem_report.rs @@ -1,4 +1,4 @@ -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::localization::Localization; diff --git a/libvcx/src/aries/messages/connection/response.rs b/libvcx/src/aries/messages/connection/response.rs index 70af4aa84f..6e42b248b4 100644 --- a/libvcx/src/aries/messages/connection/response.rs +++ b/libvcx/src/aries/messages/connection/response.rs @@ -2,7 +2,7 @@ use base64; use time; use error::prelude::*; -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use utils::libindy::crypto; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::a2a::message_family::MessageFamilies; diff --git a/libvcx/src/aries/messages/discovery/disclose.rs b/libvcx/src/aries/messages/discovery/disclose.rs index 04e26ac01a..7ce52935cd 100644 --- a/libvcx/src/aries/messages/discovery/disclose.rs +++ b/libvcx/src/aries/messages/discovery/disclose.rs @@ -1,4 +1,4 @@ -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use settings::Actors; use aries::messages::a2a::{MessageId, A2AMessage}; diff --git a/libvcx/src/aries/messages/error.rs b/libvcx/src/aries/messages/error.rs index 8c30b8fd2b..7172c0b1fa 100644 --- a/libvcx/src/aries/messages/error.rs +++ b/libvcx/src/aries/messages/error.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)] diff --git a/libvcx/src/aries/messages/issuance/credential.rs b/libvcx/src/aries/messages/issuance/credential.rs index 807eff1dcc..a1436462cc 100644 --- a/libvcx/src/aries/messages/issuance/credential.rs +++ b/libvcx/src/aries/messages/issuance/credential.rs @@ -1,6 +1,6 @@ use error::VcxResult; use error::prelude::*; -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::ack::PleaseAck; use aries::messages::attachment::{AttachmentId, Attachments}; diff --git a/libvcx/src/aries/messages/issuance/credential_offer.rs b/libvcx/src/aries/messages/issuance/credential_offer.rs index 5fe45611e4..520de0609d 100644 --- a/libvcx/src/aries/messages/issuance/credential_offer.rs +++ b/libvcx/src/aries/messages/issuance/credential_offer.rs @@ -1,5 +1,5 @@ use error::VcxResult; -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::attachment::{AttachmentId, Attachments}; use aries::messages::issuance::CredentialPreviewData; diff --git a/libvcx/src/aries/messages/issuance/credential_proposal.rs b/libvcx/src/aries/messages/issuance/credential_proposal.rs index 8d1c0b3406..be85376e2c 100644 --- a/libvcx/src/aries/messages/issuance/credential_proposal.rs +++ b/libvcx/src/aries/messages/issuance/credential_proposal.rs @@ -1,5 +1,5 @@ use error::VcxResult; -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::issuance::CredentialPreviewData; use aries::messages::mime_type::MimeType; diff --git a/libvcx/src/aries/messages/issuance/credential_request.rs b/libvcx/src/aries/messages/issuance/credential_request.rs index c5a7d09ea3..92e1913cae 100644 --- a/libvcx/src/aries/messages/issuance/credential_request.rs +++ b/libvcx/src/aries/messages/issuance/credential_request.rs @@ -1,5 +1,5 @@ use error::VcxResult; -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::attachment::{AttachmentId, Attachments}; diff --git a/libvcx/src/aries/messages/proof_presentation/presentation.rs b/libvcx/src/aries/messages/proof_presentation/presentation.rs index 5ebb08f126..2b7f9d1490 100644 --- a/libvcx/src/aries/messages/proof_presentation/presentation.rs +++ b/libvcx/src/aries/messages/proof_presentation/presentation.rs @@ -1,7 +1,7 @@ use std::convert::TryInto; use error::prelude::*; -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::ack::PleaseAck; use aries::messages::attachment::{AttachmentId, Attachments}; diff --git a/libvcx/src/aries/messages/proof_presentation/presentation_proposal.rs b/libvcx/src/aries/messages/proof_presentation/presentation_proposal.rs index 6ac001c2ca..5d34c0c5da 100644 --- a/libvcx/src/aries/messages/proof_presentation/presentation_proposal.rs +++ b/libvcx/src/aries/messages/proof_presentation/presentation_proposal.rs @@ -1,4 +1,4 @@ -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::a2a::message_family::MessageFamilies; use aries::messages::a2a::message_type::MessageType; diff --git a/libvcx/src/aries/messages/proof_presentation/presentation_request.rs b/libvcx/src/aries/messages/proof_presentation/presentation_request.rs index 71dbf86a2b..7633a00e97 100644 --- a/libvcx/src/aries/messages/proof_presentation/presentation_request.rs +++ b/libvcx/src/aries/messages/proof_presentation/presentation_request.rs @@ -56,7 +56,7 @@ pub type PresentationRequestData = ProofRequestData; #[cfg(test)] pub mod tests { - use agency_vcx::thread::Thread; + use agency_comm::thread::Thread; use aries::messages::connection::service::tests::_service; use super::*; diff --git a/libvcx/src/aries/messages/trust_ping/ping.rs b/libvcx/src/aries/messages/trust_ping/ping.rs index 9fb9186eb7..d067161508 100644 --- a/libvcx/src/aries/messages/trust_ping/ping.rs +++ b/libvcx/src/aries/messages/trust_ping/ping.rs @@ -1,4 +1,4 @@ -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)] diff --git a/libvcx/src/aries/messages/trust_ping/ping_response.rs b/libvcx/src/aries/messages/trust_ping/ping_response.rs index a3f900f39c..cbce022236 100644 --- a/libvcx/src/aries/messages/trust_ping/ping_response.rs +++ b/libvcx/src/aries/messages/trust_ping/ping_response.rs @@ -1,4 +1,4 @@ -use agency_vcx::thread::Thread; +use agency_comm::thread::Thread; use aries::messages::a2a::{A2AMessage, MessageId}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)] diff --git a/libvcx/src/aries/mod.rs b/libvcx/src/aries/mod.rs index 88ee90d870..3bfed7f596 100644 --- a/libvcx/src/aries/mod.rs +++ b/libvcx/src/aries/mod.rs @@ -11,8 +11,8 @@ pub mod test { use ::{rand, settings}; use rand::Rng; - use agency_vcx::agent_utils::connect_register_provision; - use agency_vcx::payload::{PayloadKinds}; + use agency_comm::agent_utils::connect_register_provision; + use agency_comm::payload::{PayloadKinds}; use utils::devsetup::*; use utils::libindy::wallet::*; use utils::plugins::init_plugin; @@ -77,7 +77,7 @@ pub mod test { } fn download_message(did: String, filter_msg_type: PayloadKinds) -> VcxAgencyMessage { - let mut messages = ::agency_vcx::get_message::download_messages_noauth(Some(vec![did]), Some(vec![String::from("MS-103")]), None).unwrap(); + let mut messages = ::agency_comm::get_message::download_messages_noauth(Some(vec![did]), Some(vec![String::from("MS-103")]), None).unwrap(); assert_eq!(1, messages.len()); let messages = messages.pop().unwrap(); diff --git a/libvcx/src/connection.rs b/libvcx/src/connection.rs index eb831e8eea..ebc5533cf8 100644 --- a/libvcx/src/connection.rs +++ b/libvcx/src/connection.rs @@ -8,9 +8,9 @@ use aries::messages::a2a::A2AMessage; use aries::messages::connection::did_doc::DidDoc; use aries::messages::connection::invite::Invitation as InvitationV3; use error::prelude::*; -use agency_vcx; -use agency_vcx::get_message::{get_bootstrap_agent_messages, MessageByConnection, Message}; -use agency_vcx::{SerializableObjectWithState, MessageStatusCode}; +use agency_comm; +use agency_comm::get_message::{get_bootstrap_agent_messages, MessageByConnection, Message}; +use agency_comm::{SerializableObjectWithState, MessageStatusCode}; use settings; use settings::ProtocolTypes; use utils::error; @@ -23,7 +23,7 @@ lazy_static! { pub fn create_agent_keys(source_id: &str, pw_did: &str, pw_verkey: &str) -> VcxResult<(String, String)> { debug!("creating pairwise keys on agent for connection {}", source_id); - let (agent_did, agent_verkey) = agency_vcx::create_keys() + let (agent_did, agent_verkey) = agency_comm::create_keys() .for_did(pw_did)? .for_verkey(pw_verkey)? .send_secure() @@ -308,8 +308,8 @@ pub mod tests { use serde_json::Value; use api::VcxStateType; - use agency_vcx::get_message::download_messages_noauth; - use agency_vcx::MessageStatusCode; + use agency_comm::get_message::download_messages_noauth; + use agency_comm::MessageStatusCode; use utils::constants::*; use utils::constants; use utils::devsetup::*; diff --git a/libvcx/src/credential_def.rs b/libvcx/src/credential_def.rs index c766e2ae4e..5ab879a285 100644 --- a/libvcx/src/credential_def.rs +++ b/libvcx/src/credential_def.rs @@ -2,7 +2,7 @@ use serde_json; use api::PublicEntityStateType; use error::prelude::*; -use agency_vcx::ObjectWithVersion; +use agency_comm::ObjectWithVersion; use utils::constants::DEFAULT_SERIALIZE_VERSION; use utils::libindy::anoncreds; use utils::libindy::cache::update_rev_reg_ids_cache; diff --git a/libvcx/src/disclosed_proof.rs b/libvcx/src/disclosed_proof.rs index 3eae689eea..b252ef45c6 100644 --- a/libvcx/src/disclosed_proof.rs +++ b/libvcx/src/disclosed_proof.rs @@ -8,7 +8,7 @@ use aries::{ }; use connection; use error::prelude::*; -use agency_vcx::{ +use agency_comm::{ get_message::Message, }; use settings; diff --git a/libvcx/src/lib.rs b/libvcx/src/lib.rs index e68bfe9ee2..c2d6b63afb 100644 --- a/libvcx/src/lib.rs +++ b/libvcx/src/lib.rs @@ -34,7 +34,7 @@ extern crate uuid; pub mod utils; pub mod settings; #[macro_use] -pub mod agency_vcx; +pub mod agency_comm; pub mod api; pub mod init; diff --git a/libvcx/src/schema.rs b/libvcx/src/schema.rs index a9fc7e0a0d..a0cfe128ce 100644 --- a/libvcx/src/schema.rs +++ b/libvcx/src/schema.rs @@ -4,7 +4,7 @@ use serde_json; use api::PublicEntityStateType; use error::prelude::*; -use agency_vcx::ObjectWithVersion; +use agency_comm::ObjectWithVersion; use utils::constants::DEFAULT_SERIALIZE_VERSION; use utils::libindy::anoncreds; use utils::libindy::ledger; diff --git a/libvcx/src/utils/devsetup.rs b/libvcx/src/utils/devsetup.rs index bd49c514b7..46da86a97b 100644 --- a/libvcx/src/utils/devsetup.rs +++ b/libvcx/src/utils/devsetup.rs @@ -459,7 +459,7 @@ pub fn setup_agency_env(protocol_type: &str, use_zero_fees: bool) { } debug!("setup_agency_env >> Going to provision enterprise using config: {:?}", &config); - let enterprise_config = ::agency_vcx::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let enterprise_config = ::agency_comm::agent_utils::connect_register_provision(&config.to_string()).unwrap(); ::api::vcx::vcx_shutdown(false); @@ -485,7 +485,7 @@ pub fn setup_agency_env(protocol_type: &str, use_zero_fees: bool) { } debug!("setup_agency_env >> Going to provision consumer using config: {:?}", &config); - let consumer_config = ::agency_vcx::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let consumer_config = ::agency_comm::agent_utils::connect_register_provision(&config.to_string()).unwrap(); unsafe { INSTITUTION_CONFIG = CONFIG_STRING.add(config_with_wallet_handle(&enterprise_wallet_name, &enterprise_config)).unwrap(); @@ -536,7 +536,7 @@ pub fn create_consumer_config() -> u32 { }); debug!("create_consumer_config >> Going to provision consumer using config: {:?}", &config); - let consumer_config = ::agency_vcx::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let consumer_config = ::agency_comm::agent_utils::connect_register_provision(&config.to_string()).unwrap(); CONFIG_STRING.add(config_with_wallet_handle(&consumer_wallet_name, &consumer_config.to_string())).unwrap() } @@ -566,7 +566,7 @@ pub fn create_institution_config() -> u32 { }); debug!("create_institution_config >> Going to provision enterprise using config: {:?}", &config); - let enterprise_config = ::agency_vcx::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let enterprise_config = ::agency_comm::agent_utils::connect_register_provision(&config.to_string()).unwrap(); let handle = CONFIG_STRING.add(config_with_wallet_handle(&enterprise_wallet_name, &enterprise_config.to_string())).unwrap(); From 05c34b8490a48e1c7a22c1ee9a73cd64f04e845b Mon Sep 17 00:00:00 2001 From: Patrik Stas Date: Sun, 1 Nov 2020 14:17:45 +0100 Subject: [PATCH 3/7] Restructure code related to libindy proofs Signed-off-by: Patrik Stas --- .../prover/states/initial.rs | 2 +- .../states/presentation_request_sent.rs | 3 +- .../presentation_request.rs | 2 +- libvcx/src/indyvc/proofs/mod.rs | 2 - libvcx/src/indyvc/proofs/proof_message.rs | 57 ---- libvcx/src/lib.rs | 4 +- libvcx/src/{indyvc => libindy}/mod.rs | 0 libvcx/src/libindy/proofs/mod.rs | 4 + .../proofs/proof_request.rs | 84 +----- .../libindy/proofs/proof_request_internal.rs | 48 +++ libvcx/src/libindy/proofs/prover/mod.rs | 2 + libvcx/src/libindy/proofs/prover/prover.rs | 48 +++ .../proofs/prover/prover_internal.rs} | 52 ++-- libvcx/src/libindy/proofs/verifier/mod.rs | 2 + .../proofs/verifier/verifier.rs} | 240 +-------------- .../proofs/verifier/verifier_internal.rs | 279 ++++++++++++++++++ libvcx/src/proof.rs | 1 - 17 files changed, 413 insertions(+), 417 deletions(-) delete mode 100644 libvcx/src/indyvc/proofs/mod.rs delete mode 100644 libvcx/src/indyvc/proofs/proof_message.rs rename libvcx/src/{indyvc => libindy}/mod.rs (100%) create mode 100644 libvcx/src/libindy/proofs/mod.rs rename libvcx/src/{indyvc => libindy}/proofs/proof_request.rs (83%) create mode 100644 libvcx/src/libindy/proofs/proof_request_internal.rs create mode 100644 libvcx/src/libindy/proofs/prover/mod.rs create mode 100644 libvcx/src/libindy/proofs/prover/prover.rs rename libvcx/src/{disclosed_proof_utils.rs => libindy/proofs/prover/prover_internal.rs} (95%) create mode 100644 libvcx/src/libindy/proofs/verifier/mod.rs rename libvcx/src/{proof_utils.rs => libindy/proofs/verifier/verifier.rs} (54%) create mode 100644 libvcx/src/libindy/proofs/verifier/verifier_internal.rs diff --git a/libvcx/src/aries/handlers/proof_presentation/prover/states/initial.rs b/libvcx/src/aries/handlers/proof_presentation/prover/states/initial.rs index b36e532c70..8bfcee711f 100644 --- a/libvcx/src/aries/handlers/proof_presentation/prover/states/initial.rs +++ b/libvcx/src/aries/handlers/proof_presentation/prover/states/initial.rs @@ -1,10 +1,10 @@ -use disclosed_proof_utils::generate_indy_proof; use error::prelude::*; use aries::handlers::proof_presentation::prover::states::presentation_prepared::PresentationPreparedState; use aries::handlers::proof_presentation::prover::states::presentation_prepared_failed::PresentationPreparationFailedState; use aries::messages::error::ProblemReport; use aries::messages::proof_presentation::presentation::Presentation; use aries::messages::proof_presentation::presentation_request::PresentationRequest; +use libindy::proofs::prover::prover::generate_indy_proof; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct InitialState { diff --git a/libvcx/src/aries/handlers/proof_presentation/verifier/states/presentation_request_sent.rs b/libvcx/src/aries/handlers/proof_presentation/verifier/states/presentation_request_sent.rs index 88287cdb2e..c5d20353e6 100644 --- a/libvcx/src/aries/handlers/proof_presentation/verifier/states/presentation_request_sent.rs +++ b/libvcx/src/aries/handlers/proof_presentation/verifier/states/presentation_request_sent.rs @@ -8,7 +8,7 @@ use aries::messages::proof_presentation::presentation::Presentation; use aries::messages::proof_presentation::presentation_ack::PresentationAck; use aries::messages::proof_presentation::presentation_request::PresentationRequest; use aries::messages::status::Status; -use proof_utils::validate_indy_proof; +use libindy::proofs::verifier::verifier::validate_indy_proof; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct PresentationRequestSentState { @@ -16,7 +16,6 @@ pub struct PresentationRequestSentState { pub presentation_request: PresentationRequest, } - impl PresentationRequestSentState { pub fn verify_presentation(&self, presentation: &Presentation) -> VcxResult<()> { let valid = validate_indy_proof(&presentation.presentations_attach.content()?, diff --git a/libvcx/src/aries/messages/proof_presentation/presentation_request.rs b/libvcx/src/aries/messages/proof_presentation/presentation_request.rs index 7633a00e97..c43bb67685 100644 --- a/libvcx/src/aries/messages/proof_presentation/presentation_request.rs +++ b/libvcx/src/aries/messages/proof_presentation/presentation_request.rs @@ -4,7 +4,7 @@ use error::prelude::*; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::attachment::{AttachmentId, Attachments}; use aries::messages::connection::service::Service; -use indyvc::proofs::proof_request::ProofRequestData; +use libindy::proofs::proof_request::ProofRequestData; #[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Default)] pub struct PresentationRequest { diff --git a/libvcx/src/indyvc/proofs/mod.rs b/libvcx/src/indyvc/proofs/mod.rs deleted file mode 100644 index 8cdb00b4b7..0000000000 --- a/libvcx/src/indyvc/proofs/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod proof_request; -pub mod proof_message; \ No newline at end of file diff --git a/libvcx/src/indyvc/proofs/proof_message.rs b/libvcx/src/indyvc/proofs/proof_message.rs deleted file mode 100644 index ed76029ae5..0000000000 --- a/libvcx/src/indyvc/proofs/proof_message.rs +++ /dev/null @@ -1,57 +0,0 @@ -use serde_json; -use serde_json::Value; - -use api::VcxStateType; -use error::prelude::*; -use indyvc::proofs::proof_request::NonRevokedInterval; - -#[derive(Debug, Deserialize, Serialize, PartialEq)] -pub struct CredInfoVerifier { - pub schema_id: String, - pub cred_def_id: String, - pub rev_reg_id: Option, - pub timestamp: Option, -} - -#[derive(Debug, Deserialize, Serialize, PartialEq)] -pub struct CredInfoProver { - pub requested_attr: String, - pub referent: String, - pub schema_id: String, - pub cred_def_id: String, - pub rev_reg_id: Option, - pub cred_rev_id: Option, - pub revocation_interval: Option, - pub tails_file: Option, - pub timestamp: Option, -} - -pub fn get_credential_info(proof: &str) -> VcxResult> { - let mut rtn = Vec::new(); - - let credentials: Value = serde_json::from_str(&proof) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot deserialize libndy proof: {}", err)))?; - - if let Value::Array(ref identifiers) = credentials["identifiers"] { - for identifier in identifiers { - if let (Some(schema_id), Some(cred_def_id)) = (identifier["schema_id"].as_str(), - identifier["cred_def_id"].as_str()) { - let rev_reg_id = identifier["rev_reg_id"] - .as_str() - .map(|x| x.to_string()); - - let timestamp = identifier["timestamp"].as_u64(); - rtn.push( - CredInfoVerifier { - schema_id: schema_id.to_string(), - cred_def_id: cred_def_id.to_string(), - rev_reg_id, - timestamp, - } - ); - } else { return Err(VcxError::from_msg(VcxErrorKind::InvalidProofCredentialData, "Cannot get identifiers")); } - } - } - - Ok(rtn) -} diff --git a/libvcx/src/lib.rs b/libvcx/src/lib.rs index c2d6b63afb..79a738839f 100644 --- a/libvcx/src/lib.rs +++ b/libvcx/src/lib.rs @@ -48,10 +48,8 @@ pub mod credential; pub mod disclosed_proof; pub mod aries; -mod proof_utils; -mod disclosed_proof_utils; mod filters; -mod indyvc; +mod libindy; #[allow(unused_imports)] #[allow(dead_code)] diff --git a/libvcx/src/indyvc/mod.rs b/libvcx/src/libindy/mod.rs similarity index 100% rename from libvcx/src/indyvc/mod.rs rename to libvcx/src/libindy/mod.rs diff --git a/libvcx/src/libindy/proofs/mod.rs b/libvcx/src/libindy/proofs/mod.rs new file mode 100644 index 0000000000..d8f199ab45 --- /dev/null +++ b/libvcx/src/libindy/proofs/mod.rs @@ -0,0 +1,4 @@ +pub mod prover; +pub mod verifier; +pub mod proof_request; +mod proof_request_internal; diff --git a/libvcx/src/indyvc/proofs/proof_request.rs b/libvcx/src/libindy/proofs/proof_request.rs similarity index 83% rename from libvcx/src/indyvc/proofs/proof_request.rs rename to libvcx/src/libindy/proofs/proof_request.rs index 5aef161e20..ddd4a45ac7 100644 --- a/libvcx/src/indyvc/proofs/proof_request.rs +++ b/libvcx/src/libindy/proofs/proof_request.rs @@ -5,80 +5,10 @@ use serde_json; use aries::messages::connection::service::Service; use error::prelude::*; -use utils::validation; +use libindy::proofs::proof_request_internal::{AttrInfo, NonRevokedInterval, PredicateInfo}; use utils::libindy::anoncreds; use utils::qualifier; - -static PROOF_REQUEST: &str = "PROOF_REQUEST"; -static PROOF_DATA: &str = "proof_request_data"; -pub const PROOF_REQUEST_V2: &str = "2.0"; - -#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, PartialOrd)] -struct ProofType { - name: String, - #[serde(rename = "version")] - type_version: String, -} - -#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, PartialOrd)] -struct ProofTopic { - mid: u32, - tid: u32, -} - -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] -#[serde(untagged)] -pub enum Restrictions { - V1(Vec), - V2(::serde_json::Value), -} - -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] -pub struct AttrInfo { - #[serde(skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub names: Option>, - #[serde(skip_serializing_if = "Option::is_none")] - pub restrictions: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub non_revoked: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub self_attest_allowed: Option, -} - -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] -pub struct Filter { - pub schema_id: Option, - pub schema_issuer_did: Option, - pub schema_name: Option, - pub schema_version: Option, - pub issuer_did: Option, - pub cred_def_id: Option, -} - -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] -pub struct PredicateInfo { - pub name: String, - //Todo: Update p_type to use Enum - pub p_type: String, - pub p_value: i32, - #[serde(skip_serializing_if = "Option::is_none")] - pub restrictions: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub non_revoked: Option, -} - -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] -pub struct ProofPredicates { - predicates: Vec -} - -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Hash)] -pub struct NonRevokedInterval { - pub from: Option, - pub to: Option, -} +use utils::validation; #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct ProofRequestData { @@ -106,16 +36,6 @@ impl ProofRequestData { self } - pub fn set_version(mut self, version: String) -> ProofRequestData { - self.data_version = version; - self - } - - pub fn set_format_version(mut self, version: ProofRequestVersion) -> ProofRequestData { - self.ver = Some(version); - self - } - pub fn set_nonce(mut self) -> VcxResult { self.nonce = anoncreds::generate_nonce()?; Ok(self) diff --git a/libvcx/src/libindy/proofs/proof_request_internal.rs b/libvcx/src/libindy/proofs/proof_request_internal.rs new file mode 100644 index 0000000000..e4d57989a7 --- /dev/null +++ b/libvcx/src/libindy/proofs/proof_request_internal.rs @@ -0,0 +1,48 @@ +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] +pub struct Filter { + pub schema_id: Option, + pub schema_issuer_did: Option, + pub schema_name: Option, + pub schema_version: Option, + pub issuer_did: Option, + pub cred_def_id: Option, +} + +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] +#[serde(untagged)] +pub enum Restrictions { + V1(Vec), + V2(::serde_json::Value), +} + +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] +pub struct PredicateInfo { + pub name: String, + //Todo: Update p_type to use Enum + pub p_type: String, + pub p_value: i32, + #[serde(skip_serializing_if = "Option::is_none")] + pub restrictions: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub non_revoked: Option, +} + +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] +pub struct AttrInfo { + #[serde(skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub names: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub restrictions: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub non_revoked: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub self_attest_allowed: Option, +} + +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Hash)] +pub struct NonRevokedInterval { + pub from: Option, + pub to: Option, +} diff --git a/libvcx/src/libindy/proofs/prover/mod.rs b/libvcx/src/libindy/proofs/prover/mod.rs new file mode 100644 index 0000000000..40d39e09a5 --- /dev/null +++ b/libvcx/src/libindy/proofs/prover/mod.rs @@ -0,0 +1,2 @@ +pub mod prover; +mod prover_internal; \ No newline at end of file diff --git a/libvcx/src/libindy/proofs/prover/prover.rs b/libvcx/src/libindy/proofs/prover/prover.rs new file mode 100644 index 0000000000..00c3554ae1 --- /dev/null +++ b/libvcx/src/libindy/proofs/prover/prover.rs @@ -0,0 +1,48 @@ +use std::collections::HashMap; + +use serde_json::Value; + +use error::prelude::*; +use libindy::proofs::proof_request::ProofRequestData; +use libindy::proofs::prover::prover_internal::{ + build_cred_defs_json_prover, build_requested_credentials_json, build_rev_states_json, + build_schemas_json_prover, credential_def_identifiers, +}; +use settings; +use utils::libindy::anoncreds; +use utils::libindy::anoncreds::{get_rev_reg_def_json, get_rev_reg_delta_json}; +use utils::libindy::cache::{get_rev_reg_cache, RevRegCache, RevState, set_rev_reg_cache}; +use utils::mockdata::mock_settings::get_mock_generate_indy_proof; + +pub fn generate_indy_proof(credentials: &str, self_attested_attrs: &str, proof_req_data_json: &str) -> VcxResult { + trace!("generate_indy_proof >>> credentials: {}, self_attested_attrs: {}", secret!(&credentials), secret!(&self_attested_attrs)); + + match get_mock_generate_indy_proof() { + None => {} + Some(mocked_indy_proof) => { + warn!("generate_indy_proof :: returning mocked response"); + return Ok(mocked_indy_proof); + } + } + + let proof_request: ProofRequestData = serde_json::from_str(&proof_req_data_json) + .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot deserialize proof request: {}", err)))?; + + let mut credentials_identifiers = credential_def_identifiers(credentials, &proof_request)?; + + let revoc_states_json = build_rev_states_json(&mut credentials_identifiers)?; + let requested_credentials = build_requested_credentials_json(&credentials_identifiers, + self_attested_attrs, + &proof_request)?; + + let schemas_json = build_schemas_json_prover(&credentials_identifiers)?; + let credential_defs_json = build_cred_defs_json_prover(&credentials_identifiers)?; + + let proof = anoncreds::libindy_prover_create_proof(&proof_req_data_json, + &requested_credentials, + settings::DEFAULT_LINK_SECRET_ALIAS, + &schemas_json, + &credential_defs_json, + Some(&revoc_states_json))?; + Ok(proof) +} diff --git a/libvcx/src/disclosed_proof_utils.rs b/libvcx/src/libindy/proofs/prover/prover_internal.rs similarity index 95% rename from libvcx/src/disclosed_proof_utils.rs rename to libvcx/src/libindy/proofs/prover/prover_internal.rs index bef209a961..1778d2ce54 100644 --- a/libvcx/src/disclosed_proof_utils.rs +++ b/libvcx/src/libindy/proofs/prover/prover_internal.rs @@ -3,13 +3,25 @@ use std::collections::HashMap; use serde_json::Value; use error::prelude::*; +use libindy::proofs::proof_request::ProofRequestData; +use libindy::proofs::proof_request_internal::NonRevokedInterval; use settings; use utils::libindy::anoncreds; use utils::libindy::anoncreds::{get_rev_reg_def_json, get_rev_reg_delta_json}; use utils::libindy::cache::{get_rev_reg_cache, RevRegCache, RevState, set_rev_reg_cache}; -use utils::mockdata::mock_settings::get_mock_generate_indy_proof; -use indyvc::proofs::proof_message::CredInfoProver; -use indyvc::proofs::proof_request::{ProofRequestData, NonRevokedInterval}; + +#[derive(Debug, Deserialize, Serialize, PartialEq)] +pub struct CredInfoProver { + pub requested_attr: String, + pub referent: String, + pub schema_id: String, + pub cred_def_id: String, + pub rev_reg_id: Option, + pub cred_rev_id: Option, + pub revocation_interval: Option, + pub tails_file: Option, + pub timestamp: Option, +} fn build_schemas_json_prover(credentials_identifiers: &Vec) -> VcxResult { trace!("build_schemas_json_prover >>> credentials_identifiers: {:?}", credentials_identifiers); @@ -244,42 +256,12 @@ pub fn build_requested_credentials_json(credentials_identifiers: &Vec VcxResult { - trace!("generate_indy_proof >>> credentials: {}, self_attested_attrs: {}", secret!(&credentials), secret!(&self_attested_attrs)); - - match get_mock_generate_indy_proof() { - None => {} - Some(mocked_indy_proof) => { - warn!("generate_indy_proof :: returning mocked response"); - return Ok(mocked_indy_proof); - } - } - - let proof_request: ProofRequestData = serde_json::from_str(&proof_req_data_json) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot deserialize proof request: {}", err)))?; - - let mut credentials_identifiers = credential_def_identifiers(credentials, &proof_request)?; - - let revoc_states_json = build_rev_states_json(&mut credentials_identifiers)?; - let requested_credentials = build_requested_credentials_json(&credentials_identifiers, - self_attested_attrs, - &proof_request)?; - - let schemas_json = build_schemas_json_prover(&credentials_identifiers)?; - let credential_defs_json = build_cred_defs_json_prover(&credentials_identifiers)?; - - let proof = anoncreds::libindy_prover_create_proof(&proof_req_data_json, - &requested_credentials, - settings::DEFAULT_LINK_SECRET_ALIAS, - &schemas_json, - &credential_defs_json, - Some(&revoc_states_json))?; - Ok(proof) -} #[cfg(test)] pub mod tests { use connection; + use libindy::proofs::proof_request_internal::NonRevokedInterval; + use libindy::proofs::prover::prover_internal::{CredInfoProver, get_revocation_interval}; use utils::{ constants::{ADDRESS_CRED_DEF_ID, ADDRESS_CRED_ID, ADDRESS_CRED_REV_ID, ADDRESS_REV_REG_ID, ADDRESS_SCHEMA_ID, ARIES_PROVER_CREDENTIALS, ARIES_PROVER_SELF_ATTESTED_ATTRS, diff --git a/libvcx/src/libindy/proofs/verifier/mod.rs b/libvcx/src/libindy/proofs/verifier/mod.rs new file mode 100644 index 0000000000..d87ba75859 --- /dev/null +++ b/libvcx/src/libindy/proofs/verifier/mod.rs @@ -0,0 +1,2 @@ +pub mod verifier; +mod verifier_internal; \ No newline at end of file diff --git a/libvcx/src/proof_utils.rs b/libvcx/src/libindy/proofs/verifier/verifier.rs similarity index 54% rename from libvcx/src/proof_utils.rs rename to libvcx/src/libindy/proofs/verifier/verifier.rs index 71b6831cfc..1546b27ccd 100644 --- a/libvcx/src/proof_utils.rs +++ b/libvcx/src/libindy/proofs/verifier/verifier.rs @@ -2,130 +2,14 @@ use serde_json; use serde_json::Value; use error::prelude::*; +use libindy::proofs::verifier::verifier_internal::{ + build_cred_defs_json_verifier, build_rev_reg_defs_json, build_rev_reg_json, + build_schemas_json_verifier, get_credential_info, validate_proof_revealed_attributes, +}; use settings; use utils::libindy::anoncreds; use utils::mockdata::mock_settings::get_mock_result_for_validate_indy_proof; use utils::openssl::encode; -use indyvc::proofs::proof_message::{CredInfoVerifier, get_credential_info}; - -fn validate_proof_revealed_attributes(proof_json: &str) -> VcxResult<()> { - if settings::indy_mocks_enabled() { return Ok(()); } - - let proof: Value = serde_json::from_str(proof_json) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot deserialize libndy proof: {}", err)))?; - - let revealed_attrs = match proof["requested_proof"]["revealed_attrs"].as_object() { - Some(revealed_attrs) => revealed_attrs, - None => return Ok(()) - }; - - for (attr1_referent, info) in revealed_attrs.iter() { - let raw = info["raw"].as_str().ok_or(VcxError::from_msg(VcxErrorKind::InvalidProof, format!("Cannot get raw value for \"{}\" attribute", attr1_referent)))?; - let encoded_ = info["encoded"].as_str().ok_or(VcxError::from_msg(VcxErrorKind::InvalidProof, format!("Cannot get encoded value for \"{}\" attribute", attr1_referent)))?; - - let expected_encoded = encode(&raw)?; - - if expected_encoded != encoded_.to_string() { - return Err(VcxError::from_msg(VcxErrorKind::InvalidProof, format!("Encoded values are different. Expected: {}. From Proof: {}", expected_encoded, encoded_))); - } - } - - Ok(()) -} - -fn build_cred_defs_json_verifier(credential_data: &Vec) -> VcxResult { - debug!("building credential_def_json for proof validation"); - let mut credential_json = json!({}); - - for ref cred_info in credential_data.iter() { - if credential_json.get(&cred_info.cred_def_id).is_none() { - let (id, credential_def) = anoncreds::get_cred_def_json(&cred_info.cred_def_id)?; - - let credential_def = serde_json::from_str(&credential_def) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidProofCredentialData, format!("Cannot deserialize credential definition: {}", err)))?; - - credential_json[id] = credential_def; - } - } - - Ok(credential_json.to_string()) -} - -fn build_schemas_json_verifier(credential_data: &Vec) -> VcxResult { - debug!("building schemas json for proof validation"); - - let mut schemas_json = json!({}); - - for ref cred_info in credential_data.iter() { - if schemas_json.get(&cred_info.schema_id).is_none() { - let (id, schema_json) = anoncreds::get_schema_json(&cred_info.schema_id) - .map_err(|err| err.map(VcxErrorKind::InvalidSchema, "Cannot get schema"))?; - - let schema_val = serde_json::from_str(&schema_json) - .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidSchema, format!("Cannot deserialize schema: {}", err)))?; - - schemas_json[id] = schema_val; - } - } - - Ok(schemas_json.to_string()) -} - -fn build_rev_reg_defs_json(credential_data: &Vec) -> VcxResult { - debug!("building rev_reg_def_json for proof validation"); - - let mut rev_reg_defs_json = json!({}); - - for ref cred_info in credential_data.iter() { - let rev_reg_id = cred_info - .rev_reg_id - .as_ref() - .ok_or(VcxError::from(VcxErrorKind::InvalidRevocationDetails))?; - - if rev_reg_defs_json.get(rev_reg_id).is_none() { - let (id, json) = anoncreds::get_rev_reg_def_json(rev_reg_id) - .or(Err(VcxError::from(VcxErrorKind::InvalidRevocationDetails)))?; - - let rev_reg_def_json = serde_json::from_str(&json) - .or(Err(VcxError::from(VcxErrorKind::InvalidSchema)))?; - - rev_reg_defs_json[id] = rev_reg_def_json; - } - } - - Ok(rev_reg_defs_json.to_string()) -} - -fn build_rev_reg_json(credential_data: &Vec) -> VcxResult { - debug!("building rev_reg_json for proof validation"); - - let mut rev_regs_json = json!({}); - - for ref cred_info in credential_data.iter() { - let rev_reg_id = cred_info - .rev_reg_id - .as_ref() - .ok_or(VcxError::from(VcxErrorKind::InvalidRevocationDetails))?; - - let timestamp = cred_info - .timestamp - .as_ref() - .ok_or(VcxError::from(VcxErrorKind::InvalidRevocationTimestamp))?; - - if rev_regs_json.get(rev_reg_id).is_none() { - let (id, json, timestamp) = anoncreds::get_rev_reg(rev_reg_id, timestamp.to_owned()) - .or(Err(VcxError::from(VcxErrorKind::InvalidRevocationDetails)))?; - - let rev_reg_json: Value = serde_json::from_str(&json) - .or(Err(VcxError::from(VcxErrorKind::InvalidJson)))?; - - let rev_reg_json = json!({timestamp.to_string(): rev_reg_json}); - rev_regs_json[id] = rev_reg_json; - } - } - - Ok(rev_regs_json.to_string()) -} pub fn validate_indy_proof(proof_json: &str, proof_req_json: &str) -> VcxResult { if let Some(mock_result) = get_mock_result_for_validate_indy_proof() { @@ -161,123 +45,14 @@ pub fn validate_indy_proof(proof_json: &str, proof_req_json: &str) -> VcxResult< #[cfg(test)] pub mod tests { - use api::VcxStateType; - use aries::handlers::proof_presentation::verifier::verifier::Verifier; - use aries::messages::proof_presentation::presentation_request::PresentationRequestData; - use connection::tests::build_test_connection_inviter_requested; - use utils::constants::*; - use utils::devsetup::*; - use utils::httpclient::HttpClientMockResponse; - use utils::mockdata::mockdata_proof; - use super::*; - use indyvc::proofs::proof_message::CredInfoVerifier; - - #[test] - #[cfg(feature = "general_test")] - fn test_build_cred_defs_json_verifier_with_multiple_credentials() { - let _setup = SetupMocks::init(); - - let cred1 = CredInfoVerifier { - schema_id: "schema_key1".to_string(), - cred_def_id: "cred_def_key1".to_string(), - rev_reg_id: None, - timestamp: None, - }; - let cred2 = CredInfoVerifier { - schema_id: "schema_key2".to_string(), - cred_def_id: "cred_def_key2".to_string(), - rev_reg_id: None, - timestamp: None, - }; - let credentials = vec![cred1, cred2]; - let credential_json = build_cred_defs_json_verifier(&credentials).unwrap(); - - let json: Value = serde_json::from_str(CRED_DEF_JSON).unwrap(); - let expected = json!({CRED_DEF_ID:json}).to_string(); - assert_eq!(credential_json, expected); - } - - #[test] - #[cfg(feature = "general_test")] - fn test_build_schemas_json_verifier_with_multiple_schemas() { - let _setup = SetupMocks::init(); - - let cred1 = CredInfoVerifier { - schema_id: "schema_key1".to_string(), - cred_def_id: "cred_def_key1".to_string(), - rev_reg_id: None, - timestamp: None, - }; - let cred2 = CredInfoVerifier { - schema_id: "schema_key2".to_string(), - cred_def_id: "cred_def_key2".to_string(), - rev_reg_id: None, - timestamp: None, - }; - let credentials = vec![cred1, cred2]; - let schema_json = build_schemas_json_verifier(&credentials).unwrap(); - - let json: Value = serde_json::from_str(SCHEMA_JSON).unwrap(); - let expected = json!({SCHEMA_ID:json}).to_string(); - assert_eq!(schema_json, expected); - } - - #[test] - #[cfg(feature = "general_test")] - fn test_build_rev_reg_defs_json() { - let _setup = SetupMocks::init(); - - let cred1 = CredInfoVerifier { - schema_id: "schema_key1".to_string(), - cred_def_id: "cred_def_key1".to_string(), - rev_reg_id: Some("id1".to_string()), - timestamp: None, - }; - let cred2 = CredInfoVerifier { - schema_id: "schema_key2".to_string(), - cred_def_id: "cred_def_key2".to_string(), - rev_reg_id: Some("id2".to_string()), - timestamp: None, - }; - let credentials = vec![cred1, cred2]; - let rev_reg_defs_json = build_rev_reg_defs_json(&credentials).unwrap(); - - let json: Value = serde_json::from_str(&rev_def_json()).unwrap(); - let expected = json!({REV_REG_ID:json}).to_string(); - assert_eq!(rev_reg_defs_json, expected); - } - - #[test] - #[cfg(feature = "general_test")] - fn test_build_rev_reg_json() { - let _setup = SetupMocks::init(); - - let cred1 = CredInfoVerifier { - schema_id: "schema_key1".to_string(), - cred_def_id: "cred_def_key1".to_string(), - rev_reg_id: Some("id1".to_string()), - timestamp: Some(1), - }; - let cred2 = CredInfoVerifier { - schema_id: "schema_key2".to_string(), - cred_def_id: "cred_def_key2".to_string(), - rev_reg_id: Some("id2".to_string()), - timestamp: Some(2), - }; - let credentials = vec![cred1, cred2]; - let rev_reg_json = build_rev_reg_json(&credentials).unwrap(); - - let json: Value = serde_json::from_str(REV_REG_JSON).unwrap(); - let expected = json!({REV_REG_ID:{"1":json}}).to_string(); - assert_eq!(rev_reg_json, expected); - } + use utils::devsetup::SetupLibraryWalletPoolZeroFees; + use aries::messages::proof_presentation::presentation_request::PresentationRequestData; #[test] #[cfg(feature = "pool_tests")] fn test_proof_self_attested_proof_validation() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let requested_attrs = json!([ json!({ @@ -324,7 +99,6 @@ pub mod tests { #[cfg(feature = "pool_tests")] fn test_proof_restrictions() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let requested_attrs = json!([ json!({ @@ -384,7 +158,6 @@ pub mod tests { #[cfg(feature = "pool_tests")] fn test_proof_validate_attribute() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); let requested_attrs = json!([ @@ -452,3 +225,4 @@ pub mod tests { } } } + diff --git a/libvcx/src/libindy/proofs/verifier/verifier_internal.rs b/libvcx/src/libindy/proofs/verifier/verifier_internal.rs new file mode 100644 index 0000000000..978c2cb2ac --- /dev/null +++ b/libvcx/src/libindy/proofs/verifier/verifier_internal.rs @@ -0,0 +1,279 @@ +use serde_json; +use serde_json::Value; + +use error::prelude::*; +use settings; +use utils::libindy::anoncreds; +use utils::mockdata::mock_settings::get_mock_result_for_validate_indy_proof; +use utils::openssl::encode; + +#[derive(Debug, Deserialize, Serialize, PartialEq)] +pub struct CredInfoVerifier { + pub schema_id: String, + pub cred_def_id: String, + pub rev_reg_id: Option, + pub timestamp: Option, +} + +pub fn get_credential_info(proof: &str) -> VcxResult> { + let mut rtn = Vec::new(); + + let credentials: Value = serde_json::from_str(&proof) + .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot deserialize libndy proof: {}", err)))?; + + if let Value::Array(ref identifiers) = credentials["identifiers"] { + for identifier in identifiers { + if let (Some(schema_id), Some(cred_def_id)) = (identifier["schema_id"].as_str(), + identifier["cred_def_id"].as_str()) { + let rev_reg_id = identifier["rev_reg_id"] + .as_str() + .map(|x| x.to_string()); + + let timestamp = identifier["timestamp"].as_u64(); + rtn.push( + CredInfoVerifier { + schema_id: schema_id.to_string(), + cred_def_id: cred_def_id.to_string(), + rev_reg_id, + timestamp, + } + ); + } else { return Err(VcxError::from_msg(VcxErrorKind::InvalidProofCredentialData, "Cannot get identifiers")); } + } + } + + Ok(rtn) +} + +pub fn validate_proof_revealed_attributes(proof_json: &str) -> VcxResult<()> { + if settings::indy_mocks_enabled() { return Ok(()); } + + let proof: Value = serde_json::from_str(proof_json) + .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot deserialize libndy proof: {}", err)))?; + + let revealed_attrs = match proof["requested_proof"]["revealed_attrs"].as_object() { + Some(revealed_attrs) => revealed_attrs, + None => return Ok(()) + }; + + for (attr1_referent, info) in revealed_attrs.iter() { + let raw = info["raw"].as_str().ok_or(VcxError::from_msg(VcxErrorKind::InvalidProof, format!("Cannot get raw value for \"{}\" attribute", attr1_referent)))?; + let encoded_ = info["encoded"].as_str().ok_or(VcxError::from_msg(VcxErrorKind::InvalidProof, format!("Cannot get encoded value for \"{}\" attribute", attr1_referent)))?; + + let expected_encoded = encode(&raw)?; + + if expected_encoded != encoded_.to_string() { + return Err(VcxError::from_msg(VcxErrorKind::InvalidProof, format!("Encoded values are different. Expected: {}. From Proof: {}", expected_encoded, encoded_))); + } + } + + Ok(()) +} + +pub fn build_cred_defs_json_verifier(credential_data: &Vec) -> VcxResult { + debug!("building credential_def_json for proof validation"); + let mut credential_json = json!({}); + + for ref cred_info in credential_data.iter() { + if credential_json.get(&cred_info.cred_def_id).is_none() { + let (id, credential_def) = anoncreds::get_cred_def_json(&cred_info.cred_def_id)?; + + let credential_def = serde_json::from_str(&credential_def) + .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidProofCredentialData, format!("Cannot deserialize credential definition: {}", err)))?; + + credential_json[id] = credential_def; + } + } + + Ok(credential_json.to_string()) +} + +pub fn build_schemas_json_verifier(credential_data: &Vec) -> VcxResult { + debug!("building schemas json for proof validation"); + + let mut schemas_json = json!({}); + + for ref cred_info in credential_data.iter() { + if schemas_json.get(&cred_info.schema_id).is_none() { + let (id, schema_json) = anoncreds::get_schema_json(&cred_info.schema_id) + .map_err(|err| err.map(VcxErrorKind::InvalidSchema, "Cannot get schema"))?; + + let schema_val = serde_json::from_str(&schema_json) + .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidSchema, format!("Cannot deserialize schema: {}", err)))?; + + schemas_json[id] = schema_val; + } + } + + Ok(schemas_json.to_string()) +} + +pub fn build_rev_reg_defs_json(credential_data: &Vec) -> VcxResult { + debug!("building rev_reg_def_json for proof validation"); + + let mut rev_reg_defs_json = json!({}); + + for ref cred_info in credential_data.iter() { + let rev_reg_id = cred_info + .rev_reg_id + .as_ref() + .ok_or(VcxError::from(VcxErrorKind::InvalidRevocationDetails))?; + + if rev_reg_defs_json.get(rev_reg_id).is_none() { + let (id, json) = anoncreds::get_rev_reg_def_json(rev_reg_id) + .or(Err(VcxError::from(VcxErrorKind::InvalidRevocationDetails)))?; + + let rev_reg_def_json = serde_json::from_str(&json) + .or(Err(VcxError::from(VcxErrorKind::InvalidSchema)))?; + + rev_reg_defs_json[id] = rev_reg_def_json; + } + } + + Ok(rev_reg_defs_json.to_string()) +} + +pub fn build_rev_reg_json(credential_data: &Vec) -> VcxResult { + debug!("building rev_reg_json for proof validation"); + + let mut rev_regs_json = json!({}); + + for ref cred_info in credential_data.iter() { + let rev_reg_id = cred_info + .rev_reg_id + .as_ref() + .ok_or(VcxError::from(VcxErrorKind::InvalidRevocationDetails))?; + + let timestamp = cred_info + .timestamp + .as_ref() + .ok_or(VcxError::from(VcxErrorKind::InvalidRevocationTimestamp))?; + + if rev_regs_json.get(rev_reg_id).is_none() { + let (id, json, timestamp) = anoncreds::get_rev_reg(rev_reg_id, timestamp.to_owned()) + .or(Err(VcxError::from(VcxErrorKind::InvalidRevocationDetails)))?; + + let rev_reg_json: Value = serde_json::from_str(&json) + .or(Err(VcxError::from(VcxErrorKind::InvalidJson)))?; + + let rev_reg_json = json!({timestamp.to_string(): rev_reg_json}); + rev_regs_json[id] = rev_reg_json; + } + } + + Ok(rev_regs_json.to_string()) +} + +#[cfg(test)] +pub mod tests { + use api::VcxStateType; + use aries::handlers::proof_presentation::verifier::verifier::Verifier; + use aries::messages::proof_presentation::presentation_request::PresentationRequestData; + use connection::tests::build_test_connection_inviter_requested; + use utils::constants::*; + use utils::devsetup::*; + use utils::httpclient::HttpClientMockResponse; + use utils::mockdata::mockdata_proof; + + use super::*; + + #[test] + #[cfg(feature = "general_test")] + fn test_build_cred_defs_json_verifier_with_multiple_credentials() { + let _setup = SetupMocks::init(); + + let cred1 = CredInfoVerifier { + schema_id: "schema_key1".to_string(), + cred_def_id: "cred_def_key1".to_string(), + rev_reg_id: None, + timestamp: None, + }; + let cred2 = CredInfoVerifier { + schema_id: "schema_key2".to_string(), + cred_def_id: "cred_def_key2".to_string(), + rev_reg_id: None, + timestamp: None, + }; + let credentials = vec![cred1, cred2]; + let credential_json = build_cred_defs_json_verifier(&credentials).unwrap(); + + let json: Value = serde_json::from_str(CRED_DEF_JSON).unwrap(); + let expected = json!({CRED_DEF_ID:json}).to_string(); + assert_eq!(credential_json, expected); + } + + #[test] + #[cfg(feature = "general_test")] + fn test_build_schemas_json_verifier_with_multiple_schemas() { + let _setup = SetupMocks::init(); + + let cred1 = CredInfoVerifier { + schema_id: "schema_key1".to_string(), + cred_def_id: "cred_def_key1".to_string(), + rev_reg_id: None, + timestamp: None, + }; + let cred2 = CredInfoVerifier { + schema_id: "schema_key2".to_string(), + cred_def_id: "cred_def_key2".to_string(), + rev_reg_id: None, + timestamp: None, + }; + let credentials = vec![cred1, cred2]; + let schema_json = build_schemas_json_verifier(&credentials).unwrap(); + + let json: Value = serde_json::from_str(SCHEMA_JSON).unwrap(); + let expected = json!({SCHEMA_ID:json}).to_string(); + assert_eq!(schema_json, expected); + } + + #[test] + #[cfg(feature = "general_test")] + fn test_build_rev_reg_defs_json() { + let _setup = SetupMocks::init(); + + let cred1 = CredInfoVerifier { + schema_id: "schema_key1".to_string(), + cred_def_id: "cred_def_key1".to_string(), + rev_reg_id: Some("id1".to_string()), + timestamp: None, + }; + let cred2 = CredInfoVerifier { + schema_id: "schema_key2".to_string(), + cred_def_id: "cred_def_key2".to_string(), + rev_reg_id: Some("id2".to_string()), + timestamp: None, + }; + let credentials = vec![cred1, cred2]; + let rev_reg_defs_json = build_rev_reg_defs_json(&credentials).unwrap(); + + let json: Value = serde_json::from_str(&rev_def_json()).unwrap(); + let expected = json!({REV_REG_ID:json}).to_string(); + assert_eq!(rev_reg_defs_json, expected); + } + + #[test] + #[cfg(feature = "general_test")] + fn test_build_rev_reg_json() { + let _setup = SetupMocks::init(); + + let cred1 = CredInfoVerifier { + schema_id: "schema_key1".to_string(), + cred_def_id: "cred_def_key1".to_string(), + rev_reg_id: Some("id1".to_string()), + timestamp: Some(1), + }; + let cred2 = CredInfoVerifier { + schema_id: "schema_key2".to_string(), + cred_def_id: "cred_def_key2".to_string(), + rev_reg_id: Some("id2".to_string()), + timestamp: Some(2), + }; + let credentials = vec![cred1, cred2]; + let rev_reg_json = build_rev_reg_json(&credentials).unwrap(); + + let json: Value = serde_json::from_str(REV_REG_JSON).unwrap(); + let expected = json!({REV_REG_ID:{"1":json}}).to_string(); + assert_eq!(rev_reg_json, expected); + } +} diff --git a/libvcx/src/proof.rs b/libvcx/src/proof.rs index 3745cfd5e8..7daeb6df78 100644 --- a/libvcx/src/proof.rs +++ b/libvcx/src/proof.rs @@ -123,7 +123,6 @@ pub mod tests { use aries::messages::proof_presentation::presentation::Presentation; use aries::messages::proof_presentation::presentation_request::PresentationRequestData; use connection::tests::build_test_connection_inviter_requested; - use proof_utils::validate_indy_proof; use settings; use utils::constants::*; use utils::devsetup::*; From 8883d804437e23f996f31f456f84e8d95a53c689 Mon Sep 17 00:00:00 2001 From: Patrik Stas Date: Sun, 1 Nov 2020 14:32:15 +0100 Subject: [PATCH 4/7] Move module 'utils::indy' to 'indy::utils' Signed-off-by: Patrik Stas --- libvcx/src/agency_comm/agent_utils.rs | 16 +++--- libvcx/src/agency_comm/create_key.rs | 6 +-- libvcx/src/agency_comm/get_message.rs | 11 ++-- libvcx/src/agency_comm/mod.rs | 4 +- libvcx/src/agency_comm/payload.rs | 4 +- libvcx/src/agency_comm/update_connection.rs | 2 +- libvcx/src/agency_comm/update_message.rs | 8 +-- libvcx/src/agency_comm/update_profile.rs | 6 +-- libvcx/src/api/connection.rs | 4 +- libvcx/src/api/return_types_u32.rs | 8 +-- libvcx/src/api/schema.rs | 2 +- libvcx/src/api/utils.rs | 8 +-- libvcx/src/api/vcx.rs | 33 +++++------- libvcx/src/api/wallet.rs | 14 ++--- .../aries/handlers/connection/agent_info.rs | 20 +++---- .../handlers/issuance/holder/state_machine.rs | 2 +- .../handlers/issuance/issuer/state_machine.rs | 2 +- .../aries/handlers/issuance/issuer/utils.rs | 18 ++----- .../proof_presentation/prover/prover.rs | 12 ++--- .../src/aries/messages/connection/response.rs | 6 +-- libvcx/src/aries/mod.rs | 8 +-- libvcx/src/aries/utils/encryption_envelope.rs | 10 ++-- libvcx/src/credential_def.rs | 24 ++++----- libvcx/src/init.rs | 11 ++-- libvcx/src/issuer_credential.rs | 14 ++--- libvcx/src/lib.rs | 14 ++--- libvcx/src/libindy/mod.rs | 3 +- libvcx/src/libindy/proofs/proof_request.rs | 2 +- libvcx/src/libindy/proofs/prover/prover.rs | 6 +-- .../libindy/proofs/prover/prover_internal.rs | 14 ++--- .../src/libindy/proofs/verifier/verifier.rs | 12 ++--- .../proofs/verifier/verifier_internal.rs | 2 +- .../libindy => libindy/utils}/anoncreds.rs | 44 ++++++++-------- .../{utils/libindy => libindy/utils}/cache.rs | 2 +- .../libindy => libindy/utils}/callback.rs | 0 .../libindy => libindy/utils}/callback_u32.rs | 2 +- .../libindy => libindy/utils}/crypto.rs | 16 +++--- .../libindy => libindy/utils}/error_codes.rs | 0 .../libindy => libindy/utils}/ledger.rs | 8 +-- .../libindy => libindy/utils}/logger.rs | 0 .../{utils/libindy => libindy/utils}/mod.rs | 2 +- .../libindy => libindy/utils}/payments.rs | 52 +++++++++---------- .../{utils/libindy => libindy/utils}/pool.rs | 0 .../libindy => libindy/utils}/signus.rs | 2 +- .../libindy => libindy/utils}/wallet.rs | 2 +- libvcx/src/schema.rs | 22 ++++---- libvcx/src/settings.rs | 4 +- libvcx/src/utils/devsetup.rs | 28 +++++----- libvcx/src/utils/logger.rs | 6 +-- libvcx/src/utils/mod.rs | 1 - 50 files changed, 240 insertions(+), 257 deletions(-) rename libvcx/src/{utils/libindy => libindy/utils}/anoncreds.rs (96%) rename libvcx/src/{utils/libindy => libindy/utils}/cache.rs (99%) rename libvcx/src/{utils/libindy => libindy/utils}/callback.rs (100%) rename libvcx/src/{utils/libindy => libindy/utils}/callback_u32.rs (98%) rename libvcx/src/{utils/libindy => libindy/utils}/crypto.rs (83%) rename libvcx/src/{utils/libindy => libindy/utils}/error_codes.rs (100%) rename libvcx/src/{utils/libindy => libindy/utils}/ledger.rs (98%) rename libvcx/src/{utils/libindy => libindy/utils}/logger.rs (100%) rename libvcx/src/{utils/libindy => libindy/utils}/mod.rs (100%) rename libvcx/src/{utils/libindy => libindy/utils}/payments.rs (95%) rename libvcx/src/{utils/libindy => libindy/utils}/pool.rs (100%) rename libvcx/src/{utils/libindy => libindy/utils}/signus.rs (94%) rename libvcx/src/{utils/libindy => libindy/utils}/wallet.rs (99%) diff --git a/libvcx/src/agency_comm/agent_utils.rs b/libvcx/src/agency_comm/agent_utils.rs index d444bfe1a6..4ad2a0840e 100644 --- a/libvcx/src/agency_comm/agent_utils.rs +++ b/libvcx/src/agency_comm/agent_utils.rs @@ -1,17 +1,17 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; -use error::prelude::*; use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; use agency_comm::message_type::MessageTypes; +use error::prelude::*; +use libindy::utils::{anoncreds, wallet}; +use libindy::utils::signus::create_and_store_my_did; +use libindy::utils::wallet::get_wallet_handle; use settings; +use settings::agency_mocks_enabled; use utils::{constants, error, httpclient}; -use utils::httpclient::{AgencyMockDecrypted}; -use utils::libindy::{anoncreds, wallet}; -use utils::libindy::signus::create_and_store_my_did; +use utils::httpclient::AgencyMockDecrypted; use utils::option_util::get_or_default; -use utils::libindy::wallet::get_wallet_handle; -use settings::agency_mocks_enabled; #[derive(Serialize, Deserialize, Debug)] pub struct Connect { @@ -420,9 +420,9 @@ pub fn send_message_to_agency(message: &A2AMessage, did: &str) -> VcxResult, - uids_by_conns: Vec + uids_by_conns: Vec, } impl UpdateMessageStatusByConnectionsBuilder { @@ -132,11 +132,11 @@ mod tests { #[cfg(any(feature = "agency_pool_tests"))] use std::time::Duration; - use connection::send_generic_message; use agency_comm::get_message::download_messages_noauth; use agency_comm::MessageStatusCode; use agency_comm::update_message::{UIDsByConn, update_agency_messages, UpdateMessageStatusByConnectionsBuilder}; - use utils::devsetup::{SetupMocks, SetupLibraryAgencyV2}; + use connection::send_generic_message; + use utils::devsetup::{SetupLibraryAgencyV2, SetupMocks}; use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_agency::AGENCY_MSG_STATUS_UPDATED_BY_CONNS; diff --git a/libvcx/src/agency_comm/update_profile.rs b/libvcx/src/agency_comm/update_profile.rs index badca0ee39..955c6b055d 100644 --- a/libvcx/src/agency_comm/update_profile.rs +++ b/libvcx/src/agency_comm/update_profile.rs @@ -10,7 +10,7 @@ use utils::httpclient::AgencyMock; pub struct UpdateProfileDataBuilder { to_did: String, agent_payload: String, - configs: Vec + configs: Vec, } #[derive(Clone, Deserialize, Serialize, Debug, PartialEq)] @@ -39,7 +39,7 @@ impl UpdateProfileDataBuilder { UpdateProfileDataBuilder { to_did: String::new(), configs: Vec::new(), - agent_payload: String::new() + agent_payload: String::new(), } } @@ -119,10 +119,10 @@ impl UpdateProfileDataBuilder { #[cfg(test)] mod tests { use agency_comm::update_data; + use libindy::utils::signus::create_and_store_my_did; use utils::constants::{MY1_SEED, MY2_SEED, MY3_SEED}; use utils::devsetup::*; use utils::httpclient::AgencyMockDecrypted; - use utils::libindy::signus::create_and_store_my_did; use utils::mockdata::mockdata_agency::AGENCY_CONFIGS_UPDATED; use super::*; diff --git a/libvcx/src/api/connection.rs b/libvcx/src/api/connection.rs index d7fc3f3522..ef5aa71aae 100644 --- a/libvcx/src/api/connection.rs +++ b/libvcx/src/api/connection.rs @@ -842,7 +842,7 @@ pub extern fn vcx_connection_sign_data(command_handle: CommandHandle, }; spawn(move || { - match ::utils::libindy::crypto::sign(&vk, &data_raw) { + match ::libindy::utils::crypto::sign(&vk, &data_raw) { Ok(x) => { trace!("vcx_connection_sign_data_cb(command_handle: {}, connection_handle: {}, rc: {}, signature: {:?})", command_handle, connection_handle, error::SUCCESS.message, x); @@ -922,7 +922,7 @@ pub extern fn vcx_connection_verify_signature(command_handle: CommandHandle, }; spawn(move || { - match ::utils::libindy::crypto::verify(&vk, &data_raw, &signature_raw) { + match ::libindy::utils::crypto::verify(&vk, &data_raw, &signature_raw) { Ok(x) => { trace!("vcx_connection_verify_signature_cb(command_handle: {}, rc: {}, valid: {})", command_handle, error::SUCCESS.message, x); diff --git a/libvcx/src/api/return_types_u32.rs b/libvcx/src/api/return_types_u32.rs index dc7e8a39f9..a6d5d28c53 100644 --- a/libvcx/src/api/return_types_u32.rs +++ b/libvcx/src/api/return_types_u32.rs @@ -11,10 +11,10 @@ use indy_sys::CommandHandle; use libc::c_char; use utils::error; -use utils::libindy::callback::POISON_MSG; -use utils::libindy::callback_u32 as callback; -use utils::libindy::error_codes::map_indy_error; -use utils::libindy::next_command_handle; +use libindy::utils::callback::POISON_MSG; +use libindy::utils::callback_u32 as callback; +use libindy::utils::error_codes::map_indy_error; +use libindy::utils::next_command_handle; use utils::timeout::TimeoutUtils; fn log_error(e: T) { diff --git a/libvcx/src/api/schema.rs b/libvcx/src/api/schema.rs index 74b1e41225..87ed8d43b2 100644 --- a/libvcx/src/api/schema.rs +++ b/libvcx/src/api/schema.rs @@ -599,7 +599,7 @@ mod tests { fn test_vcx_schema_get_attrs_with_pool() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - let (schema_id, _) = ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let (schema_id, _) = ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); let cb = return_types_u32::Return_U32_U32_STR::new().unwrap(); assert_eq!(vcx_schema_get_attributes(cb.command_handle, diff --git a/libvcx/src/api/utils.rs b/libvcx/src/api/utils.rs index cc6449ee59..20ca271181 100644 --- a/libvcx/src/api/utils.rs +++ b/libvcx/src/api/utils.rs @@ -13,7 +13,7 @@ use utils::constants::*; use utils::cstring::CStringUtils; use utils::error; use utils::httpclient::AgencyMock; -use utils::libindy::payments; +use libindy::utils::payments; use utils::threadpool::spawn; #[derive(Deserialize, Debug, Clone)] @@ -163,7 +163,7 @@ pub extern fn vcx_ledger_get_fees(command_handle: CommandHandle, command_handle); spawn(move || { - match ::utils::libindy::payments::get_ledger_fees() { + match ::libindy::utils::payments::get_ledger_fees() { Ok(x) => { trace!("vcx_ledger_get_fees_cb(command_handle: {}, rc: {}, fees: {})", command_handle, error::SUCCESS.message, x); @@ -515,7 +515,7 @@ pub extern fn vcx_messages_update_status(command_handle: CommandHandle, /// Error code as u32 #[no_mangle] pub extern fn vcx_pool_set_handle(handle: i32) -> i32 { - if handle <= 0 { ::utils::libindy::pool::set_pool_handle(None); } else { ::utils::libindy::pool::set_pool_handle(Some(handle)); } + if handle <= 0 { ::libindy::utils::pool::set_pool_handle(None); } else { ::libindy::utils::pool::set_pool_handle(Some(handle)); } handle } @@ -594,7 +594,7 @@ pub extern fn vcx_endorse_transaction(command_handle: CommandHandle, command_handle, transaction); spawn(move || { - match ::utils::libindy::ledger::endorse_transaction(&transaction) { + match ::libindy::utils::ledger::endorse_transaction(&transaction) { Ok(()) => { trace!("vcx_endorse_transaction(command_handle: {}, rc: {})", command_handle, error::SUCCESS.message); diff --git a/libvcx/src/api/vcx.rs b/libvcx/src/api/vcx.rs index 7ecf93c29a..b98f648492 100644 --- a/libvcx/src/api/vcx.rs +++ b/libvcx/src/api/vcx.rs @@ -9,9 +9,9 @@ use init::{init_core, open_as_main_wallet, open_pool}; use settings; use utils::cstring::CStringUtils; use utils::error; -use utils::libindy::{ledger, pool, wallet}; -use utils::libindy::pool::is_pool_open; -use utils::libindy::wallet::{close_main_wallet, get_wallet_handle, set_wallet_handle}; +use libindy::utils::{ledger, pool, wallet}; +use libindy::utils::pool::is_pool_open; +use libindy::utils::wallet::{close_main_wallet, get_wallet_handle, set_wallet_handle}; use utils::threadpool::spawn; use utils::version_constants; @@ -633,7 +633,7 @@ pub extern fn vcx_mint_tokens(seed: *const c_char, fees: *const c_char) { }; trace!("vcx_mint_tokens(seed: {:?}, fees: {:?})", seed, fees); - ::utils::libindy::payments::mint_tokens_and_set_fees(None, None, fees, seed).unwrap_or_default(); + ::libindy::utils::payments::mint_tokens_and_set_fees(None, None, fees, seed).unwrap_or_default(); } /// Get details for last occurred error. @@ -676,26 +676,21 @@ mod tests { use api::VcxStateType; use api::wallet::{vcx_wallet_add_record, vcx_wallet_get_record}; use api::wallet::tests::_test_add_and_get_wallet_record; - use utils::{ - libindy::{ - wallet::{import, tests::create_main_wallet_and_its_backup}, - pool::get_pool_handle, - } - }; use utils::devsetup::*; #[cfg(any(feature = "agency", feature = "pool_tests"))] use utils::get_temp_dir_path; - use utils::libindy::pool::reset_pool_handle; - use utils::libindy::pool::tests::create_tmp_genesis_txn_file; + use libindy::utils::pool::{reset_pool_handle, get_pool_handle}; + use libindy::utils::pool::tests::create_tmp_genesis_txn_file; #[cfg(feature = "pool_tests")] - use utils::libindy::pool::tests::delete_test_pool; - use utils::libindy::wallet::delete_wallet; + use libindy::utils::pool::tests::delete_test_pool; + use libindy::utils::wallet::{delete_wallet, import}; #[cfg(feature = "pool_tests")] - use utils::libindy::wallet::get_wallet_handle; + use libindy::utils::wallet::get_wallet_handle; use utils::mockdata::mockdata_connection; use utils::timeout::TimeoutUtils; use super::*; + use libindy::utils::wallet::tests::create_main_wallet_and_its_backup; #[cfg(any(feature = "agency", feature = "pool_tests"))] fn config() -> String { @@ -1225,8 +1220,8 @@ mod tests { settings::clear_config(); // Store settings and handles - let wallet_handle = ::utils::libindy::wallet::get_wallet_handle(); - let pool_handle = ::utils::libindy::pool::get_pool_handle().unwrap(); + let wallet_handle = ::libindy::utils::wallet::get_wallet_handle(); + let pool_handle = ::libindy::utils::pool::get_pool_handle().unwrap(); assert_ne!(wallet_handle, INVALID_WALLET_HANDLE); assert_ne!(pool_handle, INVALID_POOL_HANDLE); @@ -1245,7 +1240,7 @@ mod tests { assert_eq!(error::SUCCESS.code_num, _vcx_init_minimal_c_closure(&config)); // test that wallet and pool are operational - ::utils::libindy::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); + ::libindy::utils::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); settings::set_testing_defaults(); } @@ -1363,7 +1358,7 @@ mod tests { info!("test_init_composed :: creating schema+creddef to verify wallet and pool connectivity"); let attrs_list = json!(["address1", "address2", "city", "state", "zip"]).to_string(); let (schema_id, _schema_json, cred_def_id, _cred_def_json, cred_def_handle, rev_reg_id) = - ::utils::libindy::anoncreds::tests::create_and_store_credential_def(&attrs_list, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential_def(&attrs_list, true); assert!(schema_id.len() > 0); info!("test_init_composed :: going to cleanup"); diff --git a/libvcx/src/api/wallet.rs b/libvcx/src/api/wallet.rs index eedaa2e659..c5230e010d 100644 --- a/libvcx/src/api/wallet.rs +++ b/libvcx/src/api/wallet.rs @@ -7,9 +7,9 @@ use libc::c_char; use error::prelude::*; use utils::cstring::CStringUtils; use utils::error; -use utils::libindy::payments::{create_address, get_wallet_token_info, pay_a_payee, sign_with_address, verify_with_address}; -use utils::libindy::wallet::{export_main_wallet, get_wallet_handle, import}; -use utils::libindy::wallet; +use libindy::utils::payments::{create_address, get_wallet_token_info, pay_a_payee, sign_with_address, verify_with_address}; +use libindy::utils::wallet::{export_main_wallet, get_wallet_handle, import}; +use libindy::utils::wallet; use utils::threadpool::spawn; /// Get the total balance from all addresses contained in the configured wallet @@ -992,8 +992,8 @@ pub mod tests { use settings; use utils::devsetup::*; #[cfg(feature = "pool_tests")] - use utils::libindy::payments::build_test_address; - use utils::libindy::wallet::{delete_wallet, create_and_open_as_main_wallet, close_main_wallet}; + use libindy::utils::payments::build_test_address; + use libindy::utils::wallet::{delete_wallet, create_and_open_as_main_wallet, close_main_wallet}; use utils::timeout::TimeoutUtils; use super::*; @@ -1130,7 +1130,7 @@ pub mod tests { let recipient = CStringUtils::string_to_cstring(build_test_address("2ZrAm5Jc3sP4NAXMQbaWzDxEa12xxJW3VgWjbbPtMPQCoznJyS")); debug!("sending payment to {:?}", recipient); - let balance = ::utils::libindy::payments::get_wallet_token_info().unwrap().get_balance(); + let balance = ::libindy::utils::payments::get_wallet_token_info().unwrap().get_balance(); let tokens = 5; let cb = return_types_u32::Return_U32_STR::new().unwrap(); assert_eq!(vcx_wallet_send_tokens(cb.command_handle, @@ -1140,7 +1140,7 @@ pub mod tests { Some(cb.get_callback())), error::SUCCESS.code_num); cb.receive(TimeoutUtils::some_medium()).unwrap(); - let new_balance = ::utils::libindy::payments::get_wallet_token_info().unwrap().get_balance(); + let new_balance = ::libindy::utils::payments::get_wallet_token_info().unwrap().get_balance(); assert_eq!(balance - tokens, new_balance); } diff --git a/libvcx/src/aries/handlers/connection/agent_info.rs b/libvcx/src/aries/handlers/connection/agent_info.rs index 8b567f7535..0a1e87043d 100644 --- a/libvcx/src/aries/handlers/connection/agent_info.rs +++ b/libvcx/src/aries/handlers/connection/agent_info.rs @@ -1,18 +1,18 @@ use std::collections::HashMap; +use agency_comm::get_message::{get_connection_messages, Message}; +use agency_comm::MessageStatusCode; +use agency_comm::update_connection::send_delete_connection_message; +use agency_comm::update_message::{UIDsByConn, update_messages as update_messages_status}; use aries::messages::a2a::A2AMessage; use aries::messages::connection::did_doc::DidDoc; use aries::utils::encryption_envelope::EncryptionEnvelope; use connection::create_agent_keys; use error::prelude::*; -use agency_comm::get_message::{get_connection_messages, Message}; -use agency_comm::MessageStatusCode; -use agency_comm::update_connection::send_delete_connection_message; -use agency_comm::update_message::{UIDsByConn, update_messages as update_messages_status}; +use libindy::utils::signus::create_and_store_my_did; use settings; use settings::ProtocolTypes; use utils::httpclient; -use utils::libindy::signus::create_and_store_my_did; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AgentInfo { @@ -35,12 +35,12 @@ impl Default for AgentInfo { fn _log_messages_optionally(a2a_messages: &HashMap) { #[cfg(feature = "warnlog_fetched_messages")] - { - for message in a2a_messages.values() { - let serialized_msg = serde_json::to_string_pretty(message).unwrap_or_else(|_err| String::from("Failed to serialize A2AMessage.")); - warn!("Fetched decrypted connection messages:\n{}", serialized_msg); + { + for message in a2a_messages.values() { + let serialized_msg = serde_json::to_string_pretty(message).unwrap_or_else(|_err| String::from("Failed to serialize A2AMessage.")); + warn!("Fetched decrypted connection messages:\n{}", serialized_msg); + } } - } } impl AgentInfo { diff --git a/libvcx/src/aries/handlers/issuance/holder/state_machine.rs b/libvcx/src/aries/handlers/issuance/holder/state_machine.rs index 61f71c69fb..a53c551bd9 100644 --- a/libvcx/src/aries/handlers/issuance/holder/state_machine.rs +++ b/libvcx/src/aries/handlers/issuance/holder/state_machine.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use api::VcxStateType; use connection; use error::prelude::*; -use utils::libindy::anoncreds::{self, libindy_prover_delete_credential, libindy_prover_store_credential, libindy_prover_create_credential_req, get_cred_def_json}; +use libindy::utils::anoncreds::{self, libindy_prover_delete_credential, libindy_prover_store_credential, libindy_prover_create_credential_req, get_cred_def_json}; use aries::handlers::issuance::messages::CredentialIssuanceMessage; use aries::messages::a2a::A2AMessage; use aries::messages::error::ProblemReport; diff --git a/libvcx/src/aries/handlers/issuance/issuer/state_machine.rs b/libvcx/src/aries/handlers/issuance/issuer/state_machine.rs index 5b54a8beeb..d0bc82023a 100644 --- a/libvcx/src/aries/handlers/issuance/issuer/state_machine.rs +++ b/libvcx/src/aries/handlers/issuance/issuer/state_machine.rs @@ -4,7 +4,7 @@ use api::VcxStateType; use connection::{get_messages, send_message}; use connection; use error::{VcxError, VcxErrorKind, VcxResult}; -use utils::libindy::anoncreds::{self, libindy_issuer_create_credential_offer}; +use libindy::utils::anoncreds::{self, libindy_issuer_create_credential_offer}; use aries::handlers::issuance::messages::CredentialIssuanceMessage; use aries::messages::a2a::A2AMessage; use aries::messages::error::ProblemReport; diff --git a/libvcx/src/aries/handlers/issuance/issuer/utils.rs b/libvcx/src/aries/handlers/issuance/issuer/utils.rs index f498a2f3bb..28dd2f947b 100644 --- a/libvcx/src/aries/handlers/issuance/issuer/utils.rs +++ b/libvcx/src/aries/handlers/issuance/issuer/utils.rs @@ -58,21 +58,11 @@ pub fn encode_attributes(attributes: &str) -> VcxResult { #[cfg(test)] pub mod tests { use serde_json::Value; - use ::{settings}; - - #[allow(unused_imports)] - use utils::{constants::*, - get_temp_dir_path, - libindy::{anoncreds::{libindy_create_and_store_credential_def, - libindy_issuer_create_credential_offer, - libindy_prover_create_credential_req}, - LibindyMock, - wallet, wallet::get_wallet_handle}, - }; + + use settings; + use libindy::utils::anoncreds::libindy_create_and_store_credential_def; + use utils::constants::SCHEMAS_JSON; use utils::devsetup::*; - - - use super::*; diff --git a/libvcx/src/aries/handlers/proof_presentation/prover/prover.rs b/libvcx/src/aries/handlers/proof_presentation/prover/prover.rs index 1238d3cc44..39ba8409ec 100644 --- a/libvcx/src/aries/handlers/proof_presentation/prover/prover.rs +++ b/libvcx/src/aries/handlers/proof_presentation/prover/prover.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use ::{connection, settings}; use error::prelude::*; -use utils::libindy::anoncreds; +use libindy::utils::anoncreds; use aries::handlers::proof_presentation::prover::messages::ProverMessages; use aries::messages::a2a::A2AMessage; use aries::messages::proof_presentation::presentation::Presentation; @@ -175,8 +175,8 @@ mod tests { fn test_retrieve_credentials() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - ::utils::libindy::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); - let (_, _, req, _) = ::utils::libindy::anoncreds::tests::create_proof(); + ::libindy::utils::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); + let (_, _, req, _) = ::libindy::utils::anoncreds::tests::create_proof(); let pres_req_data: PresentationRequestData = serde_json::from_str(&req).unwrap(); let mut proof_req = PresentationRequest::create().set_request_presentations_attach(&pres_req_data).unwrap(); @@ -220,7 +220,7 @@ mod tests { fn test_case_for_proof_req_doesnt_matter_for_retrieve_creds() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - ::utils::libindy::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); + ::libindy::utils::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); let mut req = json!({ "nonce":"123432421212", @@ -278,7 +278,7 @@ mod tests { let _setup = SetupLibraryWalletPoolZeroFees::init(); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); - ::utils::libindy::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, true); let to = time::get_time().sec; let indy_proof_req = json!({ "nonce": "123432421212", @@ -365,7 +365,7 @@ mod tests { let _setup = SetupLibraryWalletPoolZeroFees::init(); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); - ::utils::libindy::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, true); let to = time::get_time().sec; let indy_proof_req = json!({ "nonce": "123432421212", diff --git a/libvcx/src/aries/messages/connection/response.rs b/libvcx/src/aries/messages/connection/response.rs index 6e42b248b4..a9a4505223 100644 --- a/libvcx/src/aries/messages/connection/response.rs +++ b/libvcx/src/aries/messages/connection/response.rs @@ -3,7 +3,7 @@ use time; use error::prelude::*; use agency_comm::thread::Thread; -use utils::libindy::crypto; +use libindy::utils::crypto; use aries::messages::a2a::{A2AMessage, MessageId}; use aries::messages::a2a::message_family::MessageFamilies; use aries::messages::a2a::message_type::MessageType; @@ -152,11 +152,11 @@ impl Default for ConnectionSignature { #[cfg(test)] pub mod tests { - use utils::libindy::tests::test_setup; + use libindy::utils::tests::test_setup; use aries::messages::connection::did_doc::tests::*; use super::*; - use utils::libindy::tests::test_setup::create_trustee_key; + use libindy::utils::tests::test_setup::create_trustee_key; fn _did() -> String { String::from("VsKV7grR1BUE29mG2Fm2kX") diff --git a/libvcx/src/aries/mod.rs b/libvcx/src/aries/mod.rs index 3bfed7f596..ed482f65b7 100644 --- a/libvcx/src/aries/mod.rs +++ b/libvcx/src/aries/mod.rs @@ -14,7 +14,7 @@ pub mod test { use agency_comm::agent_utils::connect_register_provision; use agency_comm::payload::{PayloadKinds}; use utils::devsetup::*; - use utils::libindy::wallet::*; + use libindy::utils::wallet::*; use utils::plugins::init_plugin; use aries::messages::a2a::A2AMessage; use error::{VcxResult, VcxErrorKind, VcxError}; @@ -36,15 +36,15 @@ pub mod test { impl Pool { pub fn open() -> Pool { - ::utils::libindy::pool::tests::open_test_pool(); + ::libindy::utils::pool::tests::open_test_pool(); Pool {} } } impl Drop for Pool { fn drop(&mut self) { - ::utils::libindy::pool::close().unwrap(); - ::utils::libindy::pool::tests::delete_test_pool(); + ::libindy::utils::pool::close().unwrap(); + ::libindy::utils::pool::tests::delete_test_pool(); } } diff --git a/libvcx/src/aries/utils/encryption_envelope.rs b/libvcx/src/aries/utils/encryption_envelope.rs index a8572be18e..992efe57ea 100644 --- a/libvcx/src/aries/utils/encryption_envelope.rs +++ b/libvcx/src/aries/utils/encryption_envelope.rs @@ -3,7 +3,7 @@ use aries::messages::connection::did_doc::DidDoc; use aries::messages::forward::Forward; use error::prelude::*; use utils::httpclient::AgencyMockDecrypted; -use utils::libindy::crypto; +use libindy::utils::crypto; #[derive(Debug)] pub struct EncryptionEnvelope(pub Vec); @@ -128,13 +128,13 @@ impl EncryptionEnvelope { pub mod tests { use aries::messages::ack::tests::_ack; use aries::messages::connection::did_doc::tests::*; - use utils::libindy::crypto::create_key; - use utils::libindy::tests::test_setup; + use libindy::utils::crypto::create_key; + use libindy::utils::tests::test_setup; use super::*; use utils::devsetup::SetupEmpty; - use utils::libindy::tests::test_setup::create_trustee_key; - use utils::libindy::wallet; + use libindy::utils::tests::test_setup::create_trustee_key; + use libindy::utils::wallet; fn _setup() { ::settings::set_config_value(::settings::CONFIG_ENABLE_TEST_MODE, "false"); diff --git a/libvcx/src/credential_def.rs b/libvcx/src/credential_def.rs index 5ab879a285..7e2c57e44a 100644 --- a/libvcx/src/credential_def.rs +++ b/libvcx/src/credential_def.rs @@ -1,13 +1,13 @@ use serde_json; +use agency_comm::ObjectWithVersion; use api::PublicEntityStateType; use error::prelude::*; -use agency_comm::ObjectWithVersion; +use libindy::utils::anoncreds; +use libindy::utils::cache::update_rev_reg_ids_cache; +use libindy::utils::ledger; +use libindy::utils::payments::PaymentTxn; use utils::constants::DEFAULT_SERIALIZE_VERSION; -use utils::libindy::anoncreds; -use utils::libindy::cache::update_rev_reg_ids_cache; -use utils::libindy::ledger; -use utils::libindy::payments::PaymentTxn; use utils::object_cache::ObjectCache; lazy_static! { @@ -533,14 +533,14 @@ pub mod tests { time::Duration, }; + #[cfg(feature = "pool_tests")] + use libindy::utils::payments::add_new_did; use settings; use utils::{ constants::SCHEMA_ID, get_temp_dir_path, }; use utils::devsetup::*; - #[cfg(feature = "pool_tests")] - use utils::libindy::payments::add_new_did; use super::*; @@ -618,9 +618,9 @@ pub mod tests { #[test] fn test_get_credential_def() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - let (_, _, cred_def_id, cred_def_json, _, _) = ::utils::libindy::anoncreds::tests::create_and_store_credential_def(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); + let (_, _, cred_def_id, cred_def_json, _, _) = ::libindy::utils::anoncreds::tests::create_and_store_credential_def(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); - let (id, r_cred_def_json) = ::utils::libindy::anoncreds::get_cred_def_json(&cred_def_id).unwrap(); + let (id, r_cred_def_json) = ::libindy::utils::anoncreds::get_cred_def_json(&cred_def_id).unwrap(); assert_eq!(id, cred_def_id); let def1: serde_json::Value = serde_json::from_str(&cred_def_json).unwrap(); @@ -633,7 +633,7 @@ pub mod tests { fn test_create_revocable_fails_with_no_tails_file() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - let (schema_id, _) = ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let (schema_id, _) = ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); let rc = create_and_publish_credentialdef("1".to_string(), @@ -672,7 +672,7 @@ pub mod tests { fn test_create_revocable_cred_def_with_payments() { let _setup = SetupLibraryWalletPool::init(); - let (schema_id, _) = ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let (schema_id, _) = ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); let revocation_details = json!({"support_revocation": true, "tails_file": get_temp_dir_path("tails.txt").to_str().unwrap(), "max_creds": 2}).to_string(); @@ -688,7 +688,7 @@ pub mod tests { assert!(get_rev_reg_def_payment_txn(handle).unwrap().is_some()); assert!(get_rev_reg_delta_payment_txn(handle).unwrap().is_some()); let cred_id = get_cred_def_id(handle).unwrap(); - ::utils::libindy::anoncreds::get_cred_def_json(&cred_id).unwrap(); + ::libindy::utils::anoncreds::get_cred_def_json(&cred_id).unwrap(); } #[cfg(feature = "pool_tests")] diff --git a/libvcx/src/init.rs b/libvcx/src/init.rs index 4bc1aa7fa4..80297cea77 100644 --- a/libvcx/src/init.rs +++ b/libvcx/src/init.rs @@ -1,11 +1,12 @@ use futures::Future; -use settings; use indy; -use indy::{ErrorCode}; -use utils::libindy::pool::{create_pool_ledger_config, open_pool_ledger}; -use utils::libindy::wallet::{set_wallet_handle, build_wallet_credentials, build_wallet_config}; +use indy::ErrorCode; use indy_sys::WalletHandle; -use error::{VcxErrorKind, VcxResult, VcxErrorExt}; + +use error::{VcxErrorExt, VcxErrorKind, VcxResult}; +use libindy::utils::pool::{create_pool_ledger_config, open_pool_ledger}; +use libindy::utils::wallet::{build_wallet_config, build_wallet_credentials, set_wallet_handle}; +use settings; pub fn init_core(config: &str) -> VcxResult<()> { info!("init_core >>> config = {}", config); diff --git a/libvcx/src/issuer_credential.rs b/libvcx/src/issuer_credential.rs index b2a864eb0e..a423401d4d 100644 --- a/libvcx/src/issuer_credential.rs +++ b/libvcx/src/issuer_credential.rs @@ -2,10 +2,10 @@ use serde_json; use aries::handlers::issuance::issuer::issuer::Issuer; use aries::messages::a2a::A2AMessage; +use connection; use error::prelude::*; use utils::error; use utils::object_cache::ObjectCache; -use connection; lazy_static! { static ref ISSUER_CREDENTIAL_MAP: ObjectCache = ObjectCache::::new("issuer-credentials-cache"); @@ -174,21 +174,17 @@ pub mod tests { use api::VcxStateType; use connection::tests::build_test_connection_inviter_requested; use credential_def::tests::create_cred_def_fake; + use libindy::utils::anoncreds::libindy_create_and_store_credential_def; + use libindy::utils::LibindyMock; #[allow(unused_imports)] - use utils::{constants::*, - get_temp_dir_path, - libindy::{anoncreds::{libindy_create_and_store_credential_def, - libindy_issuer_create_credential_offer, - libindy_prover_create_credential_req}, - LibindyMock, - wallet, wallet::get_wallet_handle}, - }; + use utils::devsetup::*; use utils::httpclient::HttpClientMockResponse; use utils::mockdata::mockdata_connection::ARIES_CONNECTION_ACK; use utils::mockdata::mockdata_credex::ARIES_CREDENTIAL_REQUEST; use super::*; + use utils::constants::{SCHEMAS_JSON, V3_OBJECT_SERIALIZE_VERSION}; static DEFAULT_CREDENTIAL_NAME: &str = "Credential"; static DEFAULT_CREDENTIAL_ID: &str = "defaultCredentialId"; diff --git a/libvcx/src/lib.rs b/libvcx/src/lib.rs index 79a738839f..fe7142cbe8 100644 --- a/libvcx/src/lib.rs +++ b/libvcx/src/lib.rs @@ -268,19 +268,19 @@ mod tests { fn revoke_credential(issuer_handle: u32, rev_reg_id: Option) { set_institution(None); // GET REV REG DELTA BEFORE REVOCATION - let (_, delta, timestamp) = ::utils::libindy::anoncreds::get_rev_reg_delta_json(&rev_reg_id.clone().unwrap(), None, None).unwrap(); + let (_, delta, timestamp) = ::libindy::utils::anoncreds::get_rev_reg_delta_json(&rev_reg_id.clone().unwrap(), None, None).unwrap(); info!("revoking credential"); ::issuer_credential::revoke_credential(issuer_handle).unwrap(); - let (_, delta_after_revoke, _) = ::utils::libindy::anoncreds::get_rev_reg_delta_json(&rev_reg_id.unwrap(), Some(timestamp + 1), None).unwrap(); + let (_, delta_after_revoke, _) = ::libindy::utils::anoncreds::get_rev_reg_delta_json(&rev_reg_id.unwrap(), Some(timestamp + 1), None).unwrap(); assert_ne!(delta, delta_after_revoke); } fn revoke_credential_local(issuer_handle: u32, rev_reg_id: Option) { set_institution(None); - let (_, delta, timestamp) = ::utils::libindy::anoncreds::get_rev_reg_delta_json(&rev_reg_id.clone().unwrap(), None, None).unwrap(); + let (_, delta, timestamp) = ::libindy::utils::anoncreds::get_rev_reg_delta_json(&rev_reg_id.clone().unwrap(), None, None).unwrap(); info!("revoking credential locally"); ::issuer_credential::revoke_credential_local(issuer_handle).unwrap(); - let (_, delta_after_revoke, _) = ::utils::libindy::anoncreds::get_rev_reg_delta_json(&rev_reg_id.unwrap(), Some(timestamp + 1), None).unwrap(); + let (_, delta_after_revoke, _) = ::libindy::utils::anoncreds::get_rev_reg_delta_json(&rev_reg_id.unwrap(), Some(timestamp + 1), None).unwrap(); assert_ne!(delta, delta_after_revoke); // They will not equal as we have saved the delta in cache } @@ -291,13 +291,13 @@ mod tests { fn publish_revocation(rev_reg_id: String) { set_institution(None); - ::utils::libindy::anoncreds::publish_local_revocations(rev_reg_id.as_str()).unwrap(); + ::libindy::utils::anoncreds::publish_local_revocations(rev_reg_id.as_str()).unwrap(); } fn _create_address_schema() -> (String, String, String, String, u32, Option) { info!("test_real_proof_with_revocation >>> CREATE SCHEMA AND CRED DEF"); let attrs_list = json!(["address1", "address2", "city", "state", "zip"]).to_string(); - ::utils::libindy::anoncreds::tests::create_and_store_credential_def(&attrs_list, true) + ::libindy::utils::anoncreds::tests::create_and_store_credential_def(&attrs_list, true) } fn _exchange_credential(credential_data: String, cred_def_handle: u32, faber: u32, alice: u32, consumer_handle: Option, comment: Option<&str>) -> u32 { @@ -675,7 +675,7 @@ mod tests { attrs_list.as_array_mut().unwrap().push(json!(format!("key{}",i))); } let attrs_list = attrs_list.to_string(); - let (schema_id, _schema_json, cred_def_id, _cred_def_json, cred_def_handle, _) = ::utils::libindy::anoncreds::tests::create_and_store_credential_def(&attrs_list, false); + let (schema_id, _schema_json, cred_def_id, _cred_def_json, cred_def_handle, _) = ::libindy::utils::anoncreds::tests::create_and_store_credential_def(&attrs_list, false); let mut credential_data = json!({}); for i in 1..number_of_attributes { credential_data[format!("key{}", i)] = Value::String(format!("value{}", i)); diff --git a/libvcx/src/libindy/mod.rs b/libvcx/src/libindy/mod.rs index bf1cba86b5..ae9d131b8d 100644 --- a/libvcx/src/libindy/mod.rs +++ b/libvcx/src/libindy/mod.rs @@ -1 +1,2 @@ -pub mod proofs; \ No newline at end of file +pub mod proofs; +pub mod utils; \ No newline at end of file diff --git a/libvcx/src/libindy/proofs/proof_request.rs b/libvcx/src/libindy/proofs/proof_request.rs index ddd4a45ac7..7107448a8f 100644 --- a/libvcx/src/libindy/proofs/proof_request.rs +++ b/libvcx/src/libindy/proofs/proof_request.rs @@ -6,7 +6,7 @@ use serde_json; use aries::messages::connection::service::Service; use error::prelude::*; use libindy::proofs::proof_request_internal::{AttrInfo, NonRevokedInterval, PredicateInfo}; -use utils::libindy::anoncreds; +use libindy::utils::anoncreds; use utils::qualifier; use utils::validation; diff --git a/libvcx/src/libindy/proofs/prover/prover.rs b/libvcx/src/libindy/proofs/prover/prover.rs index 00c3554ae1..9da75dc35b 100644 --- a/libvcx/src/libindy/proofs/prover/prover.rs +++ b/libvcx/src/libindy/proofs/prover/prover.rs @@ -9,9 +9,9 @@ use libindy::proofs::prover::prover_internal::{ build_schemas_json_prover, credential_def_identifiers, }; use settings; -use utils::libindy::anoncreds; -use utils::libindy::anoncreds::{get_rev_reg_def_json, get_rev_reg_delta_json}; -use utils::libindy::cache::{get_rev_reg_cache, RevRegCache, RevState, set_rev_reg_cache}; +use libindy::utils::anoncreds; +use libindy::utils::anoncreds::{get_rev_reg_def_json, get_rev_reg_delta_json}; +use libindy::utils::cache::{get_rev_reg_cache, RevRegCache, RevState, set_rev_reg_cache}; use utils::mockdata::mock_settings::get_mock_generate_indy_proof; pub fn generate_indy_proof(credentials: &str, self_attested_attrs: &str, proof_req_data_json: &str) -> VcxResult { diff --git a/libvcx/src/libindy/proofs/prover/prover_internal.rs b/libvcx/src/libindy/proofs/prover/prover_internal.rs index 1778d2ce54..5c3182fe41 100644 --- a/libvcx/src/libindy/proofs/prover/prover_internal.rs +++ b/libvcx/src/libindy/proofs/prover/prover_internal.rs @@ -6,9 +6,9 @@ use error::prelude::*; use libindy::proofs::proof_request::ProofRequestData; use libindy::proofs::proof_request_internal::NonRevokedInterval; use settings; -use utils::libindy::anoncreds; -use utils::libindy::anoncreds::{get_rev_reg_def_json, get_rev_reg_delta_json}; -use utils::libindy::cache::{get_rev_reg_cache, RevRegCache, RevState, set_rev_reg_cache}; +use libindy::utils::anoncreds; +use libindy::utils::anoncreds::{get_rev_reg_def_json, get_rev_reg_delta_json}; +use libindy::utils::cache::{get_rev_reg_cache, RevRegCache, RevState, set_rev_reg_cache}; #[derive(Debug, Deserialize, Serialize, PartialEq)] pub struct CredInfoProver { @@ -697,7 +697,7 @@ pub mod tests { let attrs = r#"["address1","address2","city","state","zip"]"#; let (schema_id, _, cred_def_id, _, _, _, _, cred_id, rev_reg_id, cred_rev_id) = - ::utils::libindy::anoncreds::tests::create_and_store_credential(attrs, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential(attrs, true); let cred2 = CredInfoProver { requested_attr: "height".to_string(), referent: cred_id, @@ -740,7 +740,7 @@ pub mod tests { let attrs = r#"["address1","address2","city","state","zip"]"#; let (schema_id, _, cred_def_id, _, _, _, _, cred_id, rev_reg_id, cred_rev_id) = - ::utils::libindy::anoncreds::tests::create_and_store_credential(attrs, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential(attrs, true); let cred2 = CredInfoProver { requested_attr: "height".to_string(), referent: cred_id, @@ -795,7 +795,7 @@ pub mod tests { let attrs = r#"["address1","address2","city","state","zip"]"#; let (schema_id, _, cred_def_id, _, _, _, _, cred_id, rev_reg_id, cred_rev_id) = - ::utils::libindy::anoncreds::tests::create_and_store_credential(attrs, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential(attrs, true); let cred2 = CredInfoProver { requested_attr: "height".to_string(), referent: cred_id, @@ -850,7 +850,7 @@ pub mod tests { let attrs = r#"["address1","address2","city","state","zip"]"#; let (schema_id, _, cred_def_id, _, _, _, _, cred_id, rev_reg_id, cred_rev_id) = - ::utils::libindy::anoncreds::tests::create_and_store_credential(attrs, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential(attrs, true); let cred2 = CredInfoProver { requested_attr: "height".to_string(), referent: cred_id, diff --git a/libvcx/src/libindy/proofs/verifier/verifier.rs b/libvcx/src/libindy/proofs/verifier/verifier.rs index 1546b27ccd..4fffeea59d 100644 --- a/libvcx/src/libindy/proofs/verifier/verifier.rs +++ b/libvcx/src/libindy/proofs/verifier/verifier.rs @@ -7,7 +7,7 @@ use libindy::proofs::verifier::verifier_internal::{ build_schemas_json_verifier, get_credential_info, validate_proof_revealed_attributes, }; use settings; -use utils::libindy::anoncreds; +use libindy::utils::anoncreds; use utils::mockdata::mock_settings::get_mock_result_for_validate_indy_proof; use utils::openssl::encode; @@ -77,7 +77,7 @@ pub mod tests { let proof_req_json = serde_json::to_string(&proof_req_json).unwrap(); - let prover_proof_json = ::utils::libindy::anoncreds::libindy_prover_create_proof( + let prover_proof_json = ::libindy::utils::anoncreds::libindy_prover_create_proof( &proof_req_json, &json!({ "self_attested_attributes":{ @@ -127,11 +127,11 @@ pub mod tests { let proof_req_json = serde_json::to_string(&proof_req_json).unwrap(); let (schema_id, schema_json, cred_def_id, cred_def_json, _offer, _req, _req_meta, cred_id, _, _) - = ::utils::libindy::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); + = ::libindy::utils::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); let cred_def_json: serde_json::Value = serde_json::from_str(&cred_def_json).unwrap(); let schema_json: serde_json::Value = serde_json::from_str(&schema_json).unwrap(); - let prover_proof_json = ::utils::libindy::anoncreds::libindy_prover_create_proof( + let prover_proof_json = ::libindy::utils::anoncreds::libindy_prover_create_proof( &proof_req_json, &json!({ "self_attested_attributes":{ @@ -188,11 +188,11 @@ pub mod tests { let proof_req_json = serde_json::to_string(&proof_req_json).unwrap(); let (schema_id, schema_json, cred_def_id, cred_def_json, _offer, _req, _req_meta, cred_id, _, _) - = ::utils::libindy::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); + = ::libindy::utils::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); let cred_def_json: serde_json::Value = serde_json::from_str(&cred_def_json).unwrap(); let schema_json: serde_json::Value = serde_json::from_str(&schema_json).unwrap(); - let prover_proof_json = ::utils::libindy::anoncreds::libindy_prover_create_proof( + let prover_proof_json = ::libindy::utils::anoncreds::libindy_prover_create_proof( &proof_req_json, &json!({ "self_attested_attributes":{ diff --git a/libvcx/src/libindy/proofs/verifier/verifier_internal.rs b/libvcx/src/libindy/proofs/verifier/verifier_internal.rs index 978c2cb2ac..2c6492f6ac 100644 --- a/libvcx/src/libindy/proofs/verifier/verifier_internal.rs +++ b/libvcx/src/libindy/proofs/verifier/verifier_internal.rs @@ -3,7 +3,7 @@ use serde_json::Value; use error::prelude::*; use settings; -use utils::libindy::anoncreds; +use libindy::utils::anoncreds; use utils::mockdata::mock_settings::get_mock_result_for_validate_indy_proof; use utils::openssl::encode; diff --git a/libvcx/src/utils/libindy/anoncreds.rs b/libvcx/src/libindy/utils/anoncreds.rs similarity index 96% rename from libvcx/src/utils/libindy/anoncreds.rs rename to libvcx/src/libindy/utils/anoncreds.rs index d61ca86007..342af14f33 100644 --- a/libvcx/src/utils/libindy/anoncreds.rs +++ b/libvcx/src/libindy/utils/anoncreds.rs @@ -5,13 +5,13 @@ use serde_json::{map::Map, Value}; use time; use error::prelude::*; +use libindy::utils::{LibindyMock, wallet::get_wallet_handle}; +use libindy::utils::cache::{clear_rev_reg_delta_cache, get_rev_reg_delta_cache, set_rev_reg_delta_cache}; +use libindy::utils::ledger::*; +use libindy::utils::payments::{pay_for_txn, PaymentTxn}; use settings; use utils::constants::{ATTRS, LIBINDY_CRED_OFFER, PROOF_REQUESTED_PREDICATES, REQUESTED_ATTRIBUTES, REV_STATE_JSON}; use utils::constants::{CREATE_CRED_DEF_ACTION, CREATE_REV_REG_DEF_ACTION, CREATE_REV_REG_DELTA_ACTION, CREATE_SCHEMA_ACTION, CRED_DEF_ID, CRED_DEF_JSON, CRED_DEF_REQ, rev_def_json, REV_REG_DELTA_JSON, REV_REG_ID, REV_REG_JSON, REVOC_REG_TYPE, SCHEMA_ID, SCHEMA_JSON, SCHEMA_TXN}; -use utils::libindy::{LibindyMock, wallet::get_wallet_handle}; -use utils::libindy::cache::{clear_rev_reg_delta_cache, get_rev_reg_delta_cache, set_rev_reg_delta_cache}; -use utils::libindy::ledger::*; -use utils::libindy::payments::{pay_for_txn, PaymentTxn}; use utils::mockdata::mock_settings::get_mock_creds_retrieved_for_proof_request; const BLOB_STORAGE_TYPE: &str = "default"; @@ -395,7 +395,7 @@ pub fn build_schema_request(schema: &str) -> VcxResult { pub fn publish_schema(schema: &str) -> VcxResult> { if settings::indy_mocks_enabled() { let inputs = vec!["pay:null:9UFgyjuJxi1i1HD".to_string()]; - let outputs = serde_json::from_str::>(r#"[{"amount":4,"extra":null,"recipient":"pay:null:xkIsxem0YNtHrRO"}]"#).unwrap(); + let outputs = serde_json::from_str::>(r#"[{"amount":4,"extra":null,"recipient":"pay:null:xkIsxem0YNtHrRO"}]"#).unwrap(); return Ok(Some(PaymentTxn::from_parts(inputs, outputs, 1, false))); } @@ -451,7 +451,7 @@ pub fn build_cred_def_request(issuer_did: &str, cred_def_json: &str) -> VcxResul pub fn publish_cred_def(issuer_did: &str, cred_def_json: &str) -> VcxResult> { if settings::indy_mocks_enabled() { let inputs = vec!["pay:null:9UFgyjuJxi1i1HD".to_string()]; - let outputs = serde_json::from_str::>(r#"[{"amount":4,"extra":null,"recipient":"pay:null:xkIsxem0YNtHrRO"}]"#).unwrap(); + let outputs = serde_json::from_str::>(r#"[{"amount":4,"extra":null,"recipient":"pay:null:xkIsxem0YNtHrRO"}]"#).unwrap(); return Ok(Some(PaymentTxn::from_parts(inputs, outputs, 1, false))); } @@ -549,7 +549,7 @@ pub fn get_rev_reg(rev_reg_id: &str, timestamp: u64) -> VcxResult<(String, Strin pub fn revoke_credential(tails_file: &str, rev_reg_id: &str, cred_rev_id: &str) -> VcxResult<(Option, String)> { if settings::indy_mocks_enabled() { let inputs = vec!["pay:null:9UFgyjuJxi1i1HD".to_string()]; - let outputs = serde_json::from_str::>(r#"[{"amount":4,"extra":null,"recipient":"pay:null:xkIsxem0YNtHrRO"}]"#).unwrap(); + let outputs = serde_json::from_str::>(r#"[{"amount":4,"extra":null,"recipient":"pay:null:xkIsxem0YNtHrRO"}]"#).unwrap(); return Ok((Some(PaymentTxn::from_parts(inputs, outputs, 1, false)), REV_REG_DELTA_JSON.to_string())); } @@ -635,14 +635,14 @@ pub mod tests { pub fn create_schema_req(schema_json: &str) -> String { let institution_did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); - let request = ::utils::libindy::ledger::libindy_build_schema_request(&institution_did, schema_json).unwrap(); + let request = ::libindy::utils::ledger::libindy_build_schema_request(&institution_did, schema_json).unwrap(); append_txn_author_agreement_to_request(&request).unwrap() } pub fn create_and_write_test_schema(attr_list: &str) -> (String, String) { let (schema_id, schema_json) = create_schema(attr_list); let req = create_schema_req(&schema_json); - ::utils::libindy::payments::pay_for_txn(&req, CREATE_SCHEMA_ACTION).unwrap(); + ::libindy::utils::payments::pay_for_txn(&req, CREATE_SCHEMA_ACTION).unwrap(); thread::sleep(Duration::from_millis(1000)); (schema_id, schema_json) } @@ -679,14 +679,14 @@ pub mod tests { pub fn create_credential_offer(attr_list: &str, revocation: bool) -> (String, String, String, String, String, Option) { let (schema_id, schema_json, cred_def_id, cred_def_json, _, rev_reg_id) = create_and_store_credential_def(attr_list, revocation); - let offer = ::utils::libindy::anoncreds::libindy_issuer_create_credential_offer(&cred_def_id).unwrap(); + let offer = ::libindy::utils::anoncreds::libindy_issuer_create_credential_offer(&cred_def_id).unwrap(); (schema_id, schema_json, cred_def_id, cred_def_json, offer, rev_reg_id) } pub fn create_credential_req(attr_list: &str, revocation: bool) -> (String, String, String, String, String, String, String, Option) { let (schema_id, schema_json, cred_def_id, cred_def_json, offer, rev_reg_id) = create_credential_offer(attr_list, revocation); let institution_did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); - let (req, req_meta) = ::utils::libindy::anoncreds::libindy_prover_create_credential_req(&institution_did, &offer, &cred_def_json).unwrap(); + let (req, req_meta) = ::libindy::utils::anoncreds::libindy_prover_create_credential_req(&institution_did, &offer, &cred_def_json).unwrap(); (schema_id, schema_json, cred_def_id, cred_def_json, offer, req, req_meta, rev_reg_id) } @@ -701,9 +701,9 @@ pub mod tests { (Some(json), Some(get_temp_dir_path(TEST_TAILS_FILE).to_str().unwrap().to_string().to_string())) } else { (None, None) }; - let (cred, cred_rev_id, _) = ::utils::libindy::anoncreds::libindy_issuer_create_credential(&offer, &req, &encoded_attributes, rev_reg_id.clone(), tails_file).unwrap(); + let (cred, cred_rev_id, _) = ::libindy::utils::anoncreds::libindy_issuer_create_credential(&offer, &req, &encoded_attributes, rev_reg_id.clone(), tails_file).unwrap(); /* store cred */ - let cred_id = ::utils::libindy::anoncreds::libindy_prover_store_credential(None, &req_meta, &cred, &cred_def_json, rev_def_json.as_ref().map(String::as_str)).unwrap(); + let cred_id = ::libindy::utils::anoncreds::libindy_prover_store_credential(None, &req_meta, &cred, &cred_def_json, rev_def_json.as_ref().map(String::as_str)).unwrap(); (schema_id, schema_json, cred_def_id, cred_def_json, offer, req, req_meta, cred_id, rev_reg_id, cred_rev_id) } @@ -930,7 +930,7 @@ pub mod tests { let (_, _, _, _, _, _, _, _, rev_reg_id, cred_rev_id) = create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, true); - let rc = ::utils::libindy::anoncreds::libindy_issuer_revoke_credential(get_temp_dir_path(TEST_TAILS_FILE).to_str().unwrap(), &rev_reg_id.unwrap(), &cred_rev_id.unwrap()); + let rc = ::libindy::utils::anoncreds::libindy_issuer_revoke_credential(get_temp_dir_path(TEST_TAILS_FILE).to_str().unwrap(), &rev_reg_id.unwrap(), &cred_rev_id.unwrap()); assert!(rc.is_ok()); } @@ -949,7 +949,7 @@ pub mod tests { fn test_create_cred_def_real() { let _setup = SetupLibraryWalletPool::init(); - let (schema_id, _) = ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let (schema_id, _) = ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); let (_, schema_json) = get_schema_json(&schema_id).unwrap(); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); @@ -964,7 +964,7 @@ pub mod tests { // Cred def is created with support_revocation=false, // revoc_reg_def will fail in libindy because cred_Def doesn't have revocation keys - let (_, _, cred_def_id, _, _, _) = ::utils::libindy::anoncreds::tests::create_and_store_credential_def(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); + let (_, _, cred_def_id, _, _, _) = ::libindy::utils::anoncreds::tests::create_and_store_credential_def(::utils::constants::DEFAULT_SCHEMA_ATTRS, false); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); let rc = generate_rev_reg(&did, &cred_def_id, get_temp_dir_path("path.txt").to_str().unwrap(), 2, "tag1"); @@ -976,7 +976,7 @@ pub mod tests { fn test_create_rev_reg_def() { let _setup = SetupLibraryWalletPool::init(); - let (schema_id, _) = ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let (schema_id, _) = ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); let (_, schema_json) = get_schema_json(&schema_id).unwrap(); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); @@ -994,7 +994,7 @@ pub mod tests { let attrs = r#"["address1","address2","city","state","zip"]"#; let (_, _, _, _, _, rev_reg_id) = - ::utils::libindy::anoncreds::tests::create_and_store_credential_def(attrs, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential_def(attrs, true); let rev_reg_id = rev_reg_id.unwrap(); let (id, _json) = get_rev_reg_def_json(&rev_reg_id).unwrap(); @@ -1008,7 +1008,7 @@ pub mod tests { let attrs = r#"["address1","address2","city","state","zip"]"#; let (_, _, _, _, _, rev_reg_id) = - ::utils::libindy::anoncreds::tests::create_and_store_credential_def(attrs, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential_def(attrs, true); let rev_reg_id = rev_reg_id.unwrap(); let (id, _delta, _timestamp) = get_rev_reg_delta_json(&rev_reg_id, None, None).unwrap(); @@ -1022,7 +1022,7 @@ pub mod tests { let attrs = r#"["address1","address2","city","state","zip"]"#; let (_, _, _, _, _, rev_reg_id) = - ::utils::libindy::anoncreds::tests::create_and_store_credential_def(attrs, true); + ::libindy::utils::anoncreds::tests::create_and_store_credential_def(attrs, true); let rev_reg_id = rev_reg_id.unwrap(); let (id, _rev_reg, _timestamp) = get_rev_reg(&rev_reg_id, time::get_time().sec as u64).unwrap(); @@ -1034,7 +1034,7 @@ pub mod tests { fn from_pool_ledger_with_id() { let _setup = SetupLibraryWalletPool::init(); - let (schema_id, _schema_json) = ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let (schema_id, _schema_json) = ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); let rc = get_schema_json(&schema_id); @@ -1058,7 +1058,7 @@ pub mod tests { let _setup = SetupLibraryWalletPool::init(); let (_, _, _, _, _, _, _, _, rev_reg_id, cred_rev_id) - = ::utils::libindy::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, true); + = ::libindy::utils::anoncreds::tests::create_and_store_credential(::utils::constants::DEFAULT_SCHEMA_ATTRS, true); let rev_reg_id = rev_reg_id.unwrap(); let (_, first_rev_reg_delta, first_timestamp) = get_rev_reg_delta_json(&rev_reg_id, None, None).unwrap(); diff --git a/libvcx/src/utils/libindy/cache.rs b/libvcx/src/libindy/utils/cache.rs similarity index 99% rename from libvcx/src/utils/libindy/cache.rs rename to libvcx/src/libindy/utils/cache.rs index 4f567e2f7d..7deeb3f88d 100644 --- a/libvcx/src/utils/libindy/cache.rs +++ b/libvcx/src/libindy/utils/cache.rs @@ -1,7 +1,7 @@ use serde_json; use error::{VcxError, VcxErrorKind, VcxResult}; -use utils::libindy::wallet::{add_record, delete_record, get_record, update_record_value}; +use libindy::utils::wallet::{add_record, delete_record, get_record, update_record_value}; static CACHE_TYPE: &str = "cache"; static REV_REG_CACHE_PREFIX: &str = "rev_reg:"; diff --git a/libvcx/src/utils/libindy/callback.rs b/libvcx/src/libindy/utils/callback.rs similarity index 100% rename from libvcx/src/utils/libindy/callback.rs rename to libvcx/src/libindy/utils/callback.rs diff --git a/libvcx/src/utils/libindy/callback_u32.rs b/libvcx/src/libindy/utils/callback_u32.rs similarity index 98% rename from libvcx/src/utils/libindy/callback_u32.rs rename to libvcx/src/libindy/utils/callback_u32.rs index 28d4bb507c..0de5d36f34 100644 --- a/libvcx/src/utils/libindy/callback_u32.rs +++ b/libvcx/src/libindy/utils/callback_u32.rs @@ -5,7 +5,7 @@ use std::sync::Mutex; use indy_sys::CommandHandle; use libc::c_char; -use utils::libindy::callback::{build_buf, build_string, get_cb}; +use libindy::utils::callback::{build_buf, build_string, get_cb}; lazy_static! { pub static ref CALLBACKS_U32: Mutex>> = Default::default(); diff --git a/libvcx/src/utils/libindy/crypto.rs b/libvcx/src/libindy/utils/crypto.rs similarity index 83% rename from libvcx/src/utils/libindy/crypto.rs rename to libvcx/src/libindy/utils/crypto.rs index d75b2f807e..edd4b1c6d7 100644 --- a/libvcx/src/utils/libindy/crypto.rs +++ b/libvcx/src/libindy/utils/crypto.rs @@ -4,7 +4,7 @@ use indy::crypto; use error::prelude::*; use settings; -use utils::libindy::LibindyMock; +use libindy::utils::LibindyMock; pub fn prep_msg(sender_vk: &str, recipient_vk: &str, msg: &[u8]) -> VcxResult> { if settings::indy_mocks_enabled() { @@ -13,7 +13,7 @@ pub fn prep_msg(sender_vk: &str, recipient_vk: &str, msg: &[u8]) -> VcxResult VcxResult> pub fn parse_msg(recipient_vk: &str, msg: &[u8]) -> VcxResult<(String, Vec)> { if settings::indy_mocks_enabled() { return Ok((::utils::constants::VERKEY.to_string(), Vec::from(msg).to_owned())); } - crypto::auth_decrypt(::utils::libindy::wallet::get_wallet_handle(), recipient_vk, msg) + crypto::auth_decrypt(::libindy::utils::wallet::get_wallet_handle(), recipient_vk, msg) .wait() .map_err(VcxError::from) } @@ -37,7 +37,7 @@ pub fn parse_msg(recipient_vk: &str, msg: &[u8]) -> VcxResult<(String, Vec)> pub fn parse_anonymous_msg(recipient_vk: &str, msg: &[u8]) -> VcxResult> { if settings::indy_mocks_enabled() { return Ok(Vec::from(msg).to_owned()); } - crypto::anon_decrypt(::utils::libindy::wallet::get_wallet_handle(), recipient_vk, msg) + crypto::anon_decrypt(::libindy::utils::wallet::get_wallet_handle(), recipient_vk, msg) .wait() .map_err(VcxError::from) } @@ -45,7 +45,7 @@ pub fn parse_anonymous_msg(recipient_vk: &str, msg: &[u8]) -> VcxResult> pub fn sign(my_vk: &str, msg: &[u8]) -> VcxResult> { if settings::indy_mocks_enabled() { return Ok(Vec::from(msg).to_owned()); } - crypto::sign(::utils::libindy::wallet::get_wallet_handle(), my_vk, msg) + crypto::sign(::libindy::utils::wallet::get_wallet_handle(), my_vk, msg) .wait() .map_err(VcxError::from) } @@ -61,7 +61,7 @@ pub fn verify(vk: &str, msg: &[u8], signature: &[u8]) -> VcxResult { pub fn pack_message(sender_vk: Option<&str>, receiver_keys: &str, msg: &[u8]) -> VcxResult> { if settings::indy_mocks_enabled() { return Ok(msg.to_vec()); } - crypto::pack_message(::utils::libindy::wallet::get_wallet_handle(), msg, receiver_keys, sender_vk) + crypto::pack_message(::libindy::utils::wallet::get_wallet_handle(), msg, receiver_keys, sender_vk) .wait() .map_err(VcxError::from) } @@ -69,7 +69,7 @@ pub fn pack_message(sender_vk: Option<&str>, receiver_keys: &str, msg: &[u8]) -> pub fn unpack_message(msg: &[u8]) -> VcxResult> { if settings::indy_mocks_enabled() { return Ok(Vec::from(msg).to_owned()); } - crypto::unpack_message(::utils::libindy::wallet::get_wallet_handle(), msg) + crypto::unpack_message(::libindy::utils::wallet::get_wallet_handle(), msg) .wait() .map_err(VcxError::from) } @@ -77,7 +77,7 @@ pub fn unpack_message(msg: &[u8]) -> VcxResult> { pub fn create_key(seed: Option<&str>) -> VcxResult { let key_json = json!({"seed": seed}).to_string(); - crypto::create_key(::utils::libindy::wallet::get_wallet_handle(), Some(&key_json)) + crypto::create_key(::libindy::utils::wallet::get_wallet_handle(), Some(&key_json)) .wait() .map_err(VcxError::from) } \ No newline at end of file diff --git a/libvcx/src/utils/libindy/error_codes.rs b/libvcx/src/libindy/utils/error_codes.rs similarity index 100% rename from libvcx/src/utils/libindy/error_codes.rs rename to libvcx/src/libindy/utils/error_codes.rs diff --git a/libvcx/src/utils/libindy/ledger.rs b/libvcx/src/libindy/utils/ledger.rs similarity index 98% rename from libvcx/src/utils/libindy/ledger.rs rename to libvcx/src/libindy/utils/ledger.rs index 941bfa9806..e82173629f 100644 --- a/libvcx/src/utils/libindy/ledger.rs +++ b/libvcx/src/libindy/utils/ledger.rs @@ -7,8 +7,8 @@ use serde_json; use error::prelude::*; use settings; -use utils::libindy::pool::get_pool_handle; -use utils::libindy::wallet::get_wallet_handle; +use libindy::utils::pool::get_pool_handle; +use libindy::utils::wallet::get_wallet_handle; pub fn multisign_request(did: &str, request: &str) -> VcxResult { ledger::multi_sign_request(get_wallet_handle(), did, request) @@ -297,7 +297,7 @@ pub mod auth_rule { GET_DEFAULT_AUTH_CONSTRAINTS.call_once(|| { let get_auth_rule_request = ::indy::ledger::build_get_auth_rule_request(None, None, None, None, None, None).wait().unwrap(); - let get_auth_rule_response = ::utils::libindy::ledger::libindy_submit_request(&get_auth_rule_request).unwrap(); + let get_auth_rule_response = ::libindy::utils::ledger::libindy_submit_request(&get_auth_rule_request).unwrap(); let response: GetAuthRuleResponse = ::serde_json::from_str(&get_auth_rule_response) .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidLedgerResponse, err)).unwrap(); @@ -462,7 +462,7 @@ mod test { fn test_endorse_transaction() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - use utils::libindy::payments::add_new_did; + use libindy::utils::payments::add_new_did; let (author_did, _) = add_new_did(None); let (endorser_did, _) = add_new_did(Some("ENDORSER")); diff --git a/libvcx/src/utils/libindy/logger.rs b/libvcx/src/libindy/utils/logger.rs similarity index 100% rename from libvcx/src/utils/libindy/logger.rs rename to libvcx/src/libindy/utils/logger.rs diff --git a/libvcx/src/utils/libindy/mod.rs b/libvcx/src/libindy/utils/mod.rs similarity index 100% rename from libvcx/src/utils/libindy/mod.rs rename to libvcx/src/libindy/utils/mod.rs index b6b98c4e60..d4205b6806 100644 --- a/libvcx/src/utils/libindy/mod.rs +++ b/libvcx/src/libindy/utils/mod.rs @@ -51,11 +51,11 @@ impl LibindyMock { pub mod tests { use futures::Future; + use init::open_pool; use settings; use utils::devsetup::*; use super::*; - use init::open_pool; // TODO: Is used for Aries tests...try to remove and use one of devsetup's pub mod test_setup { diff --git a/libvcx/src/utils/libindy/payments.rs b/libvcx/src/libindy/utils/payments.rs similarity index 95% rename from libvcx/src/utils/libindy/payments.rs rename to libvcx/src/libindy/utils/payments.rs index eb54391463..a8f9c4e5d1 100644 --- a/libvcx/src/utils/libindy/payments.rs +++ b/libvcx/src/libindy/utils/payments.rs @@ -8,8 +8,8 @@ use serde_json::Value; use error::prelude::*; use settings; use utils::constants::{CREATE_TRANSFER_ACTION, SUBMIT_SCHEMA_RESPONSE}; -use utils::libindy::ledger::{append_txn_author_agreement_to_request, auth_rule, libindy_sign_and_submit_request, libindy_sign_request, libindy_submit_request}; -use utils::libindy::wallet::get_wallet_handle; +use libindy::utils::ledger::{append_txn_author_agreement_to_request, auth_rule, libindy_sign_and_submit_request, libindy_sign_request, libindy_submit_request}; +use libindy::utils::wallet::get_wallet_handle; static DEFAULT_FEES: &str = r#"{"0":0, "1":0, "3":0, "100":0, "101":2, "102":42, "103":0, "104":0, "105":0, "107":0, "108":0, "109":0, "110":0, "111":0, "112":0, "113":2, "114":2, "115":0, "116":0, "117":0, "118":0, "119":0, "10001":0}"#; @@ -248,7 +248,7 @@ pub fn pay_for_txn(req: &str, txn_action: (&str, &str, &str, Option<&str>, Optio debug!("pay_for_txn(req: {}, txn_action: {:?})", req, txn_action); if settings::indy_mocks_enabled() { let inputs = vec!["pay:null:9UFgyjuJxi1i1HD".to_string()]; - let outputs = serde_json::from_str::>(r#"[{"amount":1,"extra":null,"recipient":"pay:null:xkIsxem0YNtHrRO"}]"#).unwrap(); + let outputs = serde_json::from_str::>(r#"[{"amount":1,"extra":null,"recipient":"pay:null:xkIsxem0YNtHrRO"}]"#).unwrap(); return Ok((Some(PaymentTxn::from_parts(inputs, outputs, 1, false)), SUBMIT_SCHEMA_RESPONSE.to_string())); } @@ -389,7 +389,7 @@ fn get_requester_info(requester_info_json: Option) -> VcxResult let role = match settings::get_config_value(settings::CONFIG_SDK_TO_REMOTE_ROLE) { Ok(role) => role, Err(_) => { - let role_ = ::utils::libindy::ledger::get_role(&settings::get_config_value(settings::CONFIG_INSTITUTION_DID)?)?; + let role_ = ::libindy::utils::ledger::get_role(&settings::get_config_value(settings::CONFIG_INSTITUTION_DID)?)?; settings::set_config_value(settings::CONFIG_SDK_TO_REMOTE_ROLE, &role_); role_ } @@ -490,12 +490,12 @@ pub fn mint_tokens_and_set_fees(number_of_addresses: Option, tokens_per_add let outputs = serde_json::to_string(&mint).unwrap(); let (req, _) = payments::build_mint_req(get_wallet_handle(), Some(&did_1), &outputs, None).wait().unwrap(); - let sign1 = ::utils::libindy::ledger::multisign_request(&did_1, &req).unwrap(); - let sign2 = ::utils::libindy::ledger::multisign_request(&did_2, &sign1).unwrap(); - let sign3 = ::utils::libindy::ledger::multisign_request(&did_3, &sign2).unwrap(); - let sign4 = ::utils::libindy::ledger::multisign_request(&did_4, &sign3).unwrap(); + let sign1 = ::libindy::utils::ledger::multisign_request(&did_1, &req).unwrap(); + let sign2 = ::libindy::utils::ledger::multisign_request(&did_2, &sign1).unwrap(); + let sign3 = ::libindy::utils::ledger::multisign_request(&did_3, &sign2).unwrap(); + let sign4 = ::libindy::utils::ledger::multisign_request(&did_4, &sign3).unwrap(); - match ::utils::libindy::ledger::libindy_submit_request(&sign4) { + match ::libindy::utils::ledger::libindy_submit_request(&sign4) { Ok(_) => (), Err(x) => error!("failure minting tokens: {}", x), }; @@ -505,12 +505,12 @@ pub fn mint_tokens_and_set_fees(number_of_addresses: Option, tokens_per_add let txn = payments::build_set_txn_fees_req(get_wallet_handle(), Some(&did_1), settings::get_payment_method().as_str(), fees_) .wait()?; - let sign1 = ::utils::libindy::ledger::multisign_request(&did_1, &txn).unwrap(); - let sign2 = ::utils::libindy::ledger::multisign_request(&did_2, &sign1).unwrap(); - let sign3 = ::utils::libindy::ledger::multisign_request(&did_3, &sign2).unwrap(); - let sign4 = ::utils::libindy::ledger::multisign_request(&did_4, &sign3).unwrap(); + let sign1 = ::libindy::utils::ledger::multisign_request(&did_1, &txn).unwrap(); + let sign2 = ::libindy::utils::ledger::multisign_request(&did_2, &sign1).unwrap(); + let sign3 = ::libindy::utils::ledger::multisign_request(&did_3, &sign2).unwrap(); + let sign4 = ::libindy::utils::ledger::multisign_request(&did_4, &sign3).unwrap(); - ::utils::libindy::ledger::libindy_submit_request(&sign4).unwrap(); + ::libindy::utils::ledger::libindy_submit_request(&sign4).unwrap(); let txn_fees: HashMap = ::serde_json::from_str::>(fees_).unwrap() @@ -529,12 +529,12 @@ pub fn add_new_did(role: Option<&str>) -> (String, String) { let institution_did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); - let (did, verkey) = ::utils::libindy::signus::create_and_store_my_did(None, None).unwrap(); + let (did, verkey) = ::libindy::utils::signus::create_and_store_my_did(None, None).unwrap(); let mut req_nym = ledger::build_nym_request(&institution_did, &did, Some(&verkey), None, role).wait().unwrap(); req_nym = append_txn_author_agreement_to_request(&req_nym).unwrap(); - ::utils::libindy::ledger::libindy_sign_and_submit_request(&institution_did, &req_nym).unwrap(); + ::libindy::utils::ledger::libindy_sign_and_submit_request(&institution_did, &req_nym).unwrap(); (did, verkey) } @@ -773,8 +773,8 @@ pub mod tests { fn test_pay_for_txn_real() { let _setup = SetupLibraryWalletPool::init(); - let (_, schema_json) = ::utils::libindy::anoncreds::tests::create_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); - let create_schema_req = ::utils::libindy::anoncreds::tests::create_schema_req(&schema_json); + let (_, schema_json) = ::libindy::utils::anoncreds::tests::create_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let create_schema_req = ::libindy::utils::anoncreds::tests::create_schema_req(&schema_json); let start_wallet = get_wallet_token_info().unwrap(); let (payment, _response) = pay_for_txn(&create_schema_req, ::utils::constants::CREATE_SCHEMA_ACTION).unwrap(); @@ -794,8 +794,8 @@ pub mod tests { mint_tokens_and_set_fees(Some(0), Some(0), Some(r#"{"101":50000000001}"#.to_string()), None).unwrap(); - let (_, schema_json) = ::utils::libindy::anoncreds::tests::create_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); - let create_schema_req = ::utils::libindy::anoncreds::tests::create_schema_req(&schema_json); + let (_, schema_json) = ::libindy::utils::anoncreds::tests::create_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let create_schema_req = ::libindy::utils::anoncreds::tests::create_schema_req(&schema_json); let rc = pay_for_txn(&create_schema_req, ::utils::constants::CREATE_SCHEMA_ACTION); @@ -879,8 +879,8 @@ pub mod tests { fn test_submit_fees_with_insufficient_tokens_on_ledger() { let _setup = SetupLibraryWalletPool::init(); - let (_, schema_json) = ::utils::libindy::anoncreds::tests::create_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); - let req = ::utils::libindy::anoncreds::tests::create_schema_req(&schema_json); + let (_, schema_json) = ::libindy::utils::anoncreds::tests::create_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let req = ::libindy::utils::anoncreds::tests::create_schema_req(&schema_json); let (remainder, inputs, refund_address) = inputs(2).unwrap(); let output = outputs(remainder, &refund_address, None, None).unwrap(); let start_wallet = get_wallet_token_info().unwrap(); @@ -898,8 +898,8 @@ pub mod tests { fn test_pay_for_txn_with_empty_outputs_success() { let _setup = SetupLibraryWalletPool::init(); - let (_, schema_json) = ::utils::libindy::anoncreds::tests::create_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); - let req = ::utils::libindy::anoncreds::tests::create_schema_req(&schema_json); + let (_, schema_json) = ::libindy::utils::anoncreds::tests::create_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let req = ::libindy::utils::anoncreds::tests::create_schema_req(&schema_json); let cost = get_action_price(::utils::constants::CREATE_SCHEMA_ACTION, None).unwrap(); let start_wallet = get_wallet_token_info().unwrap(); @@ -947,7 +947,7 @@ pub mod tests { let _setup = SetupLibraryWalletPoolZeroFees::init(); let fees = get_ledger_fees().unwrap(); - ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); } #[cfg(feature = "pool_tests")] @@ -957,7 +957,7 @@ pub mod tests { mint_tokens_and_set_fees(Some(0), Some(0), Some("{\"101\":0, \"102\":0}".to_string()), None).unwrap(); let fees = get_ledger_fees().unwrap(); - ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); } fn _action() -> String { diff --git a/libvcx/src/utils/libindy/pool.rs b/libvcx/src/libindy/utils/pool.rs similarity index 100% rename from libvcx/src/utils/libindy/pool.rs rename to libvcx/src/libindy/utils/pool.rs diff --git a/libvcx/src/utils/libindy/signus.rs b/libvcx/src/libindy/utils/signus.rs similarity index 94% rename from libvcx/src/utils/libindy/signus.rs rename to libvcx/src/libindy/utils/signus.rs index a99e0bac42..f88d3a6f14 100644 --- a/libvcx/src/utils/libindy/signus.rs +++ b/libvcx/src/libindy/utils/signus.rs @@ -3,7 +3,7 @@ use indy::did; use error::prelude::*; use settings; -use utils::libindy::wallet::get_wallet_handle; +use libindy::utils::wallet::get_wallet_handle; pub fn create_and_store_my_did(seed: Option<&str>, method_name: Option<&str>) -> VcxResult<(String, String)> { if settings::indy_mocks_enabled() { diff --git a/libvcx/src/utils/libindy/wallet.rs b/libvcx/src/libindy/utils/wallet.rs similarity index 99% rename from libvcx/src/utils/libindy/wallet.rs rename to libvcx/src/libindy/utils/wallet.rs index 590342b289..e09ee0eecd 100644 --- a/libvcx/src/utils/libindy/wallet.rs +++ b/libvcx/src/libindy/utils/wallet.rs @@ -298,7 +298,7 @@ pub fn import(config: &str) -> VcxResult<()> { #[cfg(test)] pub mod tests { - use ::utils::libindy::signus::create_and_store_my_did; + use ::libindy::utils::signus::create_and_store_my_did; use utils::devsetup::{SetupDefaults, SetupEmpty, SetupLibraryWallet, TempFile}; use utils::get_temp_dir_path; diff --git a/libvcx/src/schema.rs b/libvcx/src/schema.rs index a0cfe128ce..29aa89ce02 100644 --- a/libvcx/src/schema.rs +++ b/libvcx/src/schema.rs @@ -2,13 +2,13 @@ use std::string::ToString; use serde_json; +use agency_comm::ObjectWithVersion; use api::PublicEntityStateType; use error::prelude::*; -use agency_comm::ObjectWithVersion; +use libindy::utils::anoncreds; +use libindy::utils::ledger; +use libindy::utils::payments::PaymentTxn; use utils::constants::DEFAULT_SERIALIZE_VERSION; -use utils::libindy::anoncreds; -use utils::libindy::ledger; -use utils::libindy::payments::PaymentTxn; use utils::object_cache::ObjectCache; lazy_static! { @@ -214,18 +214,18 @@ pub mod tests { use rand::Rng; + #[cfg(feature = "pool_tests")] + use libindy::utils::anoncreds::tests::create_and_write_test_schema; + #[cfg(feature = "pool_tests")] + use libindy::utils::payments::add_new_did; + use libindy::utils::wallet::get_wallet_handle; use settings; #[cfg(feature = "pool_tests")] use utils::constants; use utils::constants::SCHEMA_ID; use utils::devsetup::*; - #[cfg(feature = "pool_tests")] - use utils::libindy::anoncreds::tests::create_and_write_test_schema; - #[cfg(feature = "pool_tests")] - use utils::libindy::payments::add_new_did; use super::*; - use utils::libindy::wallet::get_wallet_handle; fn data() -> Vec { vec!["address1".to_string(), "address2".to_string(), "zip".to_string(), "city".to_string(), "state".to_string()] @@ -433,7 +433,7 @@ pub mod tests { assert_eq!(1, update_state(handle).unwrap()); assert_eq!(1, get_state(handle).unwrap()); - ::utils::libindy::wallet::close_main_wallet(); + ::libindy::utils::wallet::close_main_wallet(); } #[cfg(feature = "pool_tests")] @@ -443,6 +443,6 @@ pub mod tests { let handle = create_schema_real(); assert_eq!(1, get_state(handle).unwrap()); - ::utils::libindy::wallet::close_main_wallet(); + ::libindy::utils::wallet::close_main_wallet(); } } diff --git a/libvcx/src/settings.rs b/libvcx/src/settings.rs index 5409ff2b5f..5ebb461b27 100644 --- a/libvcx/src/settings.rs +++ b/libvcx/src/settings.rs @@ -12,9 +12,9 @@ use strum::IntoEnumIterator; use url::Url; use error::prelude::*; -use utils::validation; use utils::{error, get_temp_dir_path}; use utils::file::read_file; +use utils::validation; pub static CONFIG_POOL_NAME: &str = "pool_name"; pub static CONFIG_PROTOCOL_TYPE: &str = "protocol_type"; @@ -143,7 +143,7 @@ pub fn validate_config(config: &HashMap) -> VcxResult { trace!("validate_config >>> config: {:?}", config); //Mandatory parameters - if ::utils::libindy::wallet::get_wallet_handle() == INVALID_WALLET_HANDLE && config.get(CONFIG_WALLET_KEY).is_none() { + if ::libindy::utils::wallet::get_wallet_handle() == INVALID_WALLET_HANDLE && config.get(CONFIG_WALLET_KEY).is_none() { return Err(VcxError::from(VcxErrorKind::MissingWalletKey)); } diff --git a/libvcx/src/utils/devsetup.rs b/libvcx/src/utils/devsetup.rs index 46da86a97b..0acd4e9c2c 100644 --- a/libvcx/src/utils/devsetup.rs +++ b/libvcx/src/utils/devsetup.rs @@ -8,16 +8,16 @@ use serde_json::Value; use ::{indy, init}; use ::{settings, utils}; +use libindy::utils::pool::reset_pool_handle; +use libindy::utils::pool::tests::{create_test_ledger_config, delete_test_pool, open_test_pool}; +use libindy::utils::wallet::{close_main_wallet, create_wallet, delete_wallet, reset_wallet_handle}; +use libindy::utils::wallet; +use libindy::utils::wallet::create_and_open_as_main_wallet; use settings::set_testing_defaults; use utils::{get_temp_dir_path, threadpool}; use utils::constants; use utils::file::write_file; use utils::httpclient::AgencyMockDecrypted; -use utils::libindy::pool::reset_pool_handle; -use utils::libindy::pool::tests::{create_test_ledger_config, delete_test_pool, open_test_pool}; -use utils::libindy::wallet::{close_main_wallet, create_wallet, delete_wallet, reset_wallet_handle}; -use utils::libindy::wallet; -use utils::libindy::wallet::create_and_open_as_main_wallet; use utils::logger::LibvcxDefaultLogger; use utils::object_cache::ObjectCache; use utils::plugins::init_plugin; @@ -332,15 +332,15 @@ pub fn create_new_seed() -> String { pub fn configure_trustee_did() { settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "false"); - ::utils::libindy::anoncreds::libindy_prover_create_master_secret(settings::DEFAULT_LINK_SECRET_ALIAS).unwrap(); - let (my_did, my_vk) = ::utils::libindy::signus::create_and_store_my_did(Some(constants::TRUSTEE_SEED), None).unwrap(); + ::libindy::utils::anoncreds::libindy_prover_create_master_secret(settings::DEFAULT_LINK_SECRET_ALIAS).unwrap(); + let (my_did, my_vk) = ::libindy::utils::signus::create_and_store_my_did(Some(constants::TRUSTEE_SEED), None).unwrap(); settings::set_config_value(settings::CONFIG_INSTITUTION_DID, &my_did); settings::set_config_value(settings::CONFIG_INSTITUTION_VERKEY, &my_vk); } pub fn setup_libnullpay_nofees() { init_plugin(settings::DEFAULT_PAYMENT_PLUGIN, settings::DEFAULT_PAYMENT_INIT_FUNCTION); - ::utils::libindy::payments::tests::token_setup(None, None, true); + ::libindy::utils::payments::tests::token_setup(None, None, true); } pub fn setup_indy_env(use_zero_fees: bool) { @@ -354,13 +354,13 @@ pub fn setup_indy_env(use_zero_fees: bool) { settings::set_config_value(settings::CONFIG_GENESIS_PATH, utils::get_temp_dir_path(settings::DEFAULT_GENESIS_PATH).to_str().unwrap()); open_test_pool(); - ::utils::libindy::anoncreds::libindy_prover_create_master_secret(settings::DEFAULT_LINK_SECRET_ALIAS).unwrap(); + ::libindy::utils::anoncreds::libindy_prover_create_master_secret(settings::DEFAULT_LINK_SECRET_ALIAS).unwrap(); - let (my_did, my_vk) = ::utils::libindy::signus::create_and_store_my_did(Some(constants::TRUSTEE_SEED), None).unwrap(); + let (my_did, my_vk) = ::libindy::utils::signus::create_and_store_my_did(Some(constants::TRUSTEE_SEED), None).unwrap(); settings::set_config_value(settings::CONFIG_INSTITUTION_DID, &my_did); settings::set_config_value(settings::CONFIG_INSTITUTION_VERKEY, &my_vk); - ::utils::libindy::payments::tests::token_setup(None, None, use_zero_fees); + ::libindy::utils::payments::tests::token_setup(None, None, use_zero_fees); } pub fn cleanup_indy_env() { @@ -422,9 +422,9 @@ fn assign_trustee_role(institution_handle: Option) { settings::clear_config(); wallet::create_and_open_as_main_wallet(settings::DEFAULT_WALLET_NAME, settings::DEFAULT_WALLET_KEY, settings::WALLET_KDF_RAW, None, None, None).unwrap(); - let (trustee_did, _) = ::utils::libindy::signus::create_and_store_my_did(Some(constants::TRUSTEE_SEED), None).unwrap(); + let (trustee_did, _) = ::libindy::utils::signus::create_and_store_my_did(Some(constants::TRUSTEE_SEED), None).unwrap(); let req_nym = ::indy::ledger::build_nym_request(&trustee_did, &did, Some(&vk), None, Some("TRUSTEE")).wait().unwrap(); - ::utils::libindy::ledger::libindy_sign_and_submit_request(&trustee_did, &req_nym).unwrap(); + ::libindy::utils::ledger::libindy_sign_and_submit_request(&trustee_did, &req_nym).unwrap(); close_main_wallet(); wallet::delete_wallet(settings::DEFAULT_WALLET_NAME, settings::DEFAULT_WALLET_KEY, settings::WALLET_KDF_RAW, None, None, None).unwrap(); @@ -500,7 +500,7 @@ pub fn setup_agency_env(protocol_type: &str, use_zero_fees: bool) { // as trustees, mint tokens into each wallet set_institution(None); - ::utils::libindy::payments::tests::token_setup(None, None, use_zero_fees); + ::libindy::utils::payments::tests::token_setup(None, None, use_zero_fees); } pub fn config_with_wallet_handle(wallet_n: &str, config: &str) -> String { diff --git a/libvcx/src/utils/logger.rs b/libvcx/src/utils/logger.rs index 2baed4baaa..a1d9875075 100644 --- a/libvcx/src/utils/logger.rs +++ b/libvcx/src/utils/logger.rs @@ -12,7 +12,6 @@ use std::ptr; use error::prelude::*; use utils::cstring::CStringUtils; -use utils::libindy; #[allow(unused_imports)] #[cfg(target_os = "android")] @@ -21,6 +20,7 @@ use self::env_logger::Builder as EnvLoggerBuilder; pub use self::indy_sys::{CVoid, logger::{EnabledCB, FlushCB, LogCB}}; use self::libc::c_char; use self::log::{Level, LevelFilter, Metadata, Record}; +use libindy; pub static mut LOGGER_STATE: LoggerState = LoggerState::Default; static mut CONTEXT: *const CVoid = ptr::null(); @@ -61,7 +61,7 @@ impl LibvcxLogger { log::set_boxed_logger(Box::new(logger)) .map_err(|err| VcxError::from_msg(VcxErrorKind::LoggingError, format!("Setting logger failed with: {}", err)))?; log::set_max_level(LevelFilter::Trace); - libindy::logger::set_logger(log::logger()) + libindy::utils::logger::set_logger(log::logger()) .map_err(|err| err.map(VcxErrorKind::LoggingError, "Setting logger failed"))?; unsafe { @@ -179,7 +179,7 @@ impl LibvcxDefaultLogger { } } } - libindy::logger::set_default_logger(pattern.as_ref().map(String::as_str)) + libindy::utils::logger::set_default_logger(pattern.as_ref().map(String::as_str)) } extern fn enabled(_context: *const CVoid, diff --git a/libvcx/src/utils/mod.rs b/libvcx/src/utils/mod.rs index 4178a2d91c..ce2efb3bd4 100644 --- a/libvcx/src/utils/mod.rs +++ b/libvcx/src/utils/mod.rs @@ -45,7 +45,6 @@ pub mod constants; pub mod timeout; pub mod openssl; pub mod json; -pub mod libindy; pub mod threadpool; pub mod uuid; pub mod author_agreement; From 4e2b4310e52fb0520bb284f43a987863c073e4a7 Mon Sep 17 00:00:00 2001 From: Patrik Stas Date: Sun, 1 Nov 2020 21:26:37 +0100 Subject: [PATCH 5/7] Scope agency global settings within agency_comm module Signed-off-by: Patrik Stas --- libvcx/src/agency_comm/agency_settings.rs | 173 ++++++++++++++++++ libvcx/src/agency_comm/agent_utils.rs | 23 +-- libvcx/src/agency_comm/create_key.rs | 19 +- libvcx/src/agency_comm/get_message.rs | 12 +- libvcx/src/agency_comm/mocking.rs | 80 ++++++++ libvcx/src/agency_comm/mod.rs | 13 +- libvcx/src/agency_comm/update_connection.rs | 3 +- libvcx/src/agency_comm/update_message.rs | 13 +- libvcx/src/agency_comm/update_profile.rs | 19 +- libvcx/src/agency_comm/util.rs | 9 + libvcx/src/api/connection.rs | 7 +- libvcx/src/api/credential.rs | 12 +- libvcx/src/api/credential_def.rs | 2 - libvcx/src/api/disclosed_proof.rs | 38 ++-- libvcx/src/api/filters.rs | 22 ++- libvcx/src/api/issuer_credential.rs | 4 +- libvcx/src/api/proof.rs | 35 ++-- libvcx/src/api/schema.rs | 2 - libvcx/src/api/utils.rs | 20 +- libvcx/src/api/vcx.rs | 51 +++--- .../aries/handlers/connection/agent_info.rs | 6 +- libvcx/src/aries/handlers/connection/mod.rs | 1 - .../aries/handlers/issuance/issuer/utils.rs | 8 - libvcx/src/aries/utils/encryption_envelope.rs | 9 +- libvcx/src/connection.rs | 28 +-- libvcx/src/credential.rs | 6 +- libvcx/src/disclosed_proof.rs | 13 +- libvcx/src/issuer_credential.rs | 5 +- libvcx/src/lib.rs | 27 +-- libvcx/src/libindy/utils/wallet.rs | 3 +- libvcx/src/proof.rs | 3 +- libvcx/src/settings.rs | 67 ++----- libvcx/src/utils/devsetup.rs | 14 +- libvcx/src/utils/httpclient.rs | 87 +-------- 34 files changed, 486 insertions(+), 348 deletions(-) create mode 100644 libvcx/src/agency_comm/agency_settings.rs create mode 100644 libvcx/src/agency_comm/mocking.rs create mode 100644 libvcx/src/agency_comm/util.rs diff --git a/libvcx/src/agency_comm/agency_settings.rs b/libvcx/src/agency_comm/agency_settings.rs new file mode 100644 index 0000000000..f69f02ba69 --- /dev/null +++ b/libvcx/src/agency_comm/agency_settings.rs @@ -0,0 +1,173 @@ +use std::borrow::Borrow; +use std::collections::HashMap; +use std::path::Path; +use std::sync::RwLock; + +use serde_json::Value; +use url::Url; + +use error::{VcxError, VcxErrorKind, VcxResult}; +use utils::{error, validation}; + +pub static CONFIG_AGENCY_ENDPOINT: &str = "agency_endpoint"; +pub static CONFIG_AGENCY_DID: &str = "agency_did"; +pub static CONFIG_AGENCY_VERKEY: &str = "agency_verkey"; +pub static CONFIG_REMOTE_TO_SDK_DID: &str = "remote_to_sdk_did"; +pub static CONFIG_REMOTE_TO_SDK_VERKEY: &str = "remote_to_sdk_verkey"; +pub static CONFIG_SDK_TO_REMOTE_DID: &str = "sdk_to_remote_did"; +pub static CONFIG_SDK_TO_REMOTE_VERKEY: &str = "sdk_to_remote_verkey"; +static CONFIG_ENABLE_TEST_MODE: &str = "enable_test_mode"; + +pub static VALID_AGENCY_CONFIG_KEYS: &[&str] = &[ + CONFIG_AGENCY_ENDPOINT, + CONFIG_AGENCY_DID, + CONFIG_AGENCY_VERKEY, + CONFIG_REMOTE_TO_SDK_DID, + CONFIG_REMOTE_TO_SDK_VERKEY, + CONFIG_SDK_TO_REMOTE_DID, + CONFIG_SDK_TO_REMOTE_VERKEY, + CONFIG_ENABLE_TEST_MODE +]; + + +pub static DEFAULT_DID: &str = "2hoqvcwupRTUNkXn6ArYzs"; +pub static DEFAULT_VERKEY: &str = "FuN98eH2eZybECWkofW6A9BKJxxnTatBCopfUiNxo6ZB"; +pub static DEFAULT_URL: &str = "http://127.0.0.1:8080"; + +lazy_static! { + static ref AGENCY_SETTINGS: RwLock> = RwLock::new(HashMap::new()); +} + + +fn validate_mandatory_config_val(val: Option<&String>, err: VcxErrorKind, closure: F) -> VcxResult + where F: Fn(&str) -> Result { + closure(val.as_ref().ok_or(VcxError::from(err))?) + .or(Err(VcxError::from(err)))?; + + Ok(error::SUCCESS.code_num) +} + +fn validate_optional_config_val(val: Option<&String>, err: VcxErrorKind, closure: F) -> VcxResult + where F: Fn(&str) -> Result { + if val.is_none() { return Ok(error::SUCCESS.code_num); } + + closure(val.as_ref().ok_or(VcxError::from(VcxErrorKind::InvalidConfiguration))?) + .or(Err(VcxError::from(err)))?; + + Ok(error::SUCCESS.code_num) +} + +pub fn set_testing_defaults_agency() -> u32 { + trace!("set_testing_defaults_agency >>>"); + + // if this fails the test should exit + let mut agency_settings = AGENCY_SETTINGS.write().unwrap(); + + agency_settings.insert(CONFIG_AGENCY_ENDPOINT.to_string(), DEFAULT_URL.to_string()); + agency_settings.insert(CONFIG_AGENCY_DID.to_string(), DEFAULT_DID.to_string()); + agency_settings.insert(CONFIG_AGENCY_VERKEY.to_string(), DEFAULT_VERKEY.to_string()); + agency_settings.insert(CONFIG_REMOTE_TO_SDK_DID.to_string(), DEFAULT_DID.to_string()); + agency_settings.insert(CONFIG_REMOTE_TO_SDK_VERKEY.to_string(), DEFAULT_VERKEY.to_string()); + agency_settings.insert(CONFIG_SDK_TO_REMOTE_DID.to_string(), DEFAULT_DID.to_string()); + agency_settings.insert(CONFIG_SDK_TO_REMOTE_VERKEY.to_string(), DEFAULT_VERKEY.to_string()); + + error::SUCCESS.code_num +} + +pub fn clear_config_agency() { + trace!("clear_config_agency >>>"); + let mut config = AGENCY_SETTINGS.write().unwrap(); + config.clear(); +} + +pub fn validate_agency_config(config: &HashMap) -> VcxResult { + trace!("validate_agency_config >>> config: {:?}", config); + + // todo: Since we scope these setting to agency module, these are not really optional anymore! + validate_optional_config_val(config.get(CONFIG_AGENCY_DID), VcxErrorKind::InvalidDid, validation::validate_did)?; + validate_optional_config_val(config.get(CONFIG_AGENCY_VERKEY), VcxErrorKind::InvalidVerkey, validation::validate_verkey)?; + + validate_optional_config_val(config.get(CONFIG_SDK_TO_REMOTE_DID), VcxErrorKind::InvalidDid, validation::validate_did)?; + validate_optional_config_val(config.get(CONFIG_SDK_TO_REMOTE_VERKEY), VcxErrorKind::InvalidVerkey, validation::validate_verkey)?; + + validate_optional_config_val(config.get(CONFIG_REMOTE_TO_SDK_DID), VcxErrorKind::InvalidDid, validation::validate_did)?; + validate_optional_config_val(config.get(CONFIG_REMOTE_TO_SDK_VERKEY), VcxErrorKind::InvalidVerkey, validation::validate_verkey)?; + + validate_optional_config_val(config.get(CONFIG_AGENCY_ENDPOINT), VcxErrorKind::InvalidUrl, Url::parse)?; + + Ok(error::SUCCESS.code_num) +} + + +pub fn process_agency_config_string(config: &str, do_validation: bool) -> VcxResult { + trace!("process_config_string >>> config {}", config); + + let configuration: Value = serde_json::from_str(config) + .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Cannot parse config: {}", err)))?; + + if let Value::Object(ref map) = configuration { + for (key, value) in map { + if !VALID_AGENCY_CONFIG_KEYS.contains(&key.as_ref()) { + warn!("Agency settings do not recognize setting key {}. Will be ignored.", key); + } else { + match value { + Value::String(value_) => set_config_value(key, &value_), + Value::Bool(value_) => set_config_value(key, &json!(value_).to_string()), + _ => return Err(VcxError::from_msg(VcxErrorKind::InvalidJson, + format!("Invalid agency config value for key {}", key))), + } + } + } + } + + if do_validation { + let setting = AGENCY_SETTINGS.read() + .or(Err(VcxError::from(VcxErrorKind::InvalidConfiguration)))?; + validate_agency_config(&setting.borrow()) + } else { + Ok(error::SUCCESS.code_num) + } +} + + +pub fn get_config_value(key: &str) -> VcxResult { + trace!("get_config_value >>> key: {}", key); + + AGENCY_SETTINGS + .read() + .or(Err(VcxError::from_msg(VcxErrorKind::InvalidConfiguration, "Cannot read AGENCY_SETTINGS")))? + .get(key) + .map(|v| v.to_string()) + .ok_or(VcxError::from_msg(VcxErrorKind::InvalidConfiguration, format!("Cannot read \"{}\" from AGENCY_SETTINGS", key))) +} + +pub fn set_config_value(key: &str, value: &str) { + trace!("set_config_value >>> key: {}, value: {}", key, value); + if !VALID_AGENCY_CONFIG_KEYS.contains(&key) { + warn!("Agency settings do not recognize setting key {}. Will be ignored.", key); + } else { + AGENCY_SETTINGS + .write().unwrap() + .insert(key.to_string(), value.to_string()); + } +} + + +pub fn agency_mocks_enabled() -> bool { + let config = AGENCY_SETTINGS.read().unwrap(); + + match config.get(CONFIG_ENABLE_TEST_MODE) { + None => false, + Some(value) => value == "true" || value == "agency" + } +} + +pub fn agency_decrypted_mocks_enabled() -> bool { + let config = AGENCY_SETTINGS.read().unwrap(); + + match config.get(CONFIG_ENABLE_TEST_MODE) { + None => false, + Some(value) => value == "true" + } +} + diff --git a/libvcx/src/agency_comm/agent_utils.rs b/libvcx/src/agency_comm/agent_utils.rs index 4ad2a0840e..e178ff2d97 100644 --- a/libvcx/src/agency_comm/agent_utils.rs +++ b/libvcx/src/agency_comm/agent_utils.rs @@ -1,16 +1,17 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; -use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::agency_settings::agency_mocks_enabled; use agency_comm::message_type::MessageTypes; +use agency_comm::mocking::AgencyMockDecrypted; +use agency_comm::util::post_u8; use error::prelude::*; use libindy::utils::{anoncreds, wallet}; use libindy::utils::signus::create_and_store_my_did; use libindy::utils::wallet::get_wallet_handle; use settings; -use settings::agency_mocks_enabled; use utils::{constants, error, httpclient}; -use utils::httpclient::AgencyMockDecrypted; use utils::option_util::get_or_default; #[derive(Serialize, Deserialize, Debug)] @@ -175,12 +176,12 @@ pub fn set_config_values(my_config: &Config) { let wallet_name = get_or_default(&my_config.wallet_name, settings::DEFAULT_WALLET_NAME); settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, &my_config.protocol_type.to_string()); - settings::set_config_value(settings::CONFIG_AGENCY_ENDPOINT, &my_config.agency_url); settings::set_config_value(settings::CONFIG_WALLET_NAME, &wallet_name); - settings::set_config_value(settings::CONFIG_AGENCY_DID, &my_config.agency_did); - settings::set_config_value(settings::CONFIG_AGENCY_VERKEY, &my_config.agency_verkey); - settings::set_config_value(settings::CONFIG_REMOTE_TO_SDK_VERKEY, &my_config.agency_verkey); settings::set_config_value(settings::CONFIG_WALLET_KEY, &my_config.wallet_key); + agency_settings::set_config_value(agency_settings::CONFIG_AGENCY_ENDPOINT, &my_config.agency_url); + agency_settings::set_config_value(agency_settings::CONFIG_AGENCY_DID, &my_config.agency_did); + agency_settings::set_config_value(agency_settings::CONFIG_AGENCY_VERKEY, &my_config.agency_verkey); + agency_settings::set_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_VERKEY, &my_config.agency_verkey); settings::set_opt_config_value(settings::CONFIG_WALLET_KEY_DERIVATION, &my_config.wallet_key_derivation); settings::set_opt_config_value(settings::CONFIG_WALLET_TYPE, &my_config.wallet_type); @@ -225,7 +226,7 @@ pub fn configure_wallet(my_config: &Config) -> VcxResult<(String, String, String )?; settings::set_config_value(settings::CONFIG_INSTITUTION_DID, &my_did); - settings::set_config_value(settings::CONFIG_SDK_TO_REMOTE_VERKEY, &my_vk); + agency_settings::set_config_value(agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY, &my_vk); Ok((my_did, my_vk, wallet_name)) } @@ -336,7 +337,7 @@ pub fn connect_v2(my_did: &str, my_vk: &str, agency_did: &str) -> VcxResult<(Str ) }; - settings::set_config_value(settings::CONFIG_REMOTE_TO_SDK_VERKEY, &agency_pw_vk); + agency_settings::set_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_VERKEY, &agency_pw_vk); Ok((agency_pw_did, agency_pw_vk)) } @@ -384,7 +385,7 @@ pub fn update_agent_webhook(webhook_url: &str) -> VcxResult<()> { value: String::from(webhook_url), }; - match settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID) { + match agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_DID) { Ok(to_did) => { update_agent_webhook_v2(&to_did, com_method)?; } @@ -410,7 +411,7 @@ fn update_agent_webhook_v2(to_did: &str, com_method: ComMethod) -> VcxResult<()> pub fn send_message_to_agency(message: &A2AMessage, did: &str) -> VcxResult> { let data = prepare_message_for_agency(message, &did)?; - let response = httpclient::post_u8(&data) + let response = post_u8(&data) .map_err(|err| err.map(VcxErrorKind::InvalidHttpResponse, error::INVALID_HTTP_RESPONSE.message))?; parse_response_from_agency(&response) diff --git a/libvcx/src/agency_comm/create_key.rs b/libvcx/src/agency_comm/create_key.rs index c2813a87d2..0343a9a7a7 100644 --- a/libvcx/src/agency_comm/create_key.rs +++ b/libvcx/src/agency_comm/create_key.rs @@ -1,10 +1,9 @@ -use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, parse_response_from_agency, prepare_message_for_agency}; use agency_comm::message_type::MessageTypes; +use agency_comm::mocking::AgencyMock; +use agency_comm::util::post_u8; use error::prelude::*; -use settings; -use settings::ProtocolTypes; use utils::{constants, httpclient, validation}; -use utils::httpclient::AgencyMock; #[derive(Deserialize, Serialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] @@ -58,13 +57,13 @@ impl CreateKeyBuilder { pub fn send_secure(&self) -> VcxResult<(String, String)> { trace!("CreateKeyMsg::send >>>"); - if settings::agency_mocks_enabled() { + if agency_settings::agency_mocks_enabled() { AgencyMock::set_next_response(constants::CREATE_KEYS_V2_RESPONSE.to_vec()); } let data = self.prepare_request()?; - let response = httpclient::post_u8(&data)?; + let response = post_u8(&data)?; self.parse_response(&response) } @@ -78,7 +77,7 @@ impl CreateKeyBuilder { }) ); - let agency_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; + let agency_did = agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_DID)?; prepare_message_for_agency(&message, &agency_did) } @@ -123,9 +122,9 @@ mod tests { let (my_did, my_vk) = create_and_store_my_did(Some(MY1_SEED), None).unwrap(); let (_agency_did, agency_vk) = create_and_store_my_did(Some(MY3_SEED), None).unwrap(); - settings::set_config_value(settings::CONFIG_AGENCY_VERKEY, &agency_vk); - settings::set_config_value(settings::CONFIG_REMOTE_TO_SDK_VERKEY, &agent_vk); - settings::set_config_value(settings::CONFIG_SDK_TO_REMOTE_VERKEY, &my_vk); + agency_settings::set_config_value(agency_settings::CONFIG_AGENCY_VERKEY, &agency_vk); + agency_settings::set_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_VERKEY, &agent_vk); + agency_settings::set_config_value(agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY, &my_vk); let bytes = create_keys() .for_did(&my_did).unwrap() diff --git a/libvcx/src/agency_comm/get_message.rs b/libvcx/src/agency_comm/get_message.rs index 01b4db2768..7bf555e202 100644 --- a/libvcx/src/agency_comm/get_message.rs +++ b/libvcx/src/agency_comm/get_message.rs @@ -1,7 +1,8 @@ use std::collections::HashMap; -use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, GeneralMessage, get_messages, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency, prepare_message_for_agent, RemoteMessageType}; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, GeneralMessage, get_messages, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency, prepare_message_for_agent, RemoteMessageType}; use agency_comm::message_type::MessageTypes; +use agency_comm::util::post_u8; use aries::handlers::connection::agent_info::AgentInfo; use aries::messages::a2a::A2AMessage as AriesA2AMessage; use aries::utils::encryption_envelope::EncryptionEnvelope; @@ -9,7 +10,6 @@ use error::{VcxError, VcxErrorKind, VcxResult}; use settings; use settings::ProtocolTypes; use utils::{constants, httpclient}; -use utils::httpclient::AgencyMock; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] @@ -127,7 +127,7 @@ impl GetMessagesBuilder { let data = self.prepare_request()?; - let response = httpclient::post_u8(&data)?; + let response = post_u8(&data)?; self.parse_response(response) } @@ -153,9 +153,9 @@ impl GetMessagesBuilder { let data = self.prepare_download_request()?; - let response = httpclient::post_u8(&data)?; + let response = post_u8(&data)?; - if settings::agency_mocks_enabled() && response.len() == 0 { + if agency_settings::agency_mocks_enabled() && response.len() == 0 { return Ok(Vec::new()); } @@ -174,7 +174,7 @@ impl GetMessagesBuilder { self.pairwise_dids.clone())) ); - let agency_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; + let agency_did = agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_DID)?; prepare_message_for_agency(&message, &agency_did) } diff --git a/libvcx/src/agency_comm/mocking.rs b/libvcx/src/agency_comm/mocking.rs new file mode 100644 index 0000000000..4ee686ce0f --- /dev/null +++ b/libvcx/src/agency_comm/mocking.rs @@ -0,0 +1,80 @@ +use std::sync::Mutex; + +use agency_comm::agency_settings; + +lazy_static! { + static ref AGENCY_MOCK: Mutex = Mutex::new(AgencyMock::default()); + static ref AGENCY_MOCK_DECRYPTED_RESPONSES: Mutex = Mutex::new(AgencyMockDecrypted::default()); + static ref AGENCY_MOCK_DECRYPTED_MESSAGES: Mutex = Mutex::new(AgencyMockDecryptedMessages::default()); +} + +#[derive(Default)] +pub struct AgencyMockDecryptedMessages { + messages: Vec +} + +#[derive(Default)] +pub struct AgencyMock { + responses: Vec> +} + +#[derive(Default)] +pub struct AgencyMockDecrypted { + responses: Vec +} + +impl AgencyMock { + pub fn set_next_response(body: Vec) { + if agency_settings::agency_mocks_enabled() { + AGENCY_MOCK.lock().unwrap().responses.push(body); + } + } + + pub fn get_response() -> Vec { + AGENCY_MOCK.lock().unwrap().responses.pop().unwrap_or_default() + } +} + +impl AgencyMockDecrypted { + pub fn set_next_decrypted_response(body: &str) { + if agency_settings::agency_mocks_enabled() { + AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.push(body.into()); + } else { + warn!("Attempting to set mocked decrypted response when mocks are not enabled!"); + } + } + + pub fn get_next_decrypted_response() -> String { + if Self::has_decrypted_mock_responses() { + AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.pop().unwrap() + } else { + debug!("Attempting to obtain decrypted response when none were set, but decrypted messages available - returning empty response..."); + String::new() + } + } + + pub fn has_decrypted_mock_responses() -> bool { + AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.len() > 0 + } + + pub fn set_next_decrypted_message(message: &str) { + if agency_settings::agency_mocks_enabled() { + AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.push(message.into()); + } else { + warn!("Attempting to set mocked decrypted message when mocks are not enabled!"); + } + } + + pub fn get_next_decrypted_message() -> String { + AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.pop().unwrap() + } + + pub fn has_decrypted_mock_messages() -> bool { + AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.len() > 0 + } + + pub fn clear_mocks() { + AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.clear(); + AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.clear(); + } +} \ No newline at end of file diff --git a/libvcx/src/agency_comm/mod.rs b/libvcx/src/agency_comm/mod.rs index 1deaeaf72a..64c3391499 100644 --- a/libvcx/src/agency_comm/mod.rs +++ b/libvcx/src/agency_comm/mod.rs @@ -6,7 +6,6 @@ use serde_json::Value; use ::{log, settings}; use error::prelude::*; use libindy::utils::crypto; -use utils::httpclient::AgencyMockDecrypted; use utils::validation; use self::agent_utils::{ComMethodUpdated, Connect, ConnectResponse, CreateAgent, CreateAgentResponse, SignUp, SignUpResponse, UpdateComMethod}; @@ -16,6 +15,7 @@ use self::message_type::*; use self::update_connection::{DeleteConnectionBuilder, UpdateConnection, UpdateConnectionResponse}; use self::update_message::{UpdateMessageStatusByConnections, UpdateMessageStatusByConnectionsResponse}; use self::update_profile::{UpdateConfigs, UpdateConfigsResponse, UpdateProfileDataBuilder}; +use agency_comm::mocking::AgencyMockDecrypted; pub mod create_key; pub mod get_message; @@ -27,6 +27,9 @@ pub mod message_type; pub mod payload; #[macro_use] pub mod thread; +pub mod agency_settings; +pub mod mocking; +mod util; #[derive(Debug, Serialize)] #[serde(untagged)] @@ -500,8 +503,8 @@ pub fn prepare_message_for_agency(message: &A2AMessage, agency_did: &str) -> Vcx } fn pack_for_agency_v2(message: &A2AMessage, agency_did: &str) -> VcxResult> { - let agent_vk = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_VERKEY)?; - let my_vk = settings::get_config_value(settings::CONFIG_SDK_TO_REMOTE_VERKEY)?; + let agent_vk = agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_VERKEY)?; + let my_vk = agency_settings::get_config_value(agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY)?; let message = ::serde_json::to_string(&message) .map_err(|err| VcxError::from_msg(VcxErrorKind::SerializationError, format!("Cannot serialize A2A message: {}", err)))?; @@ -600,7 +603,7 @@ pub fn bundle_from_u8(data: Vec) -> VcxResult>> { } fn prepare_forward_message(message: Vec, did: &str) -> VcxResult> { - let agency_vk = settings::get_config_value(settings::CONFIG_AGENCY_VERKEY)?; + let agency_vk = agency_settings::get_config_value(agency_settings::CONFIG_AGENCY_VERKEY)?; let message = ForwardV2::new(did.to_string(), message)?; @@ -636,7 +639,7 @@ fn prepare_message_for_agent(messages: Vec, pw_vk: &str, agent_did: /* forward to did */ let message = ForwardV2::new(agent_did.to_owned(), message)?; - let to_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; + let to_did = agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_DID)?; pack_for_agency_v2(&message, &to_did) } diff --git a/libvcx/src/agency_comm/update_connection.rs b/libvcx/src/agency_comm/update_connection.rs index 61ef61bc01..312bc97443 100644 --- a/libvcx/src/agency_comm/update_connection.rs +++ b/libvcx/src/agency_comm/update_connection.rs @@ -3,6 +3,7 @@ use serde_json::Value; use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, delete_connection, GeneralMessage, parse_response_from_agency, prepare_message_for_agent}; use agency_comm::message_type::MessageTypes; +use agency_comm::util::post_u8; use error::prelude::*; use settings; use utils::httpclient; @@ -81,7 +82,7 @@ impl DeleteConnectionBuilder { let data = self.prepare_request()?; - let response = httpclient::post_u8(&data)?; + let response = post_u8(&data)?; self.parse_response(&response) } diff --git a/libvcx/src/agency_comm/update_message.rs b/libvcx/src/agency_comm/update_message.rs index 90fcf1de2c..143f395ac3 100644 --- a/libvcx/src/agency_comm/update_message.rs +++ b/libvcx/src/agency_comm/update_message.rs @@ -1,9 +1,10 @@ -use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency}; use agency_comm::message_type::MessageTypes; +use agency_comm::mocking::AgencyMock; +use agency_comm::util::post_u8; use error::{VcxError, VcxErrorKind, VcxResult}; use settings; use utils::{constants, httpclient}; -use utils::httpclient::AgencyMock; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] @@ -65,7 +66,7 @@ impl UpdateMessageStatusByConnectionsBuilder { let data = self.prepare_request()?; - let response = httpclient::post_u8(&data)?; + let response = post_u8(&data)?; self.parse_response(&response) } @@ -81,7 +82,7 @@ impl UpdateMessageStatusByConnectionsBuilder { ) ); - let agency_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; + let agency_did = agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_DID)?; prepare_message_for_agency(&message, &agency_did) } @@ -114,7 +115,7 @@ pub fn update_agency_messages(status_code: &str, msg_json: &str) -> VcxResult<() pub fn update_messages(status_code: MessageStatusCode, uids_by_conns: Vec) -> VcxResult<()> { trace!("update_messages >>> "); - if settings::agency_mocks_enabled() { + if agency_settings::agency_mocks_enabled() { trace!("update_messages >>> agency mocks enabled, returning empty response"); return Ok(()); }; @@ -134,10 +135,10 @@ mod tests { use agency_comm::get_message::download_messages_noauth; use agency_comm::MessageStatusCode; + use agency_comm::mocking::AgencyMockDecrypted; use agency_comm::update_message::{UIDsByConn, update_agency_messages, UpdateMessageStatusByConnectionsBuilder}; use connection::send_generic_message; use utils::devsetup::{SetupLibraryAgencyV2, SetupMocks}; - use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_agency::AGENCY_MSG_STATUS_UPDATED_BY_CONNS; #[test] diff --git a/libvcx/src/agency_comm/update_profile.rs b/libvcx/src/agency_comm/update_profile.rs index 955c6b055d..7d95c3810c 100644 --- a/libvcx/src/agency_comm/update_profile.rs +++ b/libvcx/src/agency_comm/update_profile.rs @@ -1,10 +1,11 @@ -use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, parse_response_from_agency, prepare_message_for_agency}; +use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, parse_response_from_agency, prepare_message_for_agency}; use agency_comm::message_type::MessageTypes; +use agency_comm::mocking::AgencyMock; +use agency_comm::util::post_u8; use error::{VcxError, VcxErrorKind, VcxResult}; use settings; use utils::{httpclient, validation}; use utils::constants::UPDATE_PROFILE_RESPONSE; -use utils::httpclient::AgencyMock; #[derive(Debug)] pub struct UpdateProfileDataBuilder { @@ -86,7 +87,7 @@ impl UpdateProfileDataBuilder { let data = self.prepare_request()?; - let response = httpclient::post_u8(&data)?; + let response = post_u8(&data)?; self.parse_response(response) } @@ -101,7 +102,7 @@ impl UpdateProfileDataBuilder { ) ); - let agency_did = settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID)?; + let agency_did = agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_DID)?; prepare_message_for_agency(&message, &agency_did) } @@ -118,11 +119,11 @@ impl UpdateProfileDataBuilder { #[cfg(test)] mod tests { - use agency_comm::update_data; + use agency_comm::{agency_settings, update_data}; + use agency_comm::mocking::AgencyMockDecrypted; use libindy::utils::signus::create_and_store_my_did; use utils::constants::{MY1_SEED, MY2_SEED, MY3_SEED}; use utils::devsetup::*; - use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_agency::AGENCY_CONFIGS_UPDATED; use super::*; @@ -151,9 +152,9 @@ mod tests { let (_my_did, my_vk) = create_and_store_my_did(Some(MY1_SEED), None).unwrap(); let (_agency_did, agency_vk) = create_and_store_my_did(Some(MY3_SEED), None).unwrap(); - settings::set_config_value(settings::CONFIG_AGENCY_VERKEY, &agency_vk); - settings::set_config_value(settings::CONFIG_REMOTE_TO_SDK_VERKEY, &agent_vk); - settings::set_config_value(settings::CONFIG_SDK_TO_REMOTE_VERKEY, &my_vk); + agency_settings::set_config_value(agency_settings::CONFIG_AGENCY_VERKEY, &agency_vk); + agency_settings::set_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_VERKEY, &agent_vk); + agency_settings::set_config_value(agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY, &my_vk); let msg = update_data() .to(agent_did.as_ref()).unwrap() diff --git a/libvcx/src/agency_comm/util.rs b/libvcx/src/agency_comm/util.rs new file mode 100644 index 0000000000..27130bb3fb --- /dev/null +++ b/libvcx/src/agency_comm/util.rs @@ -0,0 +1,9 @@ +use agency_comm::agency_settings; +use error::VcxResult; +use utils; + +//Todo: change this RC to a u32 +pub fn post_u8(body_content: &Vec) -> VcxResult> { + let endpoint = format!("{}/agency/msg", agency_settings::get_config_value(agency_settings::CONFIG_AGENCY_ENDPOINT)?); + utils::httpclient::post_message(body_content, &endpoint) +} diff --git a/libvcx/src/api/connection.rs b/libvcx/src/api/connection.rs index ef5aa71aae..e981c644bd 100644 --- a/libvcx/src/api/connection.rs +++ b/libvcx/src/api/connection.rs @@ -3,12 +3,12 @@ use std::ptr; use indy_sys::CommandHandle; use libc::c_char; +use aries::messages::a2a::A2AMessage; use connection::*; use error::prelude::*; use utils::cstring::CStringUtils; use utils::error; use utils::threadpool::spawn; -use aries::messages::a2a::A2AMessage; /* Tha API represents a pairwise connection with another identity owner. @@ -1205,18 +1205,19 @@ mod tests { use std::ffi::CString; use std::ptr; + use serde_json::Value; + + use agency_comm::mocking::AgencyMockDecrypted; use api::{return_types_u32, VcxStateType}; use connection::tests::{build_test_connection_inviter_invited, build_test_connection_inviter_null, build_test_connection_inviter_requested}; use utils::constants::{DELETE_CONNECTION_DECRYPTED_RESPONSE, GET_MESSAGES_DECRYPTED_RESPONSE}; use utils::devsetup::*; use utils::error; use utils::error::SUCCESS; - use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_connection::{ARIES_CONNECTION_ACK, ARIES_CONNECTION_REQUEST, DEFAULT_SERIALIZED_CONNECTION}; use utils::timeout::TimeoutUtils; use super::*; - use serde_json::Value; #[test] #[cfg(feature = "general_test")] diff --git a/libvcx/src/api/credential.rs b/libvcx/src/api/credential.rs index ed1982117b..c90789bfc2 100644 --- a/libvcx/src/api/credential.rs +++ b/libvcx/src/api/credential.rs @@ -238,8 +238,8 @@ pub extern fn vcx_delete_credential(command_handle: CommandHandle, #[no_mangle] pub extern fn vcx_credential_get_attributes(command_handle: CommandHandle, - credential_handle: u32, - cb: Option) -> u32 { + credential_handle: u32, + cb: Option) -> u32 { info!("vcx_credential_get_attributes >>> credential_handle: {:?}", credential_handle); check_useful_c_callback!(cb, VcxErrorKind::InvalidOption); @@ -274,8 +274,8 @@ pub extern fn vcx_credential_get_attributes(command_handle: CommandHandle, #[no_mangle] pub extern fn vcx_credential_get_attachment(command_handle: CommandHandle, - credential_handle: u32, - cb: Option) -> u32 { + credential_handle: u32, + cb: Option) -> u32 { info!("vcx_credential_get_attachment >>> credential_handle: {:?}", credential_handle); check_useful_c_callback!(cb, VcxErrorKind::InvalidOption); @@ -998,15 +998,13 @@ mod tests { use serde_json::Value; use ::credential::tests::BAD_CREDENTIAL_OFFER; + use agency_comm::mocking::AgencyMockDecrypted; use api::return_types_u32; use api::VcxStateType; use utils::constants::{GET_MESSAGES_DECRYPTED_RESPONSE, V3_OBJECT_SERIALIZE_VERSION}; - use utils::devsetup::*; - use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_credex::{ARIES_CREDENTIAL_OFFER, ARIES_CREDENTIAL_REQUEST, ARIES_CREDENTIAL_RESPONSE, CREDENTIAL_SM_FINISHED, CREDENTIAL_SM_OFFER_RECEIVED}; use utils::timeout::TimeoutUtils; - use super::*; diff --git a/libvcx/src/api/credential_def.rs b/libvcx/src/api/credential_def.rs index 3860de65d0..66dc4a5b72 100644 --- a/libvcx/src/api/credential_def.rs +++ b/libvcx/src/api/credential_def.rs @@ -841,7 +841,6 @@ mod tests { fn test_vcx_prepare_cred_def_success() { let _setup = SetupMocks::init(); - settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); let cb = return_types_u32::Return_U32_U32_STR_STR_STR::new().unwrap(); assert_eq!(vcx_credentialdef_prepare_for_endorser(cb.command_handle, CString::new("Test Source ID").unwrap().into_raw(), @@ -866,7 +865,6 @@ mod tests { fn test_vcx_prepare_cred_def_with_revocation_success() { let _setup = SetupMocks::init(); - settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); let cb = return_types_u32::Return_U32_U32_STR_STR_STR::new().unwrap(); assert_eq!(vcx_credentialdef_prepare_for_endorser(cb.command_handle, CString::new("Test Source ID").unwrap().into_raw(), diff --git a/libvcx/src/api/disclosed_proof.rs b/libvcx/src/api/disclosed_proof.rs index 4b6d5d8e3d..e68070297e 100644 --- a/libvcx/src/api/disclosed_proof.rs +++ b/libvcx/src/api/disclosed_proof.rs @@ -453,8 +453,8 @@ pub extern fn vcx_disclosed_proof_get_state(command_handle: CommandHandle, #[no_mangle] pub extern fn vcx_disclosed_proof_get_proof_request_attachment(command_handle: CommandHandle, - proof_handle: u32, - cb: Option) -> u32 { + proof_handle: u32, + cb: Option) -> u32 { info!("vcx_disclosed_proof_get_attachment >>>"); check_useful_c_callback!(cb, VcxErrorKind::InvalidOption); @@ -538,19 +538,19 @@ pub extern fn vcx_disclosed_proof_update_state(command_handle: CommandHandle, #[no_mangle] pub extern fn vcx_v2_disclosed_proof_update_state(command_handle: CommandHandle, - proof_handle: u32, - connection_handle: u32, - cb: Option) -> u32 { + proof_handle: u32, + connection_handle: u32, + cb: Option) -> u32 { info!("vcx_v2_disclosed_proof_update_state >>>"); check_useful_c_callback!(cb, VcxErrorKind::InvalidOption); if !disclosed_proof::is_valid_handle(proof_handle) { - return VcxError::from(VcxErrorKind::InvalidDisclosedProofHandle).into() + return VcxError::from(VcxErrorKind::InvalidDisclosedProofHandle).into(); } if !connection::is_valid_handle(connection_handle) { - return VcxError::from(VcxErrorKind::InvalidConnectionHandle).into() + return VcxError::from(VcxErrorKind::InvalidConnectionHandle).into(); } let source_id = disclosed_proof::get_source_id(proof_handle).unwrap_or_default(); @@ -994,23 +994,21 @@ mod tests { use serde_json::Value; + use agency_comm::mocking::AgencyMockDecrypted; use api::return_types_u32; use api::VcxStateType; - use utils::constants::{GET_MESSAGES_DECRYPTED_RESPONSE, V3_OBJECT_SERIALIZE_VERSION, CREDS_FROM_PROOF_REQ}; + use utils::constants::{CREDS_FROM_PROOF_REQ, GET_MESSAGES_DECRYPTED_RESPONSE, V3_OBJECT_SERIALIZE_VERSION}; use utils::devsetup::*; + use utils::mockdata::mock_settings::MockBuilder; + use utils::mockdata::mockdata_credex::ARIES_CREDENTIAL_REQUEST; + use utils::mockdata::mockdata_proof::ARIES_PROOF_REQUEST_PRESENTATION; use utils::timeout::TimeoutUtils; use super::*; - use utils::httpclient::AgencyMockDecrypted; - use utils::mockdata::mockdata_proof::{ARIES_PROOF_REQUEST_PRESENTATION}; - use utils::mockdata::mockdata_credex::ARIES_CREDENTIAL_REQUEST; - use utils::mockdata::mock_settings::MockBuilder; pub const BAD_PROOF_REQUEST: &str = r#"{"version": "0.1","to_did": "LtMgSjtFcyPwenK9SHCyb8","from_did": "LtMgSjtFcyPwenK9SHCyb8","claim": {"account_num": ["8BEaoLf8TBmK4BUyX8WWnA"],"name_on_account": ["Alice"]},"schema_seq_no": 48,"issuer_did": "Pd4fnFtRBcMKRVC2go5w3j","claim_name": "Account Certificate","claim_id": "3675417066","msg_ref_id": "ymy5nth"}"#; fn _vcx_disclosed_proof_create_with_request_c_closure(proof_request: &str) -> Result { - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); - let cb = return_types_u32::Return_U32_U32::new().unwrap(); let rc = vcx_disclosed_proof_create_with_request(cb.command_handle, CString::new("test_create").unwrap().into_raw(), @@ -1026,7 +1024,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_vcx_proof_create_with_request_success() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); assert!(handle > 0); @@ -1036,7 +1033,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_vcx_proof_create_with_request() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let err = _vcx_disclosed_proof_create_with_request_c_closure(BAD_PROOF_REQUEST).unwrap_err(); assert_eq!(err, error::INVALID_JSON.code_num); @@ -1046,7 +1042,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_create_with_msgid() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let cxn = ::connection::tests::build_test_connection_inviter_requested(); @@ -1075,7 +1070,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_vcx_disclosed_proof_serialize_and_deserialize() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); @@ -1102,7 +1096,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_generate_msg() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); let cb = return_types_u32::Return_U32::new().unwrap(); @@ -1123,7 +1116,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_vcx_send_proof() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle_proof = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); assert_eq!(disclosed_proof::get_state(handle_proof).unwrap(), VcxStateType::VcxStateRequestReceived as u32); @@ -1139,7 +1131,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_vcx_reject_proof_request() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); assert_eq!(disclosed_proof::get_state(handle).unwrap(), VcxStateType::VcxStateRequestReceived as u32); @@ -1156,7 +1147,6 @@ mod tests { #[cfg(feature = "general_test")] // todo: generate_reject_proof_msg is not implemented for aries fn test_vcx_get_reject_msg() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); @@ -1173,7 +1163,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_vcx_proof_get_requests() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let cxn = ::connection::tests::build_test_connection_inviter_requested(); @@ -1189,7 +1178,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_vcx_proof_get_state() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); @@ -1205,7 +1193,6 @@ mod tests { let _setup = SetupMocks::init(); let _mock_builder = MockBuilder::init(). set_mock_creds_retrieved_for_proof_request(CREDS_FROM_PROOF_REQ); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let proof_handle = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); @@ -1221,7 +1208,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_vcx_disclosed_proof_generate_proof() { let _setup = SetupMocks::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle = _vcx_disclosed_proof_create_with_request_c_closure(ARIES_PROOF_REQUEST_PRESENTATION).unwrap(); diff --git a/libvcx/src/api/filters.rs b/libvcx/src/api/filters.rs index b80fd3e7b1..47834f7828 100644 --- a/libvcx/src/api/filters.rs +++ b/libvcx/src/api/filters.rs @@ -1,13 +1,13 @@ use std::ptr; -use error::prelude::*; -use utils::error; use indy_sys::CommandHandle; use libc::c_char; + +use error::prelude::*; use filters; -use utils::threadpool::spawn; use utils::cstring::CStringUtils; - +use utils::error; +use utils::threadpool::spawn; /// Filters proof requests based on name selected by verifier when creating the request. /// @@ -40,7 +40,7 @@ pub extern fn vcx_filter_proof_requests_by_name(command_handle: CommandHandle, trace!("vcx_filter_proof_requests_by_name_cb(command_handle: {}, requests: {}, rc: {}, requests: {})", command_handle, requests, error::SUCCESS.message, x); let x = CStringUtils::string_to_cstring(x); - cb(command_handle,error::SUCCESS.code_num, x.as_ptr()); + cb(command_handle, error::SUCCESS.code_num, x.as_ptr()); } Err(err) => { error!("vcx_filter_proof_requests_by_name_cb(command_handle: {}, rc: {}, msg: {})", @@ -58,18 +58,20 @@ pub extern fn vcx_filter_proof_requests_by_name(command_handle: CommandHandle, #[cfg(test)] mod tests { - use super::*; use std::ffi::CString; - use connection; + + use agency_comm::mocking::AgencyMockDecrypted; use api::return_types_u32; + use connection; + use disclosed_proof::get_proof_request_messages; use utils::{ constants::GET_MESSAGES_DECRYPTED_RESPONSE, + devsetup::*, mockdata::mockdata_proof, - httpclient::AgencyMockDecrypted, timeout::TimeoutUtils, - devsetup::*, }; - use disclosed_proof::get_proof_request_messages; + + use super::*; #[test] #[cfg(feature = "general_test")] diff --git a/libvcx/src/api/issuer_credential.rs b/libvcx/src/api/issuer_credential.rs index 4a5c6dd8be..ebfb27e78b 100644 --- a/libvcx/src/api/issuer_credential.rs +++ b/libvcx/src/api/issuer_credential.rs @@ -843,12 +843,12 @@ pub mod tests { use std::ffi::CString; use std::ptr; + use agency_comm::mocking::AgencyMockDecrypted; use api::{return_types_u32, VcxStateType}; use settings; - use utils::get_temp_dir_path; use utils::constants::*; use utils::devsetup::*; - use utils::httpclient::AgencyMockDecrypted; + use utils::get_temp_dir_path; use utils::mockdata::mockdata_credex::{ARIES_CREDENTIAL_REQUEST, CREDENTIAL_ISSUER_SM_FINISHED}; use utils::timeout::TimeoutUtils; diff --git a/libvcx/src/api/proof.rs b/libvcx/src/api/proof.rs index 5440f42d12..d52225845e 100644 --- a/libvcx/src/api/proof.rs +++ b/libvcx/src/api/proof.rs @@ -188,7 +188,7 @@ pub extern fn vcx_proof_update_state(command_handle: CommandHandle, return VcxError::from(VcxErrorKind::InvalidProofHandle).into(); } - spawn(move|| { + spawn(move || { match proof::update_state(proof_handle, None, None) { Ok(x) => { trace!("vcx_proof_update_state_cb(command_handle: {}, rc: {}, proof_handle: {}, state: {}) source_id: {}", @@ -197,7 +197,7 @@ pub extern fn vcx_proof_update_state(command_handle: CommandHandle, } Err(x) => { error!("vcx_proof_update_state_cb(command_handle: {}, rc: {}, proof_handle: {}, state: {}) source_id: {}", - command_handle, x, proof_handle, 0, source_id); + command_handle, x, proof_handle, 0, source_id); cb(command_handle, x.into(), 0); } } @@ -210,35 +210,35 @@ pub extern fn vcx_proof_update_state(command_handle: CommandHandle, #[no_mangle] pub extern fn vcx_v2_proof_update_state(command_handle: CommandHandle, - proof_handle: u32, - connection_handle: u32, - cb: Option) -> u32 { + proof_handle: u32, + connection_handle: u32, + cb: Option) -> u32 { info!("vcx_v2_proof_update_state >>>"); check_useful_c_callback!(cb, VcxErrorKind::InvalidOption); let source_id = proof::get_source_id(proof_handle).unwrap_or_default(); trace!("vcx_v2_proof_update_state(command_handle: {}, proof_handle: {}, connection_handle: {}) source_id: {}", - command_handle, proof_handle, connection_handle, source_id); + command_handle, proof_handle, connection_handle, source_id); if !proof::is_valid_handle(proof_handle) { - return VcxError::from(VcxErrorKind::InvalidProofHandle).into() + return VcxError::from(VcxErrorKind::InvalidProofHandle).into(); } if !connection::is_valid_handle(connection_handle) { - return VcxError::from(VcxErrorKind::InvalidConnectionHandle).into() + return VcxError::from(VcxErrorKind::InvalidConnectionHandle).into(); } - spawn(move|| { + spawn(move || { match proof::update_state(proof_handle, None, Some(connection_handle)) { Ok(x) => { trace!("vcx_v2_proof_update_state_cb(command_handle: {}, rc: {}, proof_handle: {}, state: {}) source_id: {}", - command_handle, error::SUCCESS.message, proof_handle, x, source_id); + command_handle, error::SUCCESS.message, proof_handle, x, source_id); cb(command_handle, error::SUCCESS.code_num, x); - }, + } Err(x) => { error!("vcx_v2_proof_update_state_cb(command_handle: {}, rc: {}, proof_handle: {}, state: {}) source_id: {}", - command_handle, x, proof_handle, 0, source_id); + command_handle, x, proof_handle, 0, source_id); cb(command_handle, x.into(), 0); } } @@ -285,7 +285,7 @@ pub extern fn vcx_proof_update_state_with_message(command_handle: CommandHandle, return VcxError::from(VcxErrorKind::InvalidProofHandle).into(); } - spawn(move|| { + spawn(move || { match proof::update_state(proof_handle, Some(&message), None) { Ok(x) => { trace!("vcx_proof_update_state_with_message_cb(command_handle: {}, rc: {}, proof_handle: {}, state: {}) source_id: {}", @@ -689,16 +689,14 @@ mod tests { use ::{proof, settings}; use api::{ProofStateType, return_types_u32, VcxStateType}; - + use connection::tests::build_test_connection_inviter_requested; use utils::constants::*; use utils::devsetup::*; - + use utils::mockdata::mock_settings::MockBuilder; + use utils::mockdata::mockdata_proof; use utils::timeout::TimeoutUtils; use super::*; - use connection::tests::build_test_connection_inviter_requested; - use utils::mockdata::mockdata_proof; - use utils::mockdata::mock_settings::MockBuilder; static DEFAULT_PROOF_NAME: &'static str = "PROOF_NAME"; @@ -807,7 +805,6 @@ mod tests { let _setup = SetupMocks::init(); let _mock_builder = MockBuilder::init(). set_mock_result_for_validate_indy_proof(Ok(true)); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let proof_handle = create_proof_util().unwrap(); diff --git a/libvcx/src/api/schema.rs b/libvcx/src/api/schema.rs index 87ed8d43b2..acc17f0b51 100644 --- a/libvcx/src/api/schema.rs +++ b/libvcx/src/api/schema.rs @@ -655,7 +655,6 @@ mod tests { fn test_vcx_schema_get_attrs() { let _setup = SetupMocks::init(); - settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); let cb = return_types_u32::Return_U32_U32_STR::new().unwrap(); let data = r#"["height","name","sex","age"]"#; assert_eq!(vcx_schema_get_attributes(cb.command_handle, @@ -715,7 +714,6 @@ mod tests { fn test_vcx_prepare_schema_success() { let _setup = SetupMocks::init(); - settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); let cb = return_types_u32::Return_U32_U32_STR::new().unwrap(); assert_eq!(vcx_schema_prepare_for_endorser(cb.command_handle, CString::new("Test Source ID").unwrap().into_raw(), diff --git a/libvcx/src/api/utils.rs b/libvcx/src/api/utils.rs index 20ca271181..ccc425cb91 100644 --- a/libvcx/src/api/utils.rs +++ b/libvcx/src/api/utils.rs @@ -5,15 +5,15 @@ use indy_sys::CommandHandle; use libc::c_char; use serde_json; -use error::prelude::*; use agency_comm; +use agency_comm::get_message::{parse_connection_handles, parse_status_codes}; +use agency_comm::mocking::AgencyMock; use connection; -use agency_comm::get_message::{parse_status_codes, parse_connection_handles}; +use error::prelude::*; +use libindy::utils::payments; use utils::constants::*; use utils::cstring::CStringUtils; use utils::error; -use utils::httpclient::AgencyMock; -use libindy::utils::payments; use utils::threadpool::spawn; #[derive(Deserialize, Debug, Clone)] @@ -366,10 +366,10 @@ pub extern fn vcx_messages_download(command_handle: CommandHandle, #[no_mangle] pub extern fn vcx_v2_messages_download(command_handle: CommandHandle, - conn_handles: *const c_char, - message_statuses: *const c_char, - uids: *const c_char, - cb: Option) -> u32 { + conn_handles: *const c_char, + message_statuses: *const c_char, + uids: *const c_char, + cb: Option) -> u32 { info!("vcx_v2_messages_download >>>"); check_useful_c_callback!(cb, VcxErrorKind::InvalidOption); @@ -380,7 +380,7 @@ pub extern fn vcx_v2_messages_download(command_handle: CommandHandle, let v = v.iter().map(|s| s.to_string()).collect::>(); v.to_owned() } else { - return VcxError::from_msg(VcxErrorKind::InvalidJson, "List of connection handles can't be null").into() + return VcxError::from_msg(VcxErrorKind::InvalidJson, "List of connection handles can't be null").into(); }; let conn_handles = match parse_connection_handles(conn_handles) { @@ -619,10 +619,10 @@ pub extern fn vcx_endorse_transaction(command_handle: CommandHandle, mod tests { use std::ffi::CString; + use agency_comm::mocking::AgencyMockDecrypted; use api::return_types_u32; use utils::constants; use utils::devsetup::*; - use utils::httpclient::AgencyMockDecrypted; use utils::timeout::TimeoutUtils; use super::*; diff --git a/libvcx/src/api/vcx.rs b/libvcx/src/api/vcx.rs index b98f648492..761ecfee04 100644 --- a/libvcx/src/api/vcx.rs +++ b/libvcx/src/api/vcx.rs @@ -4,14 +4,15 @@ use indy::{CommandHandle, INVALID_WALLET_HANDLE}; use indy_sys::{INVALID_POOL_HANDLE, WalletHandle}; use libc::c_char; +use agency_comm::agency_settings; use error::prelude::*; use init::{init_core, open_as_main_wallet, open_pool}; -use settings; -use utils::cstring::CStringUtils; -use utils::error; use libindy::utils::{ledger, pool, wallet}; use libindy::utils::pool::is_pool_open; use libindy::utils::wallet::{close_main_wallet, get_wallet_handle, set_wallet_handle}; +use settings; +use utils::cstring::CStringUtils; +use utils::error; use utils::threadpool::spawn; use utils::version_constants; @@ -44,7 +45,9 @@ pub extern fn vcx_init_with_config(command_handle: CommandHandle, if config == "ENABLE_TEST_MODE" { settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); settings::set_testing_defaults(); + agency_settings::set_testing_defaults_agency(); warn!("Initialized with ENABLE_TEST_MODE. Using settings: {:?}", settings::settings_as_string()); } else { match settings::process_config_string(&config, true) { @@ -220,7 +223,9 @@ pub extern fn vcx_init(command_handle: CommandHandle, if config_path == "ENABLE_TEST_MODE" { settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); settings::set_testing_defaults(); + agency_settings::set_testing_defaults_agency(); warn!("vcx_init:: Initialized with ENABLE_TEST_MODE. Using settings: {:?}", settings::settings_as_string()); } else { match settings::process_config_file(&config_path) { @@ -351,7 +356,9 @@ pub extern fn vcx_init_minimal(config: *const c_char) -> u32 { if config == "ENABLE_TEST_MODE" { settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); settings::set_testing_defaults(); + agency_settings::set_testing_defaults_agency(); } else { match settings::process_config_string(&config, false) { Err(e) => { @@ -672,25 +679,26 @@ mod tests { #[cfg(feature = "pool_tests")] use indy_sys::INVALID_POOL_HANDLE; + use agency_comm::agency_settings; use api::return_types_u32; use api::VcxStateType; use api::wallet::{vcx_wallet_add_record, vcx_wallet_get_record}; use api::wallet::tests::_test_add_and_get_wallet_record; - use utils::devsetup::*; - #[cfg(any(feature = "agency", feature = "pool_tests"))] - use utils::get_temp_dir_path; - use libindy::utils::pool::{reset_pool_handle, get_pool_handle}; + use libindy::utils::pool::{get_pool_handle, reset_pool_handle}; use libindy::utils::pool::tests::create_tmp_genesis_txn_file; #[cfg(feature = "pool_tests")] use libindy::utils::pool::tests::delete_test_pool; use libindy::utils::wallet::{delete_wallet, import}; #[cfg(feature = "pool_tests")] use libindy::utils::wallet::get_wallet_handle; + use libindy::utils::wallet::tests::create_main_wallet_and_its_backup; + use utils::devsetup::*; + #[cfg(any(feature = "agency", feature = "pool_tests"))] + use utils::get_temp_dir_path; use utils::mockdata::mockdata_connection; use utils::timeout::TimeoutUtils; use super::*; - use libindy::utils::wallet::tests::create_main_wallet_and_its_backup; #[cfg(any(feature = "agency", feature = "pool_tests"))] fn config() -> String { @@ -710,7 +718,7 @@ mod tests { fn _vcx_init_c_closure(path: &str) -> Result<(), u32> { let cb = return_types_u32::Return_U32::new().unwrap(); - settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "agency"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "agency"); let rc = vcx_init(cb.command_handle, CString::new(path.to_string()).unwrap().into_raw(), Some(cb.get_callback())); @@ -723,7 +731,7 @@ mod tests { fn _vcx_init_with_config_c_closure(config: &str) -> Result<(), u32> { let cb = return_types_u32::Return_U32::new().unwrap(); - settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "agency"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "agency"); let rc = vcx_init_with_config(cb.command_handle, CString::new(config.to_string()).unwrap().into_raw(), Some(cb.get_callback())); @@ -1019,7 +1027,6 @@ mod tests { #[cfg(feature = "general_test")] fn test_shutdown() { let _setup = SetupMocks::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let data = r#"["name","male"]"#; let connection = ::connection::tests::build_test_connection_inviter_invited(); @@ -1192,17 +1199,17 @@ mod tests { #[cfg(feature = "pool_tests")] fn get_settings() -> String { json!({ - settings::CONFIG_AGENCY_DID: settings::get_config_value(settings::CONFIG_AGENCY_DID).unwrap(), - settings::CONFIG_AGENCY_VERKEY: settings::get_config_value(settings::CONFIG_AGENCY_VERKEY).unwrap(), - settings::CONFIG_AGENCY_ENDPOINT: settings::get_config_value(settings::CONFIG_AGENCY_ENDPOINT).unwrap(), - settings::CONFIG_REMOTE_TO_SDK_DID: settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_DID).unwrap(), - settings::CONFIG_REMOTE_TO_SDK_VERKEY: settings::get_config_value(settings::CONFIG_REMOTE_TO_SDK_VERKEY).unwrap(), - settings::CONFIG_SDK_TO_REMOTE_DID: settings::get_config_value(settings::CONFIG_SDK_TO_REMOTE_DID).unwrap(), - settings::CONFIG_SDK_TO_REMOTE_VERKEY: settings::get_config_value(settings::CONFIG_SDK_TO_REMOTE_VERKEY).unwrap(), - settings::CONFIG_INSTITUTION_NAME: settings::get_config_value(settings::CONFIG_INSTITUTION_NAME).unwrap(), - settings::CONFIG_INSTITUTION_DID: settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(), - settings::CONFIG_INSTITUTION_LOGO_URL: settings::get_config_value(settings::CONFIG_INSTITUTION_LOGO_URL).unwrap(), - settings::CONFIG_PAYMENT_METHOD: settings::get_config_value(settings::CONFIG_PAYMENT_METHOD).unwrap() + agency_settings::CONFIG_AGENCY_DID: agency_settings::get_config_value(agency_settings::CONFIG_AGENCY_DID).unwrap(), + agency_settings::CONFIG_AGENCY_VERKEY: agency_settings::get_config_value(agency_settings::CONFIG_AGENCY_VERKEY).unwrap(), + agency_settings::CONFIG_AGENCY_ENDPOINT: agency_settings::get_config_value(agency_settings::CONFIG_AGENCY_ENDPOINT).unwrap(), + agency_settings::CONFIG_REMOTE_TO_SDK_DID: agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_DID).unwrap(), + agency_settings::CONFIG_REMOTE_TO_SDK_VERKEY: agency_settings::get_config_value(agency_settings::CONFIG_REMOTE_TO_SDK_VERKEY).unwrap(), + agency_settings::CONFIG_SDK_TO_REMOTE_DID: agency_settings::get_config_value(agency_settings::CONFIG_SDK_TO_REMOTE_DID).unwrap(), + agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY: agency_settings::get_config_value(agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY).unwrap(), + settings::CONFIG_INSTITUTION_NAME: settings::get_config_value(settings::CONFIG_INSTITUTION_NAME).unwrap(), + settings::CONFIG_INSTITUTION_DID: settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(), + settings::CONFIG_INSTITUTION_LOGO_URL: settings::get_config_value(settings::CONFIG_INSTITUTION_LOGO_URL).unwrap(), + settings::CONFIG_PAYMENT_METHOD: settings::get_config_value(settings::CONFIG_PAYMENT_METHOD).unwrap() }).to_string() } diff --git a/libvcx/src/aries/handlers/connection/agent_info.rs b/libvcx/src/aries/handlers/connection/agent_info.rs index 0a1e87043d..68798a29bc 100644 --- a/libvcx/src/aries/handlers/connection/agent_info.rs +++ b/libvcx/src/aries/handlers/connection/agent_info.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use agency_comm::get_message::{get_connection_messages, Message}; -use agency_comm::MessageStatusCode; +use agency_comm::{MessageStatusCode, agency_settings}; use agency_comm::update_connection::send_delete_connection_message; use agency_comm::update_message::{UIDsByConn, update_messages as update_messages_status}; use aries::messages::a2a::A2AMessage; @@ -66,12 +66,12 @@ impl AgentInfo { Builds one's agency's URL endpoint */ pub fn agency_endpoint(&self) -> VcxResult { - settings::get_config_value(settings::CONFIG_AGENCY_ENDPOINT) + agency_settings::get_config_value(agency_settings::CONFIG_AGENCY_ENDPOINT) .map(|str| format!("{}/agency/msg", str)) } pub fn routing_keys(&self) -> VcxResult> { - let agency_vk = settings::get_config_value(settings::CONFIG_AGENCY_VERKEY)?; + let agency_vk = agency_settings::get_config_value(agency_settings::CONFIG_AGENCY_VERKEY)?; Ok(vec![self.agent_vk.to_string(), agency_vk]) } diff --git a/libvcx/src/aries/handlers/connection/mod.rs b/libvcx/src/aries/handlers/connection/mod.rs index b141309b95..22b28e53a1 100644 --- a/libvcx/src/aries/handlers/connection/mod.rs +++ b/libvcx/src/aries/handlers/connection/mod.rs @@ -17,7 +17,6 @@ pub mod tests { fn _setup() { let _setup = SetupEmpty::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); } fn _source_id() -> &'static str { diff --git a/libvcx/src/aries/handlers/issuance/issuer/utils.rs b/libvcx/src/aries/handlers/issuance/issuer/utils.rs index 28dd2f947b..ffbf7b8092 100644 --- a/libvcx/src/aries/handlers/issuance/issuer/utils.rs +++ b/libvcx/src/aries/handlers/issuance/issuer/utils.rs @@ -89,7 +89,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_encode_with_several_attributes_success() { let _setup = SetupDefaults::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let expected = json!({ "address2": { @@ -131,7 +130,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_encode_with_one_attribute_success() { let _setup = SetupDefaults::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let expected = json!({ "address2": { @@ -154,7 +152,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_encode_with_new_format_several_attributes_success() { let _setup = SetupDefaults::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); // for reference....expectation is encode_attributes returns this: @@ -199,7 +196,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_encode_with_new_format_one_attribute_success() { let _setup = SetupDefaults::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let expected = json!({ "address2": { @@ -222,7 +218,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_encode_with_mixed_format_several_attributes_success() { let _setup = SetupDefaults::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); // for reference....expectation is encode_attributes returns this: @@ -268,7 +263,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_encode_bad_format_returns_error() { let _setup = SetupDefaults::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); static BAD_TEST_CREDENTIAL_DATA: &str = r#"{"format doesnt make sense"}"#; @@ -280,7 +274,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_encode_old_format_empty_array_error() { let _setup = SetupDefaults::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); static BAD_TEST_CREDENTIAL_DATA: &str = r#"{"address2":[]}"#; @@ -292,7 +285,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_encode_empty_field() { let _setup = SetupDefaults::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let expected = json!({ "empty_field": { diff --git a/libvcx/src/aries/utils/encryption_envelope.rs b/libvcx/src/aries/utils/encryption_envelope.rs index 992efe57ea..4bb7443bd0 100644 --- a/libvcx/src/aries/utils/encryption_envelope.rs +++ b/libvcx/src/aries/utils/encryption_envelope.rs @@ -1,8 +1,8 @@ +use agency_comm::mocking::AgencyMockDecrypted; use aries::messages::a2a::A2AMessage; use aries::messages::connection::did_doc::DidDoc; use aries::messages::forward::Forward; use error::prelude::*; -use utils::httpclient::AgencyMockDecrypted; use libindy::utils::crypto; #[derive(Debug)] @@ -126,15 +126,16 @@ impl EncryptionEnvelope { #[cfg(test)] pub mod tests { + use agency_comm::agency_settings; use aries::messages::ack::tests::_ack; use aries::messages::connection::did_doc::tests::*; use libindy::utils::crypto::create_key; use libindy::utils::tests::test_setup; - - use super::*; - use utils::devsetup::SetupEmpty; use libindy::utils::tests::test_setup::create_trustee_key; use libindy::utils::wallet; + use utils::devsetup::SetupEmpty; + + use super::*; fn _setup() { ::settings::set_config_value(::settings::CONFIG_ENABLE_TEST_MODE, "false"); diff --git a/libvcx/src/connection.rs b/libvcx/src/connection.rs index ebc5533cf8..585a77251e 100644 --- a/libvcx/src/connection.rs +++ b/libvcx/src/connection.rs @@ -2,15 +2,15 @@ use std::collections::HashMap; use serde_json; +use agency_comm; +use agency_comm::{MessageStatusCode, SerializableObjectWithState}; +use agency_comm::get_message::{get_bootstrap_agent_messages, Message, MessageByConnection}; use aries::handlers::connection::agent_info::AgentInfo; use aries::handlers::connection::connection::{Connection, SmConnectionState}; use aries::messages::a2a::A2AMessage; use aries::messages::connection::did_doc::DidDoc; use aries::messages::connection::invite::Invitation as InvitationV3; use error::prelude::*; -use agency_comm; -use agency_comm::get_message::{get_bootstrap_agent_messages, MessageByConnection, Message}; -use agency_comm::{SerializableObjectWithState, MessageStatusCode}; use settings; use settings::ProtocolTypes; use utils::error; @@ -131,7 +131,7 @@ pub fn update_state(handle: u32) -> VcxResult { if connection.is_in_null_state() { warn!("Connection::update_state :: update state on connection in null state is ignored"); - return Ok(error::SUCCESS.code_num) + return Ok(error::SUCCESS.code_num); } // connection protocol itself handles message authentication where it makes sense @@ -178,7 +178,7 @@ pub fn connect(handle: u32) -> VcxResult> { pub fn to_string(handle: u32) -> VcxResult { CONNECTION_MAP.get(handle, |connection| { - let ( state, data, source_id) = connection.to_owned().into(); + let (state, data, source_id) = connection.to_owned().into(); let object = SerializableObjectWithState::V3 { data, state, source_id }; ::serde_json::to_string(&object) @@ -287,13 +287,13 @@ pub fn download_messages(conn_handles: Vec, status_codes: Option>>()?; - Ok(MessageByConnection{ pairwise_did: connection.agent_info().clone().pw_did, msgs }) - } + .agent_info() + .download_encrypted_messages(uids.clone(), status_codes.clone())? + .iter() + .map(|msg| msg.decrypt_auth(&expected_sender_vk)) + .collect::>>()?; + Ok(MessageByConnection { pairwise_did: connection.agent_info().clone().pw_did, msgs }) + }, )?; res.push(msg_by_conn); }; @@ -307,13 +307,13 @@ pub mod tests { use serde_json::Value; - use api::VcxStateType; use agency_comm::get_message::download_messages_noauth; use agency_comm::MessageStatusCode; + use agency_comm::mocking::AgencyMockDecrypted; + use api::VcxStateType; use utils::constants::*; use utils::constants; use utils::devsetup::*; - use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_connection::{ARIES_CONNECTION_ACK, ARIES_CONNECTION_INVITATION, ARIES_CONNECTION_REQUEST, CONNECTION_SM_INVITEE_COMPLETED, CONNECTION_SM_INVITEE_INVITED, CONNECTION_SM_INVITEE_REQUESTED, CONNECTION_SM_INVITER_COMPLETED}; use super::*; diff --git a/libvcx/src/credential.rs b/libvcx/src/credential.rs index 40fe37c3ea..5ea507bdbf 100644 --- a/libvcx/src/credential.rs +++ b/libvcx/src/credential.rs @@ -1,16 +1,16 @@ use serde_json; +use agency_comm::mocking::AgencyMockDecrypted; use aries::{ handlers::issuance::holder::holder::Holder, - messages::issuance::credential_offer::CredentialOffer, messages::a2a::A2AMessage, + messages::issuance::credential_offer::CredentialOffer, }; +use connection; use error::prelude::*; use settings::indy_mocks_enabled; -use connection; use utils::constants::GET_MESSAGES_DECRYPTED_RESPONSE; use utils::error; -use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_credex::ARIES_CREDENTIAL_OFFER; use utils::object_cache::ObjectCache; diff --git a/libvcx/src/disclosed_proof.rs b/libvcx/src/disclosed_proof.rs index b252ef45c6..b356e8f8db 100644 --- a/libvcx/src/disclosed_proof.rs +++ b/libvcx/src/disclosed_proof.rs @@ -2,20 +2,20 @@ use std::convert::TryInto; use serde_json; +use agency_comm::{ + get_message::Message, +}; +use agency_comm::mocking::AgencyMockDecrypted; use aries::{ handlers::proof_presentation::prover::prover::Prover, messages::proof_presentation::presentation_request::PresentationRequest, }; use connection; use error::prelude::*; -use agency_comm::{ - get_message::Message, -}; use settings; use settings::indy_mocks_enabled; use utils::constants::GET_MESSAGES_DECRYPTED_RESPONSE; use utils::error; -use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mockdata_proof::ARIES_PROOF_REQUEST_PRESENTATION; use utils::object_cache::ObjectCache; @@ -79,7 +79,7 @@ pub fn update_state(handle: u32, message: Option<&str>, connection_handle: Optio HANDLE_MAP.get_mut(handle, |proof| { trace!("disclosed_proof::update_state >>> connection_handle: {:?}, message: {:?}", connection_handle, message); - if !proof.has_transitions() { + if !proof.has_transitions() { trace!("disclosed_proof::update_state >> found no available transition"); return Ok(proof.state()); } @@ -242,6 +242,7 @@ mod tests { use time; use api::VcxStateType; + use aries::messages::proof_presentation::presentation_request::PresentationRequestData; use utils::{ constants::{ADDRESS_CRED_DEF_ID, ADDRESS_CRED_ID, ADDRESS_CRED_REV_ID, ADDRESS_REV_REG_ID, ADDRESS_SCHEMA_ID, ARIES_PROVER_CREDENTIALS, ARIES_PROVER_SELF_ATTESTED_ATTRS, @@ -250,11 +251,9 @@ mod tests { get_temp_dir_path, }; use utils::devsetup::*; - use utils::httpclient::AgencyMockDecrypted; use utils::mockdata::mock_settings::MockBuilder; use utils::mockdata::mockdata_proof; use utils::mockdata::mockdata_proof::{ARIES_PROOF_PRESENTATION_ACK, ARIES_PROOF_REQUEST_PRESENTATION}; - use aries::messages::proof_presentation::presentation_request::PresentationRequestData; use super::*; diff --git a/libvcx/src/issuer_credential.rs b/libvcx/src/issuer_credential.rs index a423401d4d..8431ef7a0a 100644 --- a/libvcx/src/issuer_credential.rs +++ b/libvcx/src/issuer_credential.rs @@ -176,15 +176,14 @@ pub mod tests { use credential_def::tests::create_cred_def_fake; use libindy::utils::anoncreds::libindy_create_and_store_credential_def; use libindy::utils::LibindyMock; + use utils::constants::{SCHEMAS_JSON, V3_OBJECT_SERIALIZE_VERSION}; #[allow(unused_imports)] - use utils::devsetup::*; use utils::httpclient::HttpClientMockResponse; use utils::mockdata::mockdata_connection::ARIES_CONNECTION_ACK; use utils::mockdata::mockdata_credex::ARIES_CREDENTIAL_REQUEST; use super::*; - use utils::constants::{SCHEMAS_JSON, V3_OBJECT_SERIALIZE_VERSION}; static DEFAULT_CREDENTIAL_NAME: &str = "Credential"; static DEFAULT_CREDENTIAL_ID: &str = "defaultCredentialId"; @@ -251,7 +250,6 @@ pub mod tests { #[test] fn test_generate_cred_offer() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let _issuer = create_full_issuer_credential().0 .generate_credential_offer().unwrap(); @@ -384,7 +382,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_errors() { let _setup = SetupLibraryWallet::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); assert_eq!(to_string(0).unwrap_err().kind(), VcxErrorKind::InvalidHandle); assert_eq!(release(0).unwrap_err().kind(), VcxErrorKind::InvalidIssuerCredentialHandle); diff --git a/libvcx/src/lib.rs b/libvcx/src/lib.rs index fe7142cbe8..6bf884ee00 100644 --- a/libvcx/src/lib.rs +++ b/libvcx/src/lib.rs @@ -65,12 +65,12 @@ mod tests { use api::VcxStateType; use connection; use credential; + use credential_def; use disclosed_proof; + use filters; use issuer_credential; use proof; use settings; - use filters; - use credential_def; use utils::{ constants::{TEST_TAILS_FILE, TEST_TAILS_URL}, devsetup::{set_consumer, set_institution}, @@ -284,7 +284,7 @@ mod tests { assert_ne!(delta, delta_after_revoke); // They will not equal as we have saved the delta in cache } - fn rotate_rev_reg(cred_def_handle: u32 ) { + fn rotate_rev_reg(cred_def_handle: u32) { set_institution(None); credential_def::rotate_rev_reg_def(cred_def_handle); } @@ -351,7 +351,6 @@ mod tests { #[test] fn test_basic_revocation() { let _setup = SetupLibraryAgencyV2::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let institution_did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); let (faber, alice) = ::connection::tests::create_connected_connections(None, None); @@ -510,8 +509,12 @@ mod tests { let (consumer_to_institution1, institution_to_consumer1) = ::connection::tests::create_connected_connections(Some(consumer1), None); let (consumer_to_institution2, institution_to_consumer2) = ::connection::tests::create_connected_connections(Some(consumer2), None); let (consumer_to_institution3, institution_to_consumer3) = ::connection::tests::create_connected_connections(Some(consumer3), None); - assert_ne!(institution_to_consumer1, institution_to_consumer2); assert_ne!(institution_to_consumer1, institution_to_consumer3); assert_ne!(institution_to_consumer2, institution_to_consumer3); - assert_ne!(consumer_to_institution1, consumer_to_institution2); assert_ne!(consumer_to_institution1, consumer_to_institution3); assert_ne!(consumer_to_institution2, consumer_to_institution3); + assert_ne!(institution_to_consumer1, institution_to_consumer2); + assert_ne!(institution_to_consumer1, institution_to_consumer3); + assert_ne!(institution_to_consumer2, institution_to_consumer3); + assert_ne!(consumer_to_institution1, consumer_to_institution2); + assert_ne!(consumer_to_institution1, consumer_to_institution3); + assert_ne!(consumer_to_institution2, consumer_to_institution3); // Issue and send three credentials of the same schema let (schema_id, _schema_json, cred_def_id, _cred_def_json, cred_def_handle, rev_reg_id) = _create_address_schema(); @@ -527,7 +530,8 @@ mod tests { revoke_credential_local(credential_handle2, rev_reg_id.clone()); // Revoke two locally and verify their are all still valid - let request_name1 = Some("request1"); let request_name2 = Some("request2"); + let request_name1 = Some("request1"); + let request_name2 = Some("request2"); let proof_handle_verifier1 = _verifier_create_proof_and_send_request(&institution_did, &schema_id, &cred_def_id, institution_to_consumer1, None, request_name1); _prover_select_credentials_and_send_proof(consumer_to_institution1, Some(consumer1), request_name1, None); let proof_handle_verifier2 = _verifier_create_proof_and_send_request(&institution_did, &schema_id, &cred_def_id, institution_to_consumer2, None, request_name1); @@ -553,7 +557,9 @@ mod tests { _prover_select_credentials_and_send_proof(consumer_to_institution2, Some(consumer2), request_name2, None); let proof_handle_verifier3 = _verifier_create_proof_and_send_request(&institution_did, &schema_id, &cred_def_id, institution_to_consumer3, None, request_name2); _prover_select_credentials_and_send_proof(consumer_to_institution3, Some(consumer3), request_name2, None); - assert_ne!(proof_handle_verifier1, proof_handle_verifier2); assert_ne!(proof_handle_verifier1, proof_handle_verifier3); assert_ne!(proof_handle_verifier2, proof_handle_verifier3); + assert_ne!(proof_handle_verifier1, proof_handle_verifier2); + assert_ne!(proof_handle_verifier1, proof_handle_verifier3); + assert_ne!(proof_handle_verifier2, proof_handle_verifier3); set_institution(None); proof::update_state(proof_handle_verifier1, None, None).unwrap(); @@ -568,7 +574,6 @@ mod tests { #[test] fn test_revoked_credential_might_still_work() { let _setup = SetupLibraryAgencyV2::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); let institution_did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); let (faber, alice) = ::connection::tests::create_connected_connections(None, None); @@ -661,7 +666,6 @@ mod tests { #[cfg(feature = "agency_pool_tests")] fn test_real_proof() { let _setup = SetupLibraryAgencyV2::init(); - ::settings::set_config_value(::settings::CONFIG_PROTOCOL_TYPE, "4.0"); info!("test_real_proof >>>"); let number_of_attributes = 10; @@ -749,7 +753,6 @@ mod tests { set_institution(Some(verifier)); proof::update_state(proof_handle_verifier, None, None).unwrap(); assert_eq!(proof::get_proof_state(proof_handle_verifier).unwrap(), ProofStateType::ProofValidated as u32); - } #[test] @@ -819,7 +822,7 @@ mod tests { proof::update_state(proof_handle_verifier, None, None).unwrap(); assert_eq!(proof::get_proof_state(proof_handle_verifier).unwrap(), ProofStateType::ProofInvalid as u32); } - + #[test] #[cfg(feature = "agency_pool_tests")] fn test_two_creds_two_rev_reg_id() { diff --git a/libvcx/src/libindy/utils/wallet.rs b/libvcx/src/libindy/utils/wallet.rs index e09ee0eecd..594d8fb6fc 100644 --- a/libvcx/src/libindy/utils/wallet.rs +++ b/libvcx/src/libindy/utils/wallet.rs @@ -303,6 +303,7 @@ pub mod tests { use utils::get_temp_dir_path; use super::*; + use agency_comm::agency_settings; fn _record() -> (&'static str, &'static str, &'static str) { ("type1", "id1", "value1") @@ -318,7 +319,7 @@ pub mod tests { let (my_did, my_vk) = create_and_store_my_did(None, None).unwrap(); settings::set_config_value(settings::CONFIG_INSTITUTION_DID, &my_did); - settings::set_config_value(settings::CONFIG_SDK_TO_REMOTE_VERKEY, &my_vk); + agency_settings::set_config_value(agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY, &my_vk); let backup_key = settings::get_config_value(settings::CONFIG_WALLET_BACKUP_KEY).unwrap(); diff --git a/libvcx/src/proof.rs b/libvcx/src/proof.rs index 7daeb6df78..3be240b283 100644 --- a/libvcx/src/proof.rs +++ b/libvcx/src/proof.rs @@ -1,10 +1,10 @@ use serde_json; use aries::handlers::proof_presentation::verifier::verifier::Verifier; +use connection; use error::prelude::*; use utils::error; use utils::object_cache::ObjectCache; -use connection; lazy_static! { static ref PROOF_MAP: ObjectCache = ObjectCache::::new("proofs-cache"); @@ -345,7 +345,6 @@ pub mod tests { #[cfg(feature = "general_test")] fn test_send_proof_request_can_be_retried() { let _setup = SetupMocks::init(); - settings::set_config_value(settings::CONFIG_PROTOCOL_TYPE, "4.0"); let handle_conn = build_test_connection_inviter_requested(); diff --git a/libvcx/src/settings.rs b/libvcx/src/settings.rs index 5ebb461b27..8b5d9b2441 100644 --- a/libvcx/src/settings.rs +++ b/libvcx/src/settings.rs @@ -11,6 +11,8 @@ use serde_json::Value; use strum::IntoEnumIterator; use url::Url; +use agency_comm::agency_settings; +use agency_comm::agency_settings::process_agency_config_string; use error::prelude::*; use utils::{error, get_temp_dir_path}; use utils::file::read_file; @@ -18,14 +20,6 @@ use utils::validation; pub static CONFIG_POOL_NAME: &str = "pool_name"; pub static CONFIG_PROTOCOL_TYPE: &str = "protocol_type"; -pub static CONFIG_AGENCY_ENDPOINT: &str = "agency_endpoint"; -pub static CONFIG_AGENCY_DID: &str = "agency_did"; -pub static CONFIG_AGENCY_VERKEY: &str = "agency_verkey"; -pub static CONFIG_REMOTE_TO_SDK_DID: &str = "remote_to_sdk_did"; -pub static CONFIG_REMOTE_TO_SDK_VERKEY: &str = "remote_to_sdk_verkey"; -pub static CONFIG_SDK_TO_REMOTE_DID: &str = "sdk_to_remote_did"; -// functionally not used -pub static CONFIG_SDK_TO_REMOTE_VERKEY: &str = "sdk_to_remote_verkey"; pub static CONFIG_SDK_TO_REMOTE_ROLE: &str = "sdk_to_remote_role"; pub static CONFIG_INSTITUTION_DID: &str = "institution_did"; pub static CONFIG_INSTITUTION_VERKEY: &str = "institution_verkey"; @@ -113,17 +107,10 @@ pub fn set_testing_defaults() -> u32 { settings.insert(CONFIG_POOL_NAME.to_string(), DEFAULT_POOL_NAME.to_string()); settings.insert(CONFIG_WALLET_NAME.to_string(), DEFAULT_WALLET_NAME.to_string()); settings.insert(CONFIG_WALLET_TYPE.to_string(), DEFAULT_DEFAULT.to_string()); - settings.insert(CONFIG_AGENCY_ENDPOINT.to_string(), DEFAULT_URL.to_string()); - settings.insert(CONFIG_AGENCY_DID.to_string(), DEFAULT_DID.to_string()); - settings.insert(CONFIG_AGENCY_VERKEY.to_string(), DEFAULT_VERKEY.to_string()); - settings.insert(CONFIG_REMOTE_TO_SDK_DID.to_string(), DEFAULT_DID.to_string()); - settings.insert(CONFIG_REMOTE_TO_SDK_VERKEY.to_string(), DEFAULT_VERKEY.to_string()); settings.insert(CONFIG_INSTITUTION_DID.to_string(), DEFAULT_DID.to_string()); settings.insert(CONFIG_INSTITUTION_NAME.to_string(), DEFAULT_DEFAULT.to_string()); settings.insert(CONFIG_INSTITUTION_LOGO_URL.to_string(), DEFAULT_URL.to_string()); settings.insert(CONFIG_WEBHOOK_URL.to_string(), DEFAULT_URL.to_string()); - settings.insert(CONFIG_SDK_TO_REMOTE_DID.to_string(), DEFAULT_DID.to_string()); - settings.insert(CONFIG_SDK_TO_REMOTE_VERKEY.to_string(), DEFAULT_VERKEY.to_string()); settings.insert(CONFIG_SDK_TO_REMOTE_ROLE.to_string(), DEFAULT_ROLE.to_string()); settings.insert(CONFIG_WALLET_KEY.to_string(), DEFAULT_WALLET_KEY.to_string()); settings.insert(CONFIG_WALLET_KEY_DERIVATION.to_string(), WALLET_KDF_RAW.to_string()); @@ -136,6 +123,7 @@ pub fn set_testing_defaults() -> u32 { settings.insert(CONFIG_PAYMENT_METHOD.to_string(), DEFAULT_PAYMENT_METHOD.to_string()); settings.insert(CONFIG_USE_LATEST_PROTOCOLS.to_string(), DEFAULT_USE_LATEST_PROTOCOLS.to_string()); + agency_settings::set_testing_defaults_agency(); error::SUCCESS.code_num } @@ -150,23 +138,12 @@ pub fn validate_config(config: &HashMap) -> VcxResult { // If values are provided, validate they're in the correct format validate_optional_config_val(config.get(CONFIG_INSTITUTION_DID), VcxErrorKind::InvalidDid, validation::validate_did)?; validate_optional_config_val(config.get(CONFIG_INSTITUTION_VERKEY), VcxErrorKind::InvalidVerkey, validation::validate_verkey)?; - - validate_optional_config_val(config.get(CONFIG_AGENCY_DID), VcxErrorKind::InvalidDid, validation::validate_did)?; - validate_optional_config_val(config.get(CONFIG_AGENCY_VERKEY), VcxErrorKind::InvalidVerkey, validation::validate_verkey)?; - - validate_optional_config_val(config.get(CONFIG_SDK_TO_REMOTE_DID), VcxErrorKind::InvalidDid, validation::validate_did)?; - validate_optional_config_val(config.get(CONFIG_SDK_TO_REMOTE_VERKEY), VcxErrorKind::InvalidVerkey, validation::validate_verkey)?; - - validate_optional_config_val(config.get(CONFIG_REMOTE_TO_SDK_DID), VcxErrorKind::InvalidDid, validation::validate_did)?; - validate_optional_config_val(config.get(CONFIG_REMOTE_TO_SDK_VERKEY), VcxErrorKind::InvalidVerkey, validation::validate_verkey)?; - - validate_optional_config_val(config.get(CONFIG_AGENCY_ENDPOINT), VcxErrorKind::InvalidUrl, Url::parse)?; validate_optional_config_val(config.get(CONFIG_INSTITUTION_LOGO_URL), VcxErrorKind::InvalidUrl, Url::parse)?; - validate_optional_config_val(config.get(CONFIG_WEBHOOK_URL), VcxErrorKind::InvalidUrl, Url::parse)?; - validate_optional_config_val(config.get(CONFIG_ACTORS), VcxErrorKind::InvalidOption, validation::validate_actors)?; + agency_settings::validate_agency_config(config)?; + Ok(error::SUCCESS.code_num) } @@ -211,23 +188,6 @@ pub fn indy_mocks_enabled() -> bool { } } -pub fn agency_mocks_enabled() -> bool { - let config = SETTINGS.read().unwrap(); - - match config.get(CONFIG_ENABLE_TEST_MODE) { - None => false, - Some(value) => value == "true" || value == "agency" - } -} - -pub fn agency_decrypted_mocks_enabled() -> bool { - let config = SETTINGS.read().unwrap(); - - match config.get(CONFIG_ENABLE_TEST_MODE) { - None => false, - Some(value) => value == "true" - } -} pub fn enable_mock_generate_indy_proof() {} @@ -249,6 +209,8 @@ pub fn process_config_string(config: &str, do_validation: bool) -> VcxResult VcxResult { .map(|v| v.to_string()) .ok_or(VcxError::from_msg(VcxErrorKind::InvalidConfiguration, format!("Cannot read \"{}\" from settings", key))) } - pub fn set_config_value(key: &str, value: &str) { trace!("set_config_value >>> key: {}, value: {}", key, value); SETTINGS @@ -426,10 +387,12 @@ pub fn clear_config() { trace!("clear_config >>>"); let mut config = SETTINGS.write().unwrap(); config.clear(); + agency_settings::clear_config_agency() } #[cfg(test)] pub mod tests { + use agency_comm::agency_settings; use utils::devsetup::{SetupDefaults, TempFile}; use super::*; @@ -543,27 +506,27 @@ pub mod tests { assert_eq!(validate_config(&config).unwrap_err().kind(), VcxErrorKind::InvalidVerkey); let mut config = _mandatory_config(); - config.insert(CONFIG_AGENCY_DID.to_string(), invalid.to_string()); + config.insert(agency_settings::CONFIG_AGENCY_DID.to_string(), invalid.to_string()); assert_eq!(validate_config(&config).unwrap_err().kind(), VcxErrorKind::InvalidDid); let mut config = _mandatory_config(); - config.insert(CONFIG_AGENCY_VERKEY.to_string(), invalid.to_string()); + config.insert(agency_settings::CONFIG_AGENCY_VERKEY.to_string(), invalid.to_string()); assert_eq!(validate_config(&config).unwrap_err().kind(), VcxErrorKind::InvalidVerkey); let mut config = _mandatory_config(); - config.insert(CONFIG_SDK_TO_REMOTE_DID.to_string(), invalid.to_string()); + config.insert(agency_settings::CONFIG_SDK_TO_REMOTE_DID.to_string(), invalid.to_string()); assert_eq!(validate_config(&config).unwrap_err().kind(), VcxErrorKind::InvalidDid); let mut config = _mandatory_config(); - config.insert(CONFIG_SDK_TO_REMOTE_VERKEY.to_string(), invalid.to_string()); + config.insert(agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY.to_string(), invalid.to_string()); assert_eq!(validate_config(&config).unwrap_err().kind(), VcxErrorKind::InvalidVerkey); let mut config = _mandatory_config(); - config.insert(CONFIG_REMOTE_TO_SDK_DID.to_string(), invalid.to_string()); + config.insert(agency_settings::CONFIG_REMOTE_TO_SDK_DID.to_string(), invalid.to_string()); assert_eq!(validate_config(&config).unwrap_err().kind(), VcxErrorKind::InvalidDid); let mut config = _mandatory_config(); - config.insert(CONFIG_SDK_TO_REMOTE_VERKEY.to_string(), invalid.to_string()); + config.insert(agency_settings::CONFIG_SDK_TO_REMOTE_VERKEY.to_string(), invalid.to_string()); assert_eq!(validate_config(&config).unwrap_err().kind(), VcxErrorKind::InvalidVerkey); let mut config = _mandatory_config(); diff --git a/libvcx/src/utils/devsetup.rs b/libvcx/src/utils/devsetup.rs index 0acd4e9c2c..1893eea096 100644 --- a/libvcx/src/utils/devsetup.rs +++ b/libvcx/src/utils/devsetup.rs @@ -8,6 +8,8 @@ use serde_json::Value; use ::{indy, init}; use ::{settings, utils}; +use agency_comm::agency_settings; +use agency_comm::mocking::AgencyMockDecrypted; use libindy::utils::pool::reset_pool_handle; use libindy::utils::pool::tests::{create_test_ledger_config, delete_test_pool, open_test_pool}; use libindy::utils::wallet::{close_main_wallet, create_wallet, delete_wallet, reset_wallet_handle}; @@ -17,7 +19,6 @@ use settings::set_testing_defaults; use utils::{get_temp_dir_path, threadpool}; use utils::constants; use utils::file::write_file; -use utils::httpclient::AgencyMockDecrypted; use utils::logger::LibvcxDefaultLogger; use utils::object_cache::ObjectCache; use utils::plugins::init_plugin; @@ -108,6 +109,7 @@ impl SetupMocks { pub fn init() -> SetupMocks { setup(); settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); SetupMocks } } @@ -129,6 +131,7 @@ impl SetupLibraryWallet { settings::set_config_value(settings::CONFIG_WALLET_KEY_DERIVATION, &wallet_kdf); settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "false"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "false"); create_and_open_as_main_wallet(&wallet_name, settings::DEFAULT_WALLET_KEY, settings::WALLET_KDF_RAW, None, None, None).unwrap(); SetupLibraryWallet { wallet_name, wallet_key, wallet_kdf } } @@ -153,6 +156,7 @@ impl SetupWallet { settings::set_config_value(settings::CONFIG_WALLET_KEY_DERIVATION, &wallet_kdf); settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "false"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "false"); settings::set_config_value(settings::CONFIG_WALLET_BACKUP_KEY, settings::DEFAULT_WALLET_BACKUP_KEY); create_wallet(&wallet_name, &wallet_key, &wallet_kdf, None, None, None).unwrap(); @@ -175,7 +179,7 @@ impl SetupPoolConfig { create_test_ledger_config(); settings::set_config_value(settings::CONFIG_GENESIS_PATH, utils::get_temp_dir_path(settings::DEFAULT_GENESIS_PATH).to_str().unwrap()); - SetupPoolConfig { } + SetupPoolConfig {} } } @@ -190,7 +194,8 @@ impl SetupIndyMocks { pub fn init() -> SetupIndyMocks { setup(); settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); - SetupIndyMocks { } + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "true"); + SetupIndyMocks {} } } @@ -239,7 +244,7 @@ impl SetupAgencyMock { settings::set_config_value(settings::CONFIG_WALLET_NAME, &wallet_name); settings::set_config_value(settings::CONFIG_WALLET_KEY, &wallet_key); settings::set_config_value(settings::CONFIG_WALLET_KEY_DERIVATION, &wallet_kdf); - settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "agency"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "agency"); create_and_open_as_main_wallet(&wallet_name, settings::DEFAULT_WALLET_KEY, settings::WALLET_KDF_RAW, None, None, None).unwrap(); SetupAgencyMock { wallet_name, wallet_key, wallet_kdf } @@ -345,6 +350,7 @@ pub fn setup_libnullpay_nofees() { pub fn setup_indy_env(use_zero_fees: bool) { settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "false"); + agency_settings::set_config_value(settings::CONFIG_ENABLE_TEST_MODE, "false"); init_plugin(settings::DEFAULT_PAYMENT_PLUGIN, settings::DEFAULT_PAYMENT_INIT_FUNCTION); diff --git a/libvcx/src/utils/httpclient.rs b/libvcx/src/utils/httpclient.rs index 1101deaa3b..76c643fac4 100644 --- a/libvcx/src/utils/httpclient.rs +++ b/libvcx/src/utils/httpclient.rs @@ -5,51 +5,23 @@ use std::sync::Mutex; use reqwest; use reqwest::header::CONTENT_TYPE; +use agency_comm::agency_settings; +use agency_comm::mocking::{AgencyMock, AgencyMockDecrypted}; use error::prelude::*; use settings; lazy_static! { - static ref AGENCY_MOCK: Mutex = Mutex::new(AgencyMock::default()); - static ref AGENCY_MOCK_DECRYPTED_RESPONSES: Mutex = Mutex::new(AgencyMockDecrypted::default()); - static ref AGENCY_MOCK_DECRYPTED_MESSAGES: Mutex = Mutex::new(AgencyMockDecryptedMessages::default()); static ref HTTPCLIENT_MOCK_RESPONSES: Mutex = Mutex::new(HttpClientMockResponse::default()); } -#[derive(Default)] -pub struct AgencyMock { - responses: Vec> -} - -#[derive(Default)] -pub struct AgencyMockDecrypted { - responses: Vec -} - #[derive(Default)] pub struct HttpClientMockResponse { responses: Vec>> } -#[derive(Default)] -pub struct AgencyMockDecryptedMessages { - messages: Vec -} - -impl AgencyMock { - pub fn set_next_response(body: Vec) { - if settings::agency_mocks_enabled() { - AGENCY_MOCK.lock().unwrap().responses.push(body); - } - } - - pub fn get_response() -> Vec { - AGENCY_MOCK.lock().unwrap().responses.pop().unwrap_or_default() - } -} - impl HttpClientMockResponse { pub fn set_next_response(response: VcxResult>) { - if settings::agency_mocks_enabled() { + if agency_settings::agency_mocks_enabled() { HTTPCLIENT_MOCK_RESPONSES.lock().unwrap().responses.push(response); } } @@ -63,58 +35,9 @@ impl HttpClientMockResponse { } } -impl AgencyMockDecrypted { - pub fn set_next_decrypted_response(body: &str) { - if settings::agency_mocks_enabled() { - AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.push(body.into()); - } else { - warn!("Attempting to set mocked decrypted response when mocks are not enabled!"); - } - } - - pub fn get_next_decrypted_response() -> String { - if Self::has_decrypted_mock_responses() { - AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.pop().unwrap() - } else { - debug!("Attempting to obtain decrypted response when none were set, but decrypted messages available - returning empty response..."); - String::new() - } - } - - pub fn has_decrypted_mock_responses() -> bool { - AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.len() > 0 - } - - pub fn set_next_decrypted_message(message: &str) { - if settings::agency_mocks_enabled() { - AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.push(message.into()); - } else { - warn!("Attempting to set mocked decrypted message when mocks are not enabled!"); - } - } - - pub fn get_next_decrypted_message() -> String { - AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.pop().unwrap() - } - - pub fn has_decrypted_mock_messages() -> bool { - AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.len() > 0 - } - - pub fn clear_mocks() { - AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.clear(); - AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.clear(); - } -} - -//Todo: change this RC to a u32 -pub fn post_u8(body_content: &Vec) -> VcxResult> { - let endpoint = format!("{}/agency/msg", settings::get_config_value(settings::CONFIG_AGENCY_ENDPOINT)?); - post_message(body_content, &endpoint) -} - pub fn post_message(body_content: &Vec, url: &str) -> VcxResult> { - if settings::agency_mocks_enabled() { + // todo: this function should be general, not knowing that agency exists -> move agency mocks to agency module + if agency_settings::agency_mocks_enabled() { if HttpClientMockResponse::has_response() { warn!("HttpClient has mocked response"); return HttpClientMockResponse::get_response(); From cd9f0d10e3f256f02b556662347e274ab8448f3e Mon Sep 17 00:00:00 2001 From: Patrik Stas Date: Mon, 2 Nov 2020 10:38:16 +0100 Subject: [PATCH 6/7] Migrate legacy proof request tests Signed-off-by: Patrik Stas --- libvcx/src/libindy/proofs/proof_request.rs | 177 +++++++++++++++------ libvcx/src/utils/constants.rs | 71 ++++++++- 2 files changed, 198 insertions(+), 50 deletions(-) diff --git a/libvcx/src/libindy/proofs/proof_request.rs b/libvcx/src/libindy/proofs/proof_request.rs index 7107448a8f..13b6493d2e 100644 --- a/libvcx/src/libindy/proofs/proof_request.rs +++ b/libvcx/src/libindy/proofs/proof_request.rs @@ -45,10 +45,16 @@ impl ProofRequestData { let requested_attributes: Vec = ::serde_json::from_str(&requested_attrs) .map_err(|err| VcxError::from_msg(VcxErrorKind::InvalidJson, format!("Invalid Requested Attributes: {:?}, err: {:?}", requested_attrs, err)))?; + for attribute in requested_attributes.iter() { + if attribute.name.is_some() && attribute.names.is_some() { + return Err(VcxError::from_msg(VcxErrorKind::InvalidProofRequest, + format!("Requested attribute can contain either 'name' or 'names'. Not both."))) + }; + } self.requested_attributes = requested_attributes .into_iter() .enumerate() - .map(|(index, attribute)| (format!("attribute_{}", index), attribute)) + .map(|(index, attribute)|(format!("attribute_{}", index), attribute)) .collect(); Ok(self) } @@ -127,6 +133,9 @@ impl Default for ProofRequestVersion { #[cfg(test)] mod tests { + use serde::Serialize; + use serde_json::Value; + use utils::constants::{REQUESTED_ATTRS, REQUESTED_PREDICATES}; use utils::devsetup::SetupDefaults; @@ -134,7 +143,6 @@ mod tests { #[test] #[cfg(feature = "general_test")] - #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_proof_request_msg() { let _setup = SetupDefaults::init(); @@ -146,93 +154,166 @@ mod tests { let tid = 89; let mid = 98; - let mut request = proof_request() - .type_version(version).unwrap() - .tid(tid).unwrap() - .mid(mid).unwrap() - .nonce(nonce).unwrap() - .proof_request_format_version(Some(ProofRequestVersion::V2)).unwrap() - .proof_name(data_name).unwrap() - .proof_data_version(data_version).unwrap() - .requested_attrs(REQUESTED_ATTRS).unwrap() - .requested_predicates(REQUESTED_PREDICATES).unwrap() - .to_timestamp(Some(100)).unwrap() - .from_timestamp(Some(1)).unwrap() - .clone(); - - let serialized_msg = request.serialize_message().unwrap(); - assert!(serialized_msg.contains(r#""@type":{"name":"PROOF_REQUEST","version":"1.3"}"#)); - assert!(serialized_msg.contains(r#"@topic":{"mid":98,"tid":89}"#)); - assert!(serialized_msg.contains(r#"proof_request_data":{"nonce":"123432421212","name":"Test","version":"3.75","requested_attributes""#)); - - assert!(serialized_msg.contains(r#""age":{"name":"age","restrictions":[{"schema_id":"6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11","schema_issuer_did":"6XFh8yBzrpJQmNyZzgoTqB","schema_name":"Faber Student Info","schema_version":"1.0","issuer_did":"8XFh8yBzrpJQmNyZzgoTqB","cred_def_id":"8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766"},{"schema_id":"5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11","schema_issuer_did":"5XFh8yBzrpJQmNyZzgoTqB","schema_name":"BYU Student Info","schema_version":"1.0","issuer_did":"66Fh8yBzrpJQmNyZzgoTqB","cred_def_id":"66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766"}]}"#)); - assert!(serialized_msg.contains(r#""to_timestamp":100"#)); - assert!(serialized_msg.contains(r#""from_timestamp":1"#)); - assert!(serialized_msg.contains(r#""ver":"2.0""#)); + let request = ProofRequestData::create() + .set_name(data_name.into()) + .set_nonce().unwrap() + .set_not_revoked_interval(r#"{"from":1100000000, "to": 1600000000}"#.into()).unwrap() + .set_requested_attributes(REQUESTED_ATTRS.into()).unwrap() + .set_requested_predicates(REQUESTED_PREDICATES.into()).unwrap() + .set_format_version_for_did("6XFh8yBzrpJQmNyZzgoTqB".into(), "11111111rpJQmNyZzgoTqB".into()).unwrap(); + + let serialized_msg = serde_json::to_string(&request).unwrap(); + warn!("serialized_msg={}", serialized_msg); + // todo: Does it really need to have both "version" and "ver" field? + assert!(serialized_msg.contains(r#""name":"Test","version":"1.0""#)); + assert!(serialized_msg.contains(r#""ver":"1.0""#)); + assert!(serialized_msg.contains(r#""non_revoked":{"from":1100000000,"to":1600000000}"#)); + let msg_as_value: Value = serde_json::from_str(&serialized_msg).unwrap(); + assert_eq!(msg_as_value["requested_attributes"]["attribute_0"]["name"], "age"); + assert_eq!(msg_as_value["requested_attributes"]["attribute_1"]["name"], "name"); + assert_eq!(msg_as_value["requested_predicates"]["predicate_0"]["name"], "age"); } #[test] #[cfg(feature = "general_test")] - #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_requested_attrs_constructed_correctly() { let _setup = SetupDefaults::init(); let mut check_req_attrs: HashMap = HashMap::new(); - let attr_info1: AttrInfo = serde_json::from_str(r#"{ "name":"age", "restrictions": [ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"Faber Student Info", "schema_version":"1.0", "schema_issuer_did":"6XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"8XFh8yBzrpJQmNyZzgoTqB", "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" }, { "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"BYU Student Info", "schema_version":"1.0", "schema_issuer_did":"5XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"66Fh8yBzrpJQmNyZzgoTqB", "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" } ] }"#).unwrap(); - let attr_info2: AttrInfo = serde_json::from_str(r#"{ "name":"name", "restrictions": [ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"Faber Student Info", "schema_version":"1.0", "schema_issuer_did":"6XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"8XFh8yBzrpJQmNyZzgoTqB", "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" }, { "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"BYU Student Info", "schema_version":"1.0", "schema_issuer_did":"5XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"66Fh8yBzrpJQmNyZzgoTqB", "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" } ] }"#).unwrap(); + let attr_info1: AttrInfo = serde_json::from_str(r#" + { + "name": "age", + "restrictions": [ + { + "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "Faber Student Info", + "schema_version": "1.0", + "schema_issuer_did": "6XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "8XFh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" + }, + { + "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "BYU Student Info", + "schema_version": "1.0", + "schema_issuer_did": "5XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "66Fh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" + } + ] + }"#).unwrap(); + let attr_info2: AttrInfo = serde_json::from_str(r#"{ + "name": "name", + "restrictions": [ + { + "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "Faber Student Info", + "schema_version": "1.0", + "schema_issuer_did": "6XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "8XFh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" + }, + { + "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "BYU Student Info", + "schema_version": "1.0", + "schema_issuer_did": "5XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "66Fh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" + } + ] + }"#).unwrap(); check_req_attrs.insert("age".to_string(), attr_info1); check_req_attrs.insert("name".to_string(), attr_info2); - let request = proof_request().requested_attrs(REQUESTED_ATTRS).unwrap().clone(); - assert_eq!(request.proof_request_data.requested_attributes, check_req_attrs); + let request = ProofRequestData::create() + .set_nonce().unwrap() + .set_requested_attributes(REQUESTED_ATTRS.into()).unwrap() + .set_requested_predicates(REQUESTED_PREDICATES.into()).unwrap(); + assert_eq!(request.requested_attributes, check_req_attrs); } #[test] #[cfg(feature = "general_test")] - #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_requested_predicates_constructed_correctly() { let _setup = SetupDefaults::init(); let mut check_predicates: HashMap = HashMap::new(); - let attr_info1: PredicateInfo = serde_json::from_str(r#"{ "name":"age","p_type":"GE","p_value":22, "restrictions":[ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"Faber Student Info", "schema_version":"1.0", "schema_issuer_did":"6XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"8XFh8yBzrpJQmNyZzgoTqB", "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" }, { "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"BYU Student Info", "schema_version":"1.0", "schema_issuer_did":"5XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"66Fh8yBzrpJQmNyZzgoTqB", "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" } ] }"#).unwrap(); - check_predicates.insert("age".to_string(), attr_info1); - - let request = proof_request().requested_predicates(REQUESTED_PREDICATES).unwrap().clone(); - assert_eq!(request.proof_request_data.requested_predicates, check_predicates); + let attr_info1: PredicateInfo = serde_json::from_str(r#"{ + "name": "age", + "p_type": "GE", + "p_value": 22, + "restrictions": [ + { + "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "Faber Student Info", + "schema_version": "1.0", + "schema_issuer_did": "6XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "8XFh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" + }, + { + "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "BYU Student Info", + "schema_version": "1.0", + "schema_issuer_did": "5XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "66Fh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" + } + ] + }"#).unwrap(); + check_predicates.insert("predicate_0".to_string(), attr_info1); + + let request = ProofRequestData::create() + .set_nonce().unwrap() + .set_requested_predicates(REQUESTED_PREDICATES.into()).unwrap(); + assert_eq!(request.requested_predicates, check_predicates); } #[test] #[cfg(feature = "general_test")] - #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries fn test_requested_attrs_constructed_correctly_for_names() { let _setup = SetupDefaults::init(); - let attr_info = json!({ "names":["name", "age", "email"], "restrictions": [ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11" } ] }); - let attr_info_2 = json!({ "name":"name", "restrictions": [ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11" } ] }); + let attr_info = json!({ + "names": ["name", "age", "email"], + "restrictions": [{"schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11"}] + }); + let attr_info_2 = json!({ + "name":"name", + "restrictions": [{"schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11" }] + }); let requested_attrs = json!([ attr_info, attr_info_2 ]).to_string(); - let request = proof_request().requested_attrs(&requested_attrs).unwrap().clone(); + let request = ProofRequestData::create() + .set_nonce().unwrap() + .set_requested_attributes(requested_attrs.into()).unwrap(); let mut expected_req_attrs: HashMap = HashMap::new(); - expected_req_attrs.insert("name,age,email".to_string(), serde_json::from_value(attr_info).unwrap()); - expected_req_attrs.insert("name".to_string(), serde_json::from_value(attr_info_2).unwrap()); - - assert_eq!(request.proof_request_data.requested_attributes, expected_req_attrs); + expected_req_attrs.insert("attribute_0".to_string(), serde_json::from_value(attr_info).unwrap()); + expected_req_attrs.insert("attribute_1".to_string(), serde_json::from_value(attr_info_2).unwrap()); + assert_eq!(request.requested_attributes, expected_req_attrs); } #[test] #[cfg(feature = "general_test")] - #[cfg(feature = "to_restore")] // equivalent for legacy proof request is ProofRequestMessage in ::aries - fn test_requested_attrs_constructed_correctly_for_name_and_names_passed_together() { + fn test_should_return_error_if_name_and_names_passed_together() { let _setup = SetupDefaults::init(); - let attr_info = json!({ "name":"name", "names":["name", "age", "email"], "restrictions": [ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11" } ] }); + let attr_info = json!({ + "name": "name", + "names": ["name", "age", "email"], + "restrictions": [{"schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11"}] + }); let requested_attrs = json!([ attr_info ]).to_string(); - let err = proof_request().requested_attrs(&requested_attrs).unwrap_err(); + let err = ProofRequestData::create() + .set_nonce().unwrap() + .set_requested_attributes(requested_attrs.into()).unwrap_err(); + assert_eq!(VcxErrorKind::InvalidProofRequest, err.kind()); } diff --git a/libvcx/src/utils/constants.rs b/libvcx/src/utils/constants.rs index 088b94b164..2b20982933 100644 --- a/libvcx/src/utils/constants.rs +++ b/libvcx/src/utils/constants.rs @@ -123,8 +123,75 @@ pub static CRED_REQ_META: &str = r#"{"master_secret_blinding_data":{"v_prime":"1 pub static CRED_MSG: &str = r#"{"libindy_cred":"{\"schema_id\":\"2hoqvcwupRTUNkXn6ArYzs:2:schema_name:0.0.11\",\"cred_def_id\":\"2hoqvcwupRTUNkXn6ArYzs:3:CL:1766\",\"rev_reg_id\":null,\"values\":{\"height\":{\"raw\":\"4'11\",\"encoded\":\"25730877424947290072821310314181366395232879096832067784637233452620527354832\"},\"age\":{\"raw\":\"111\",\"encoded\":\"111\"},\"sex\":{\"raw\":\"male\",\"encoded\":\"5944657099558967239210949258394887428692050081607692519917050011144233115103\"},\"name\":{\"raw\":\"Bob\",\"encoded\":\"93006290325627508022776103386395994712401809437930957652111221015872244345185\"}},\"signature\":{\"p_credential\":{\"m_2\":\"31700338570294708736115754102769589522052428093121126330650183539696104868123\",\"a\":\"10777649052904447971899236694871368615157106927137883243983784973724349774915878204190601305259309589996988012735617563373033607709078907060449376941073338535388140957053144620511038735390585352398809313788054894621970622962097379200139814737879331234340443432491207812590825372988648847512086844348645931065426804353485775147746746850653036793108739563282161226029489872217064496590096990996410375663681099302996640966261859643618526555960651408715258210076488491742907031110655225420976262789193112889439595882291621507322209956202063945312604763840144988947123849968934460179482607183670360949359821454772971820091\",\"e\":\"259344723055062059907025491480697571938277889515152306249728583105665800713306759149981690559193987143012367913206299323899696942213235956742930226791220947134161266625378239251141\",\"v\":\"7160478880681489530685862580760235815690858242009735266356112612110531077619018018744043866754230561900079704139707892346188258175742757433839011445634508511903733556129176372339461109974281812535163844969408357722949237345514578452747464596905366813789049296203267070506446149025051172379040959761841090727724798945098115057584230172106482217166053964970319273092742014147315899348492822710345385893980919314665444664429040406728835710379367961220002388750496482799359536328531598808901788276665120213222621777995199496941581486741108559747481685600546431381718103907044451091043539280123106649794109913982938490727549883865702810163586252395063675836236109438822521688323977901722596298354615024259460544081204452640402841343661689933452404340637850647367306402860427277243229048988096792242220128886520666550722580134\"},\"r_credential\":null},\"signature_correctness_proof\":{\"se\":\"18062198058440854120810610625451590757963491440128115225422806009942350909306158512388123981508665484690252474351987301071051987945324357904950477248786064911802058100232994530383060574083901579841043178811110977049370234755264015098980663707351501791255018614113725688784339672744140961024678477581256784699212629381680205164276918652123852380815787068178236680303525175583034099258492257694970206425311460126364558914028413305726055746979620971531243376004995305402532327579706724246771202804790956714271731586625803214770535637064539642240021230950311414542750938384933247250254390883187655604134427458185611530857\",\"c\":\"7209681799349211936664438159371869376664205836919843273264901864121026304303\"},\"rev_reg\":null,\"witness\":null}","rev_reg_def_json":"","cred_def_id":"2hoqvcwupRTUNkXn6ArYzs:3:CL:1766","msg_type":"CRED","claim_offer_id":"1234","version":"0.1","from_did":"44oqvcwupRTUNkXn6ArYzs"}"#; pub static CREDS_FROM_PROOF_REQ: &str = r#"{"attrs":{"height_1":[{"cred_info":{"referent":"92556f60-d290-4b58-9a43-05c25aac214e","attrs":{"name":"Bob","height":"4'11","sex":"male","age":"111"},"schema_id":"2hoqvcwupRTUNkXn6ArYzs:2:test-licence:4.4.4","cred_def_id":"2hoqvcwupRTUNkXn6ArYzs:3:CL:2471","rev_reg_id":null,"cred_rev_id":null},"interval":null}],"zip_2":[{"cred_info":{"referent":"2dea21e2-1404-4f85-966f-d03f403aac71","attrs":{"address2":"101 Wilson Lane","city":"SLC","state":"UT","zip":"87121","address1":"101 Tela Lane"},"schema_id":"2hoqvcwupRTUNkXn6ArYzs:2:Home Address:5.5.5","cred_def_id":"2hoqvcwupRTUNkXn6ArYzs:3:CL:2479","rev_reg_id":null,"cred_rev_id":null},"interval":null}]},"predicates":{}}"#; pub static PROOF_JSON: &str = r#"{"proof":{"proofs":[{"primary_proof":{"eq_proof":{"revealed_attrs":{"zip":"87121"},"a_prime":"11385117131660364111896731574172401420546708937324515452576064042574669257712348081839601624888211708194648786566821283532355289865761814401811668762111208667245892385556461650028028744704055636249982477585075400271187055151098908619974783653495410195833182515968533296209260588771695756312205872111048687853205561923237816546964283713422785468941977105067099251171604215251944317080214747243003427107934144216501594603687728398269433535428273623697427762663203253444115676455803364347007933198640450232624037803599295212149889810488912469008187381827942935958271186223675811120227514991467360019909918168868871310826","e":"106416440968489307688477111652744547884453520724896945262209396020249946843791285682305811237667052208528018943270519839389621717609114567","v":"693333598587517819941352847365742544380142765574139951146061816085618155189452020698413593997300585596324426252632314355582268506939303400407496417606249958981732261864957022478367092130677367027387866707732300909963513115315021003243992979679627258775140835220412197296938533762295871549731992640856382276196325998522049034267838563447330191852382971065392091768243880823490111370897368424139935395298937408562086499759656814447622881298133126653711399509169280794404022383866082757555249917245259236759269242823638516805150417229733278877402638802562166688388004908477637031034437462247846682697897200600573773942810246023809243280772183646809858924033191135463766964917504748987154189779729311869624825798007137022205256426446605413391018202025830072404371317952188965637832374449641811319605909172576074628353298939272848787572418960647922046317299399246159851863001665989283575050230911587927811099747218793149167944","m":{"address1":"14383563842714000336694832849665594946445962739184223209071037007452629790699757287294972813779623472744803572582328437911448950215408915191131611402522120804333222273489132084886","city":"6335807846068782600189687454462436112078812829004884052293133660597927372142081774735780601789659420890039727382522297770947316366004790684358611659096944452253560380208620107157","address2":"14091589660350349984354459530985480819537335363987179151561762220365706941537938554719525480994821015753311971694921036448081399741287968054078818802947721994040284668811562798267","state":"3374323397845656383843625203828356603754667474607034126894741033080120461511932284334653947059306129056440817463723283235350691497796837255669792651105389390523206636040269228223"},"m1":"3855360575146368990379338878340437444760062086797499842306857866860002517711237747809252335775444064433909759766687399940398272328893322787415703512272117087096813054972554563968","m2":"829849307958330576060854040909379039690330674646288918248299874016648994971333520820812771094141855582854026260700068274261655287053826960354567228953144532668188875028174450750"},"ge_proofs":[]},"non_revoc_proof":null},{"primary_proof":{"eq_proof":{"revealed_attrs":{"height":"25730877424947290072821310314181366395232879096832067784637233452620527354832"},"a_prime":"19606523040238141145717779531277522663224725021451964954928837778213780167806130611283656444876346090324217222925322088211429761142256636233006676888209824950866753616039040159779454392004510214888982466524158456130352445810766077072116343308981883033612830486699333857960241899822662839721374841002668163948377275672875472144246128931473522911282089521505706783701020863536724574924376299714351850171426752924728784363669376534908759391351622381020289812523865512890582404247961101220209552503431785599610046609564493669749669261122419593784559612666376852938604194178973814343952986182892452430023827671762557476463","e":"175708676962718808956603450728506825597108526784886396727551101010180796035520261116334855856024649318365254638362385900327196683643205289","v":"259807837216236716040272227118473612683891972149132456558837821820045873391789606085689340379415983105482747915525402053563208559407596040401913772550177102524653456118110816872909394038065296113425708018233090717854181564661116753447052574450590706580409613994542437680615027500439312381591222697969343626799892433263884943265734866198270469445076231573689904631155795742013664414011861042682562430778840652138660305373152231267819984539617728384058547342678165579739778850312059485316741860467804248135416832291520168882232179984203367316142165755286256284689566686572380792365871911853060464498285167571443335788402725298771375480014651263894303375604516169554253834245685148604580043733043610372908803488088857487861826680931152125459941500902596987258417619816375861312684684210554655250852226060290197739094390988802816264926238846473088662123137199115232833530286814846710257219453988118104609524238769962408378467","m":{"age":"7439137780003632501472198844883943985851982687398948370748383175062107337760437828394880407813732765383124554153414377359168765440779597987864714528157062929739375601687952057680","name":"478729181402353180485622154597836495776273289714890210090026576459958696376861534830836701841321719749324218544889558530446121758555251583232291309241803053682268055213713398699","sex":"3475750043210272427962584518900024357879025980293153402384602896340153685772192528112892451091903360990446424944281039234223910308784253682458410982729333916158905947811280570097"},"m1":"3855360575146368990379338878340437444760062086797499842306857866860002517711237747809252335775444064433909759766687399940398272328893322787415703512272117087096813054972554563968","m2":"11250551913673338582984048217906733348080383121220187035974642609915309422920937161820959912087373627684234183422675877388269370474604625896553325837450381771318770783786394439756"},"ge_proofs":[]},"non_revoc_proof":null}],"aggregated_proof":{"c_hash":"98289858372176739486785426465663295860443703464650074572637147012182597972573","c_list":[[90,48,0,0,86,54,61,179,29,65,240,170,216,13,100,217,170,179,191,79,71,2,133,94,84,120,87,90,167,161,166,221,56,137,73,156,8,139,61,114,10,131,241,112,150,110,102,170,132,231,229,250,177,131,6,33,158,228,233,190,125,211,244,238,143,232,12,25,154,52,34,54,194,237,16,20,239,207,37,3,211,34,39,70,253,226,25,2,235,164,40,227,87,103,108,40,93,125,174,74,139,95,111,175,124,1,26,204,120,172,3,125,18,149,107,209,82,168,46,185,96,173,161,80,33,165,32,40,166,106,141,41,55,143,50,219,37,210,114,90,104,64,249,193,195,157,51,34,174,127,83,251,254,102,199,221,199,239,204,13,221,216,8,254,107,100,14,31,49,38,187,243,247,12,116,110,169,98,85,202,127,237,149,126,10,115,200,229,74,131,202,195,188,176,253,132,25,117,104,197,73,252,211,192,235,136,7,83,136,235,152,98,99,208,232,50,165,117,245,89,138,255,143,241,113,14,130,94,125,253,252,74,45,73,67,49,87,12,106,218,197,238,82,134,231,210,33,228,189,181,71,168,252,217,141,234],[155,80,70,194,115,251,48,64,107,148,172,180,25,185,82,75,129,60,47,228,47,102,33,64,158,83,190,172,149,37,66,189,237,26,120,207,50,163,29,130,142,226,11,83,96,172,63,161,188,131,75,138,14,180,56,139,244,111,163,136,89,239,13,161,204,20,204,227,236,219,156,33,217,141,114,76,47,221,129,186,123,46,16,6,158,238,205,66,208,252,108,184,252,72,229,52,89,54,68,23,39,130,57,231,96,236,130,157,65,41,42,21,8,247,206,179,36,244,164,132,158,56,191,73,212,192,234,95,143,141,194,71,197,58,172,122,170,220,53,59,64,201,234,28,74,198,125,206,10,240,192,145,14,207,68,227,132,185,85,112,173,156,71,73,80,60,152,100,252,45,249,201,153,5,159,61,27,105,97,57,61,35,233,190,23,158,46,141,42,41,225,141,26,41,123,60,243,10,81,251,234,32,192,181,135,122,167,231,106,8,123,92,196,197,191,104,119,235,205,181,178,62,248,146,71,221,250,251,193,217,14,213,13,121,37,76,209,150,22,216,155,84,212,58,58,38,148,170,178,86,185,107,84,152,30,111]]}},"requested_proof":{"revealed_attrs":{"zip_2":{"sub_proof_index":0,"raw":"87121","encoded":"87121"},"height_1":{"sub_proof_index":1,"raw":"4'11","encoded":"25730877424947290072821310314181366395232879096832067784637233452620527354832"}},"self_attested_attrs":{"self_attest_3":"my_self_attested_val"},"unrevealed_attrs":{},"predicates":{}},"identifiers":[{"schema_id":"2hoqvcwupRTUNkXn6ArYzs:2:Home Address:5.5.5","cred_def_id":"2hoqvcwupRTUNkXn6ArYzs:3:CL:2479","rev_reg_id":null,"timestamp":null},{"schema_id":"2hoqvcwupRTUNkXn6ArYzs:2:test-licence:4.4.4","cred_def_id":"2hoqvcwupRTUNkXn6ArYzs:3:CL:2471","rev_reg_id":null,"timestamp":null}]}"#; -pub static REQUESTED_ATTRS: &str = r#"[ { "name":"age", "restrictions": [ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"Faber Student Info", "schema_version":"1.0", "schema_issuer_did":"6XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"8XFh8yBzrpJQmNyZzgoTqB", "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" }, { "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"BYU Student Info", "schema_version":"1.0", "schema_issuer_did":"5XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"66Fh8yBzrpJQmNyZzgoTqB", "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" } ] }, { "name":"name", "restrictions": [ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"Faber Student Info", "schema_version":"1.0", "schema_issuer_did":"6XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"8XFh8yBzrpJQmNyZzgoTqB", "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" }, { "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"BYU Student Info", "schema_version":"1.0", "schema_issuer_did":"5XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"66Fh8yBzrpJQmNyZzgoTqB", "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" } ] } ]"#; -pub static REQUESTED_PREDICATES: &str = r#"[{ "name":"age","p_type":"GE","p_value":22, "restrictions":[ { "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"Faber Student Info", "schema_version":"1.0", "schema_issuer_did":"6XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"8XFh8yBzrpJQmNyZzgoTqB", "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" }, { "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", "schema_name":"BYU Student Info", "schema_version":"1.0", "schema_issuer_did":"5XFh8yBzrpJQmNyZzgoTqB", "issuer_did":"66Fh8yBzrpJQmNyZzgoTqB", "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" }] }]"#; +pub static REQUESTED_ATTRS: &str = r#"[ + { + "name": "age", + "restrictions": [ + { + "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "Faber Student Info", + "schema_version": "1.0", + "schema_issuer_did": "6XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "8XFh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" + }, + { + "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "BYU Student Info", + "schema_version": "1.0", + "schema_issuer_did": "5XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "66Fh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" + } + ] + }, + { + "name": "name", + "restrictions": [ + { + "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "Faber Student Info", + "schema_version": "1.0", + "schema_issuer_did": "6XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "8XFh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" + }, + { + "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "BYU Student Info", + "schema_version": "1.0", + "schema_issuer_did": "5XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "66Fh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" + } + ] + } +]"#; +pub static REQUESTED_PREDICATES: &str = r#"[ + { + "name": "age", + "p_type": "GE", + "p_value": 22, + "restrictions": [ + { + "schema_id": "6XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "Faber Student Info", + "schema_version": "1.0", + "schema_issuer_did": "6XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "8XFh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "8XFh8yBzrpJQmNyZzgoTqB:3:CL:1766" + }, + { + "schema_id": "5XFh8yBzrpJQmNyZzgoTqB:2:schema_name:0.0.11", + "schema_name": "BYU Student Info", + "schema_version": "1.0", + "schema_issuer_did": "5XFh8yBzrpJQmNyZzgoTqB", + "issuer_did": "66Fh8yBzrpJQmNyZzgoTqB", + "cred_def_id": "66Fh8yBzrpJQmNyZzgoTqB:3:CL:1766" + } + ] + } +]"#; pub static ADDRESS_SCHEMA_ID: &str = r#"2hoqvcwupRTUNkXn6ArYzs:2:Home Address:5.5.5"#; pub static ADDRESS_SCHEMA_JSON: &str = r#"{"ver":"1.0","id":"2hoqvcwupRTUNkXn6ArYzs:2:Home Address:5.5.5","name":"Home Address","version":"5.5.5","attrNames":["city","address1","state","zip","address2"],"seqNo":2479}"#; pub static ADDRESS_CRED_DEF_ID: &str = r#"2hoqvcwupRTUNkXn6ArYzs:3:CL:2479"#; From a65d001642418c14b2086f685b441a93669ea117 Mon Sep 17 00:00:00 2001 From: Patrik Stas Date: Tue, 3 Nov 2020 08:49:50 +0100 Subject: [PATCH 7/7] Address PR review comments Signed-off-by: Patrik Stas --- libvcx/src/agency_comm/agency_settings.rs | 28 +++---------------- libvcx/src/agency_comm/create_key.rs | 9 +++--- libvcx/src/agency_comm/get_message.rs | 9 +++--- libvcx/src/agency_comm/mocking.rs | 25 ++++++++++++++--- libvcx/src/agency_comm/mod.rs | 5 ++-- libvcx/src/agency_comm/payload.rs | 2 +- libvcx/src/agency_comm/update_connection.rs | 4 +-- libvcx/src/agency_comm/update_message.rs | 7 +++-- libvcx/src/agency_comm/update_profile.rs | 4 +-- .../agency_comm/{ => utils}/agent_utils.rs | 8 +++--- .../agency_comm/{util.rs => utils/comm.rs} | 3 +- libvcx/src/agency_comm/utils/mod.rs | 2 ++ libvcx/src/api/utils.rs | 4 +-- libvcx/src/api/vcx.rs | 4 +-- libvcx/src/aries/mod.rs | 2 +- libvcx/src/credential_def.rs | 4 +-- libvcx/src/issuer_credential.rs | 2 +- libvcx/src/libindy/proofs/proof_request.rs | 6 ++-- .../libindy/proofs/prover/prover_internal.rs | 6 ++-- .../src/libindy/proofs/verifier/verifier.rs | 8 +++--- .../proofs/verifier/verifier_internal.rs | 1 - libvcx/src/settings.rs | 3 +- libvcx/src/utils/devsetup.rs | 8 +++--- libvcx/src/utils/httpclient.rs | 5 ++-- 24 files changed, 78 insertions(+), 81 deletions(-) rename libvcx/src/agency_comm/{ => utils}/agent_utils.rs (98%) rename libvcx/src/agency_comm/{util.rs => utils/comm.rs} (72%) create mode 100644 libvcx/src/agency_comm/utils/mod.rs diff --git a/libvcx/src/agency_comm/agency_settings.rs b/libvcx/src/agency_comm/agency_settings.rs index f69f02ba69..5bdfbf8c24 100644 --- a/libvcx/src/agency_comm/agency_settings.rs +++ b/libvcx/src/agency_comm/agency_settings.rs @@ -1,6 +1,5 @@ use std::borrow::Borrow; use std::collections::HashMap; -use std::path::Path; use std::sync::RwLock; use serde_json::Value; @@ -29,11 +28,6 @@ pub static VALID_AGENCY_CONFIG_KEYS: &[&str] = &[ CONFIG_ENABLE_TEST_MODE ]; - -pub static DEFAULT_DID: &str = "2hoqvcwupRTUNkXn6ArYzs"; -pub static DEFAULT_VERKEY: &str = "FuN98eH2eZybECWkofW6A9BKJxxnTatBCopfUiNxo6ZB"; -pub static DEFAULT_URL: &str = "http://127.0.0.1:8080"; - lazy_static! { static ref AGENCY_SETTINGS: RwLock> = RwLock::new(HashMap::new()); } @@ -60,6 +54,10 @@ fn validate_optional_config_val(val: Option<&String>, err: VcxErrorKind pub fn set_testing_defaults_agency() -> u32 { trace!("set_testing_defaults_agency >>>"); + let DEFAULT_DID= "2hoqvcwupRTUNkXn6ArYzs"; + let DEFAULT_VERKEY= "FuN98eH2eZybECWkofW6A9BKJxxnTatBCopfUiNxo6ZB"; + let DEFAULT_URL= "http://127.0.0.1:8080"; + // if this fails the test should exit let mut agency_settings = AGENCY_SETTINGS.write().unwrap(); @@ -153,21 +151,3 @@ pub fn set_config_value(key: &str, value: &str) { } -pub fn agency_mocks_enabled() -> bool { - let config = AGENCY_SETTINGS.read().unwrap(); - - match config.get(CONFIG_ENABLE_TEST_MODE) { - None => false, - Some(value) => value == "true" || value == "agency" - } -} - -pub fn agency_decrypted_mocks_enabled() -> bool { - let config = AGENCY_SETTINGS.read().unwrap(); - - match config.get(CONFIG_ENABLE_TEST_MODE) { - None => false, - Some(value) => value == "true" - } -} - diff --git a/libvcx/src/agency_comm/create_key.rs b/libvcx/src/agency_comm/create_key.rs index 0343a9a7a7..834d859b7c 100644 --- a/libvcx/src/agency_comm/create_key.rs +++ b/libvcx/src/agency_comm/create_key.rs @@ -1,9 +1,10 @@ use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, parse_response_from_agency, prepare_message_for_agency}; use agency_comm::message_type::MessageTypes; use agency_comm::mocking::AgencyMock; -use agency_comm::util::post_u8; +use agency_comm::utils::comm::post_to_agency; use error::prelude::*; use utils::{constants, httpclient, validation}; +use crate::agency_comm::mocking; #[derive(Deserialize, Serialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] @@ -55,15 +56,15 @@ impl CreateKeyBuilder { } pub fn send_secure(&self) -> VcxResult<(String, String)> { - trace!("CreateKeyMsg::send >>>"); + trace!("CreateKeyBuilder::send_secure >>>"); - if agency_settings::agency_mocks_enabled() { + if mocking::agency_mocks_enabled() { AgencyMock::set_next_response(constants::CREATE_KEYS_V2_RESPONSE.to_vec()); } let data = self.prepare_request()?; - let response = post_u8(&data)?; + let response = post_to_agency(&data)?; self.parse_response(&response) } diff --git a/libvcx/src/agency_comm/get_message.rs b/libvcx/src/agency_comm/get_message.rs index 7bf555e202..7b98a2cf52 100644 --- a/libvcx/src/agency_comm/get_message.rs +++ b/libvcx/src/agency_comm/get_message.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, GeneralMessage, get_messages, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency, prepare_message_for_agent, RemoteMessageType}; use agency_comm::message_type::MessageTypes; -use agency_comm::util::post_u8; +use agency_comm::utils::comm::post_to_agency; use aries::handlers::connection::agent_info::AgentInfo; use aries::messages::a2a::A2AMessage as AriesA2AMessage; use aries::utils::encryption_envelope::EncryptionEnvelope; @@ -10,6 +10,7 @@ use error::{VcxError, VcxErrorKind, VcxResult}; use settings; use settings::ProtocolTypes; use utils::{constants, httpclient}; +use crate::agency_comm::mocking; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] @@ -127,7 +128,7 @@ impl GetMessagesBuilder { let data = self.prepare_request()?; - let response = post_u8(&data)?; + let response = post_to_agency(&data)?; self.parse_response(response) } @@ -153,9 +154,9 @@ impl GetMessagesBuilder { let data = self.prepare_download_request()?; - let response = post_u8(&data)?; + let response = post_to_agency(&data)?; - if agency_settings::agency_mocks_enabled() && response.len() == 0 { + if mocking::agency_mocks_enabled() && response.len() == 0 { return Ok(Vec::new()); } diff --git a/libvcx/src/agency_comm/mocking.rs b/libvcx/src/agency_comm/mocking.rs index 4ee686ce0f..16d790fbe9 100644 --- a/libvcx/src/agency_comm/mocking.rs +++ b/libvcx/src/agency_comm/mocking.rs @@ -1,6 +1,8 @@ use std::sync::Mutex; use agency_comm::agency_settings; +use settings; +use settings::CONFIG_ENABLE_TEST_MODE; lazy_static! { static ref AGENCY_MOCK: Mutex = Mutex::new(AgencyMock::default()); @@ -25,7 +27,7 @@ pub struct AgencyMockDecrypted { impl AgencyMock { pub fn set_next_response(body: Vec) { - if agency_settings::agency_mocks_enabled() { + if agency_mocks_enabled() { AGENCY_MOCK.lock().unwrap().responses.push(body); } } @@ -37,7 +39,7 @@ impl AgencyMock { impl AgencyMockDecrypted { pub fn set_next_decrypted_response(body: &str) { - if agency_settings::agency_mocks_enabled() { + if agency_mocks_enabled() { AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.push(body.into()); } else { warn!("Attempting to set mocked decrypted response when mocks are not enabled!"); @@ -58,7 +60,7 @@ impl AgencyMockDecrypted { } pub fn set_next_decrypted_message(message: &str) { - if agency_settings::agency_mocks_enabled() { + if agency_mocks_enabled() { AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.push(message.into()); } else { warn!("Attempting to set mocked decrypted message when mocks are not enabled!"); @@ -77,4 +79,19 @@ impl AgencyMockDecrypted { AGENCY_MOCK_DECRYPTED_MESSAGES.lock().unwrap().messages.clear(); AGENCY_MOCK_DECRYPTED_RESPONSES.lock().unwrap().responses.clear(); } -} \ No newline at end of file +} + +pub fn agency_mocks_enabled() -> bool { + match agency_settings::get_config_value(CONFIG_ENABLE_TEST_MODE).ok() { + None => false, + Some(value) => value == "true" || value == "agency" + } +} + +pub fn agency_decrypted_mocks_enabled() -> bool { + match agency_settings::get_config_value(CONFIG_ENABLE_TEST_MODE).ok() { + None => false, + Some(value) => value == "true" + } +} + diff --git a/libvcx/src/agency_comm/mod.rs b/libvcx/src/agency_comm/mod.rs index 64c3391499..509ef904a1 100644 --- a/libvcx/src/agency_comm/mod.rs +++ b/libvcx/src/agency_comm/mod.rs @@ -8,7 +8,7 @@ use error::prelude::*; use libindy::utils::crypto; use utils::validation; -use self::agent_utils::{ComMethodUpdated, Connect, ConnectResponse, CreateAgent, CreateAgentResponse, SignUp, SignUpResponse, UpdateComMethod}; +use self::utils::agent_utils::{ComMethodUpdated, Connect, ConnectResponse, CreateAgent, CreateAgentResponse, SignUp, SignUpResponse, UpdateComMethod}; use self::create_key::{CreateKey, CreateKeyBuilder, CreateKeyResponse}; use self::get_message::{GetMessages, GetMessagesBuilder, GetMessagesResponse, MessagesByConnections}; use self::message_type::*; @@ -20,7 +20,7 @@ use agency_comm::mocking::AgencyMockDecrypted; pub mod create_key; pub mod get_message; pub mod update_profile; -pub mod agent_utils; +pub mod utils; pub mod update_connection; pub mod update_message; pub mod message_type; @@ -29,7 +29,6 @@ pub mod payload; pub mod thread; pub mod agency_settings; pub mod mocking; -mod util; #[derive(Debug, Serialize)] #[serde(untagged)] diff --git a/libvcx/src/agency_comm/payload.rs b/libvcx/src/agency_comm/payload.rs index 3a36809e26..6a1fed3fe4 100644 --- a/libvcx/src/agency_comm/payload.rs +++ b/libvcx/src/agency_comm/payload.rs @@ -1,10 +1,10 @@ use serde_json::Value; use agency_comm::get_message::MessagePayload; -use agency_comm::message_type::*; use agency_comm::thread::Thread; use error::{VcxError, VcxErrorKind, VcxResult}; use libindy::utils::crypto; +use agency_comm::message_type::MessageTypeV2; #[derive(Debug, Deserialize, Serialize, Clone, PartialEq)] #[serde(untagged)] diff --git a/libvcx/src/agency_comm/update_connection.rs b/libvcx/src/agency_comm/update_connection.rs index 312bc97443..8dd8e31ace 100644 --- a/libvcx/src/agency_comm/update_connection.rs +++ b/libvcx/src/agency_comm/update_connection.rs @@ -3,7 +3,7 @@ use serde_json::Value; use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, delete_connection, GeneralMessage, parse_response_from_agency, prepare_message_for_agent}; use agency_comm::message_type::MessageTypes; -use agency_comm::util::post_u8; +use agency_comm::utils::comm::post_to_agency; use error::prelude::*; use settings; use utils::httpclient; @@ -82,7 +82,7 @@ impl DeleteConnectionBuilder { let data = self.prepare_request()?; - let response = post_u8(&data)?; + let response = post_to_agency(&data)?; self.parse_response(&response) } diff --git a/libvcx/src/agency_comm/update_message.rs b/libvcx/src/agency_comm/update_message.rs index 143f395ac3..6d8fa73a88 100644 --- a/libvcx/src/agency_comm/update_message.rs +++ b/libvcx/src/agency_comm/update_message.rs @@ -1,10 +1,11 @@ use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, MessageStatusCode, parse_response_from_agency, prepare_message_for_agency}; use agency_comm::message_type::MessageTypes; use agency_comm::mocking::AgencyMock; -use agency_comm::util::post_u8; +use agency_comm::utils::comm::post_to_agency; use error::{VcxError, VcxErrorKind, VcxResult}; use settings; use utils::{constants, httpclient}; +use crate::agency_comm::mocking; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] @@ -66,7 +67,7 @@ impl UpdateMessageStatusByConnectionsBuilder { let data = self.prepare_request()?; - let response = post_u8(&data)?; + let response = post_to_agency(&data)?; self.parse_response(&response) } @@ -115,7 +116,7 @@ pub fn update_agency_messages(status_code: &str, msg_json: &str) -> VcxResult<() pub fn update_messages(status_code: MessageStatusCode, uids_by_conns: Vec) -> VcxResult<()> { trace!("update_messages >>> "); - if agency_settings::agency_mocks_enabled() { + if mocking::agency_mocks_enabled() { trace!("update_messages >>> agency mocks enabled, returning empty response"); return Ok(()); }; diff --git a/libvcx/src/agency_comm/update_profile.rs b/libvcx/src/agency_comm/update_profile.rs index 7d95c3810c..f6ffc09781 100644 --- a/libvcx/src/agency_comm/update_profile.rs +++ b/libvcx/src/agency_comm/update_profile.rs @@ -1,7 +1,7 @@ use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, parse_response_from_agency, prepare_message_for_agency}; use agency_comm::message_type::MessageTypes; use agency_comm::mocking::AgencyMock; -use agency_comm::util::post_u8; +use agency_comm::utils::comm::post_to_agency; use error::{VcxError, VcxErrorKind, VcxResult}; use settings; use utils::{httpclient, validation}; @@ -87,7 +87,7 @@ impl UpdateProfileDataBuilder { let data = self.prepare_request()?; - let response = post_u8(&data)?; + let response = post_to_agency(&data)?; self.parse_response(response) } diff --git a/libvcx/src/agency_comm/agent_utils.rs b/libvcx/src/agency_comm/utils/agent_utils.rs similarity index 98% rename from libvcx/src/agency_comm/agent_utils.rs rename to libvcx/src/agency_comm/utils/agent_utils.rs index e178ff2d97..eae49e9279 100644 --- a/libvcx/src/agency_comm/agent_utils.rs +++ b/libvcx/src/agency_comm/utils/agent_utils.rs @@ -2,10 +2,9 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value; use agency_comm::{A2AMessage, A2AMessageKinds, A2AMessageV2, agency_settings, parse_response_from_agency, prepare_message_for_agency}; -use agency_comm::agency_settings::agency_mocks_enabled; +use crate::agency_comm::mocking::agency_mocks_enabled; use agency_comm::message_type::MessageTypes; use agency_comm::mocking::AgencyMockDecrypted; -use agency_comm::util::post_u8; use error::prelude::*; use libindy::utils::{anoncreds, wallet}; use libindy::utils::signus::create_and_store_my_did; @@ -13,6 +12,7 @@ use libindy::utils::wallet::get_wallet_handle; use settings; use utils::{constants, error, httpclient}; use utils::option_util::get_or_default; +use agency_comm::utils::comm::post_to_agency; #[derive(Serialize, Deserialize, Debug)] pub struct Connect { @@ -411,7 +411,7 @@ fn update_agent_webhook_v2(to_did: &str, com_method: ComMethod) -> VcxResult<()> pub fn send_message_to_agency(message: &A2AMessage, did: &str) -> VcxResult> { let data = prepare_message_for_agency(message, &did)?; - let response = post_u8(&data) + let response = post_to_agency(&data) .map_err(|err| err.map(VcxErrorKind::InvalidHttpResponse, error::INVALID_HTTP_RESPONSE.message))?; parse_response_from_agency(&response) @@ -421,9 +421,9 @@ pub fn send_message_to_agency(message: &A2AMessage, did: &str) -> VcxResult) -> VcxResult> { +pub fn post_to_agency(body_content: &Vec) -> VcxResult> { let endpoint = format!("{}/agency/msg", agency_settings::get_config_value(agency_settings::CONFIG_AGENCY_ENDPOINT)?); utils::httpclient::post_message(body_content, &endpoint) } diff --git a/libvcx/src/agency_comm/utils/mod.rs b/libvcx/src/agency_comm/utils/mod.rs new file mode 100644 index 0000000000..90c92e9726 --- /dev/null +++ b/libvcx/src/agency_comm/utils/mod.rs @@ -0,0 +1,2 @@ +pub mod agent_utils; +pub(super) mod comm; \ No newline at end of file diff --git a/libvcx/src/api/utils.rs b/libvcx/src/api/utils.rs index ccc425cb91..be6acaee00 100644 --- a/libvcx/src/api/utils.rs +++ b/libvcx/src/api/utils.rs @@ -44,7 +44,7 @@ pub extern fn vcx_provision_agent(config: *const c_char) -> *mut c_char { trace!("vcx_provision_agent(config: {})", config); - match agency_comm::agent_utils::connect_register_provision(&config) { + match agency_comm::utils::agent_utils::connect_register_provision(&config) { Err(e) => { error!("Provision Agent Error {}.", e); let _res: u32 = e.into(); @@ -84,7 +84,7 @@ pub extern fn vcx_agent_provision_async(command_handle: CommandHandle, command_handle, config); thread::spawn(move || { - match agency_comm::agent_utils::connect_register_provision(&config) { + match agency_comm::utils::agent_utils::connect_register_provision(&config) { Err(e) => { error!("vcx_agent_provision_async_cb(command_handle: {}, rc: {}, config: NULL", command_handle, e); cb(command_handle, e.into(), ptr::null_mut()); diff --git a/libvcx/src/api/vcx.rs b/libvcx/src/api/vcx.rs index 761ecfee04..3325e1917e 100644 --- a/libvcx/src/api/vcx.rs +++ b/libvcx/src/api/vcx.rs @@ -314,7 +314,7 @@ fn _finish_init(command_handle: CommandHandle, cb: extern fn(xcommand_handle: Co info!("_finish_init: getting and setting webhook url"); match settings::get_config_value(settings::CONFIG_WEBHOOK_URL) { - Ok(webhook_url) => match ::agency_comm::agent_utils::update_agent_webhook(&webhook_url) { + Ok(webhook_url) => match ::agency_comm::utils::agent_utils::update_agent_webhook(&webhook_url) { Ok(()) => { info!("Agent webhook url updated on init, webhook_url={}", webhook_url); cb(command_handle, error::SUCCESS.code_num); @@ -515,7 +515,7 @@ pub extern fn vcx_update_webhook_url(command_handle: CommandHandle, settings::set_config_value(::settings::CONFIG_WEBHOOK_URL, ¬ification_webhook_url); spawn(move || { - match ::agency_comm::agent_utils::update_agent_webhook(¬ification_webhook_url[..]) { + match ::agency_comm::utils::agent_utils::update_agent_webhook(¬ification_webhook_url[..]) { Ok(()) => { trace!("vcx_update_webhook_url_cb(command_handle: {}, rc: {})", command_handle, error::SUCCESS.message); diff --git a/libvcx/src/aries/mod.rs b/libvcx/src/aries/mod.rs index ed482f65b7..0b3223f63d 100644 --- a/libvcx/src/aries/mod.rs +++ b/libvcx/src/aries/mod.rs @@ -11,7 +11,7 @@ pub mod test { use ::{rand, settings}; use rand::Rng; - use agency_comm::agent_utils::connect_register_provision; + use agency_comm::utils::agent_utils::connect_register_provision; use agency_comm::payload::{PayloadKinds}; use utils::devsetup::*; use libindy::utils::wallet::*; diff --git a/libvcx/src/credential_def.rs b/libvcx/src/credential_def.rs index 7e2c57e44a..820accaa5d 100644 --- a/libvcx/src/credential_def.rs +++ b/libvcx/src/credential_def.rs @@ -535,7 +535,7 @@ pub mod tests { #[cfg(feature = "pool_tests")] use libindy::utils::payments::add_new_did; - use settings; + use ::{settings}; use utils::{ constants::SCHEMA_ID, get_temp_dir_path, @@ -650,7 +650,7 @@ pub mod tests { fn test_tails_url_written_to_ledger() { let _setup = SetupLibraryWalletPoolZeroFees::init(); - let (schema_id, _) = ::utils::libindy::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); + let (schema_id, _) = ::libindy::utils::anoncreds::tests::create_and_write_test_schema(::utils::constants::DEFAULT_SCHEMA_ATTRS); let did = settings::get_config_value(settings::CONFIG_INSTITUTION_DID).unwrap(); let tails_url = "https://get-tails-here.org"; diff --git a/libvcx/src/issuer_credential.rs b/libvcx/src/issuer_credential.rs index 8431ef7a0a..3db1d7edfc 100644 --- a/libvcx/src/issuer_credential.rs +++ b/libvcx/src/issuer_credential.rs @@ -176,7 +176,7 @@ pub mod tests { use credential_def::tests::create_cred_def_fake; use libindy::utils::anoncreds::libindy_create_and_store_credential_def; use libindy::utils::LibindyMock; - use utils::constants::{SCHEMAS_JSON, V3_OBJECT_SERIALIZE_VERSION}; + use utils::constants::{SCHEMAS_JSON, V3_OBJECT_SERIALIZE_VERSION, REV_REG_ID}; #[allow(unused_imports)] use utils::devsetup::*; use utils::httpclient::HttpClientMockResponse; diff --git a/libvcx/src/libindy/proofs/proof_request.rs b/libvcx/src/libindy/proofs/proof_request.rs index 13b6493d2e..4f839f241f 100644 --- a/libvcx/src/libindy/proofs/proof_request.rs +++ b/libvcx/src/libindy/proofs/proof_request.rs @@ -3,12 +3,10 @@ use std::vec::Vec; use serde_json; -use aries::messages::connection::service::Service; use error::prelude::*; use libindy::proofs::proof_request_internal::{AttrInfo, NonRevokedInterval, PredicateInfo}; use libindy::utils::anoncreds; use utils::qualifier; -use utils::validation; #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct ProofRequestData { @@ -224,8 +222,8 @@ mod tests { ] }"#).unwrap(); - check_req_attrs.insert("age".to_string(), attr_info1); - check_req_attrs.insert("name".to_string(), attr_info2); + check_req_attrs.insert("attribute_0".to_string(), attr_info1); + check_req_attrs.insert("attribute_1".to_string(), attr_info2); let request = ProofRequestData::create() .set_nonce().unwrap() diff --git a/libvcx/src/libindy/proofs/prover/prover_internal.rs b/libvcx/src/libindy/proofs/prover/prover_internal.rs index 5c3182fe41..b75834b21d 100644 --- a/libvcx/src/libindy/proofs/prover/prover_internal.rs +++ b/libvcx/src/libindy/proofs/prover/prover_internal.rs @@ -23,7 +23,7 @@ pub struct CredInfoProver { pub timestamp: Option, } -fn build_schemas_json_prover(credentials_identifiers: &Vec) -> VcxResult { +pub fn build_schemas_json_prover(credentials_identifiers: &Vec) -> VcxResult { trace!("build_schemas_json_prover >>> credentials_identifiers: {:?}", credentials_identifiers); let mut rtn: Value = json!({}); @@ -41,7 +41,7 @@ fn build_schemas_json_prover(credentials_identifiers: &Vec) -> V Ok(rtn.to_string()) } -fn build_cred_defs_json_prover(credentials_identifiers: &Vec) -> VcxResult { +pub fn build_cred_defs_json_prover(credentials_identifiers: &Vec) -> VcxResult { trace!("build_cred_defs_json_prover >>> credentials_identifiers: {:?}", credentials_identifiers); let mut rtn: Value = json!({}); @@ -261,7 +261,7 @@ pub fn build_requested_credentials_json(credentials_identifiers: &Vec VcxResult< pub mod tests { use super::*; use utils::devsetup::SetupLibraryWalletPoolZeroFees; - use aries::messages::proof_presentation::presentation_request::PresentationRequestData; + use libindy::proofs::proof_request::ProofRequestData; #[test] #[cfg(feature = "pool_tests")] @@ -68,7 +68,7 @@ pub mod tests { let revocation_details = r#"{"support_revocation":false}"#.to_string(); let name = "Optional".to_owned(); - let proof_req_json = PresentationRequestData::create() + let proof_req_json = ProofRequestData::create() .set_name(name) .set_requested_attributes(requested_attrs).unwrap() .set_requested_predicates(requested_predicates).unwrap() @@ -117,7 +117,7 @@ pub mod tests { let revocation_details = r#"{"support_revocation":true}"#.to_string(); let name = "Optional".to_owned(); - let proof_req_json = PresentationRequestData::create() + let proof_req_json = ProofRequestData::create() .set_name(name) .set_requested_attributes(requested_attrs).unwrap() .set_requested_predicates(requested_predicates).unwrap() @@ -178,7 +178,7 @@ pub mod tests { let revocation_details = r#"{"support_revocation":true}"#.to_string(); let name = "Optional".to_owned(); - let proof_req_json = PresentationRequestData::create() + let proof_req_json = ProofRequestData::create() .set_name(name) .set_requested_attributes(requested_attrs).unwrap() .set_requested_predicates(requested_predicates).unwrap() diff --git a/libvcx/src/libindy/proofs/verifier/verifier_internal.rs b/libvcx/src/libindy/proofs/verifier/verifier_internal.rs index 2c6492f6ac..6b1f2878db 100644 --- a/libvcx/src/libindy/proofs/verifier/verifier_internal.rs +++ b/libvcx/src/libindy/proofs/verifier/verifier_internal.rs @@ -168,7 +168,6 @@ pub fn build_rev_reg_json(credential_data: &Vec) -> VcxResult< pub mod tests { use api::VcxStateType; use aries::handlers::proof_presentation::verifier::verifier::Verifier; - use aries::messages::proof_presentation::presentation_request::PresentationRequestData; use connection::tests::build_test_connection_inviter_requested; use utils::constants::*; use utils::devsetup::*; diff --git a/libvcx/src/settings.rs b/libvcx/src/settings.rs index 8b5d9b2441..3e5fe359bb 100644 --- a/libvcx/src/settings.rs +++ b/libvcx/src/settings.rs @@ -12,7 +12,6 @@ use strum::IntoEnumIterator; use url::Url; use agency_comm::agency_settings; -use agency_comm::agency_settings::process_agency_config_string; use error::prelude::*; use utils::{error, get_temp_dir_path}; use utils::file::read_file; @@ -209,7 +208,7 @@ pub fn process_config_string(config: &str, do_validation: bool) -> VcxResult> Going to provision enterprise using config: {:?}", &config); - let enterprise_config = ::agency_comm::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let enterprise_config = ::agency_comm::utils::agent_utils::connect_register_provision(&config.to_string()).unwrap(); ::api::vcx::vcx_shutdown(false); @@ -491,7 +491,7 @@ pub fn setup_agency_env(protocol_type: &str, use_zero_fees: bool) { } debug!("setup_agency_env >> Going to provision consumer using config: {:?}", &config); - let consumer_config = ::agency_comm::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let consumer_config = ::agency_comm::utils::agent_utils::connect_register_provision(&config.to_string()).unwrap(); unsafe { INSTITUTION_CONFIG = CONFIG_STRING.add(config_with_wallet_handle(&enterprise_wallet_name, &enterprise_config)).unwrap(); @@ -542,7 +542,7 @@ pub fn create_consumer_config() -> u32 { }); debug!("create_consumer_config >> Going to provision consumer using config: {:?}", &config); - let consumer_config = ::agency_comm::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let consumer_config = ::agency_comm::utils::agent_utils::connect_register_provision(&config.to_string()).unwrap(); CONFIG_STRING.add(config_with_wallet_handle(&consumer_wallet_name, &consumer_config.to_string())).unwrap() } @@ -572,7 +572,7 @@ pub fn create_institution_config() -> u32 { }); debug!("create_institution_config >> Going to provision enterprise using config: {:?}", &config); - let enterprise_config = ::agency_comm::agent_utils::connect_register_provision(&config.to_string()).unwrap(); + let enterprise_config = ::agency_comm::utils::agent_utils::connect_register_provision(&config.to_string()).unwrap(); let handle = CONFIG_STRING.add(config_with_wallet_handle(&enterprise_wallet_name, &enterprise_config.to_string())).unwrap(); diff --git a/libvcx/src/utils/httpclient.rs b/libvcx/src/utils/httpclient.rs index 76c643fac4..2987174d9a 100644 --- a/libvcx/src/utils/httpclient.rs +++ b/libvcx/src/utils/httpclient.rs @@ -9,6 +9,7 @@ use agency_comm::agency_settings; use agency_comm::mocking::{AgencyMock, AgencyMockDecrypted}; use error::prelude::*; use settings; +use crate::agency_comm::mocking; lazy_static! { static ref HTTPCLIENT_MOCK_RESPONSES: Mutex = Mutex::new(HttpClientMockResponse::default()); @@ -21,7 +22,7 @@ pub struct HttpClientMockResponse { impl HttpClientMockResponse { pub fn set_next_response(response: VcxResult>) { - if agency_settings::agency_mocks_enabled() { + if mocking::agency_mocks_enabled() { HTTPCLIENT_MOCK_RESPONSES.lock().unwrap().responses.push(response); } } @@ -37,7 +38,7 @@ impl HttpClientMockResponse { pub fn post_message(body_content: &Vec, url: &str) -> VcxResult> { // todo: this function should be general, not knowing that agency exists -> move agency mocks to agency module - if agency_settings::agency_mocks_enabled() { + if mocking::agency_mocks_enabled() { if HttpClientMockResponse::has_response() { warn!("HttpClient has mocked response"); return HttpClientMockResponse::get_response();