Skip to content

Commit

Permalink
Restructure c-files (#295)
Browse files Browse the repository at this point in the history
* Move cstring and ccalback to abi_utils module

Signed-off-by: Patrik Stas <[email protected]>

* Move c-abi testing timeout utils

Signed-off-by: Patrik Stas <[email protected]>

* Move threadpool file

Signed-off-by: Patrik Stas <[email protected]>

* Move c return_types file

Signed-off-by: Patrik Stas <[email protected]>

* Optimize imports

Signed-off-by: Patrik Stas <[email protected]>

* Rename module 'api' to 'api_c'

Signed-off-by: Patrik Stas <[email protected]>

* Move abi_utils to api_c/utils_c

Signed-off-by: Patrik Stas <[email protected]>

* Move state conversion to separate file

Signed-off-by: Patrik Stas <[email protected]>

* Adjust imports for tests

Signed-off-by: Patrik Stas <[email protected]>

* Restructure api_c files, extract handles api

Signed-off-by: Patrik Stas <[email protected]>

* Reformat and optimize imports in api_lib

Signed-off-by: Patrik Stas <[email protected]>

* Move c-errors related code to api_lib module

Signed-off-by: Patrik Stas <[email protected]>

* Remove unused devsetup global variable

Signed-off-by: Patrik Stas <[email protected]>

* Move object_cache to api_handle module

Signed-off-by: Patrik Stas <[email protected]>

* Fix compile error

Signed-off-by: Patrik Stas <[email protected]>

* Refarmat and optimize imports in api_lib

Signed-off-by: Patrik Stas <[email protected]>

* Remove unused import

Signed-off-by: Patrik Stas <[email protected]>
  • Loading branch information
Patrik-Stas authored Jun 30, 2021
1 parent 97ad60a commit 3c2165d
Show file tree
Hide file tree
Showing 49 changed files with 575 additions and 540 deletions.
20 changes: 10 additions & 10 deletions aries.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
* #### Connection Protocol [`https://didcomm.org/connections/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0160-connection-protocol)
* [Inviter API](./libvcx/src/api/connection.rs)
* [Invitee API](./libvcx/src/api/connection.rs)
* [Inviter API](libvcx/src/api_lib/connection.rs)
* [Invitee API](libvcx/src/api_lib/connection.rs)
* [Implementation](./libvcx/src/aries/handlers/connection/)
- Missing implicit invitation

* #### Basic Message: [`https://didcomm.org/basicmessage/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0095-basic-message)
* [Implementation](./libvcx/src/aries/handlers/connection/)
* [Send API](./libvcx/src/api/connection.rs)
* [Download API](./libvcx/src/api/utils.rs)
* [Send API](libvcx/src/api_lib/connection.rs)
* [Download API](libvcx/src/api_lib/utils.rs)

* #### Credential Issuance [`https://didcomm.org/issue-credential/1.0/*`](https://github.com/hyperledger/aries-rfcs/blob/master/features/0036-issue-credential)
* [Issuer API](./libvcx/src/api/issuer_credential.rs)
* [Holder API](./libvcx/src/api/credential.rs)
* [Issuer API](libvcx/src/api_lib/issuer_credential.rs)
* [Holder API](libvcx/src/api_lib/credential.rs)
* [Implementation](./libvcx/src/aries/handlers/issuance/)
- Missing initiation by holder using `propose-credential` message

* #### Credential Presentation: [`https://didcomm.org/present-proof/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0037-present-proof)
* [Verifier API](./libvcx/src/api/proof.rs)
* [Prover API](./libvcx/src/api/disclosed_proof.rs)
* [Verifier API](libvcx/src/api_lib/proof.rs)
* [Prover API](libvcx/src/api_lib/disclosed_proof.rs)
* [Implementation](./libvcx/src/aries/handlers/proof_presentation)
- Missing initiation or alternation of presentation by prover using `propose-presentation` message

* #### Trust Ping: [`https://didcomm.org/trust_ping/1.0/*`](https://github.com/hyperledger/aries-rfcs/blob/master/features/0048-trust-ping/README.md)
* [API](./libvcx/src/api/connection.rs)
* [API](libvcx/src/api_lib/connection.rs)
* [Implementation](./libvcx/src/aries/handlers/connection/)

* #### Discover Features: [`https://didcomm.org/discover-features/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0031-discover-features)
* [API](./libvcx/src/api/connection.rs)
* [API](libvcx/src/api_lib/connection.rs)
* [Implementation](./libvcx/src/aries/handlers/connection/)
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ use std::ptr;
use indy_sys::CommandHandle;
use libc::c_char;

use crate::{connection, libindy, utils};
use crate::api_lib::api_handle::connection::*;
use crate::api_lib::api_handle::connection;
use crate::api_lib::utils_c;
use crate::api_lib::utils_c::cstring::CStringUtils;
use crate::api_lib::utils_c::runtime::execute;
use crate::aries::messages::a2a::A2AMessage;
use crate::connection::*;
use crate::error::prelude::*;
use crate::utils::cstring::CStringUtils;
use crate::libindy;
use crate::utils::error;
use crate::utils::runtime::execute;

/*
Tha API represents a pairwise connection with another identity owner.
Expand Down Expand Up @@ -848,7 +850,7 @@ pub extern fn vcx_connection_sign_data(command_handle: CommandHandle,
trace!("vcx_connection_sign_data_cb(command_handle: {}, connection_handle: {}, rc: {}, signature: {:?})",
command_handle, connection_handle, error::SUCCESS.message, x);

let (signature_raw, signature_len) = utils::cstring::vec_to_pointer(&x);
let (signature_raw, signature_len) = utils_c::cstring::vec_to_pointer(&x);
cb(command_handle, error::SUCCESS.code_num, signature_raw, signature_len);
}
Err(e) => {
Expand Down Expand Up @@ -1209,14 +1211,15 @@ mod tests {
use serde_json::Value;

use crate::agency_client::mocking::AgencyMockDecrypted;
use crate::api::{return_types_u32, VcxStateType};
use crate::connection::tests::{build_test_connection_inviter_invited, build_test_connection_inviter_null, build_test_connection_inviter_requested};
use crate::api_lib::api_handle::connection::tests::{build_test_connection_inviter_invited, build_test_connection_inviter_null, build_test_connection_inviter_requested};
use crate::api_lib::utils_c::return_types_u32;
use crate::api_lib::utils_c::timeout::TimeoutUtils;
use crate::api_lib::VcxStateType;
use crate::utils::constants::{DELETE_CONNECTION_DECRYPTED_RESPONSE, GET_MESSAGES_DECRYPTED_RESPONSE};
use crate::utils::devsetup::*;
use crate::utils::error;
use crate::utils::error::SUCCESS;
use crate::utils::mockdata::mockdata_connection::{ARIES_CONNECTION_ACK, ARIES_CONNECTION_REQUEST, DEFAULT_SERIALIZED_CONNECTION};
use crate::utils::timeout::TimeoutUtils;

use super::*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ use std::ptr;
use indy_sys::CommandHandle;
use libc::c_char;

use crate::connection;
use crate::credential;
use crate::api_lib::api_handle::connection;
use crate::api_lib::api_handle::credential;
use crate::api_lib::utils_c::cstring::CStringUtils;
use crate::api_lib::utils_c::runtime::execute;
use crate::error::prelude::*;
use crate::utils::cstring::CStringUtils;
use crate::utils::error;
use crate::utils::runtime::execute;

/*
The API represents a Holder side in credential issuance process.
Expand Down Expand Up @@ -418,8 +418,8 @@ pub extern fn vcx_credential_get_rev_reg_id(command_handle: CommandHandle,

#[no_mangle]
pub extern fn vcx_credential_is_revokable(command_handle: CommandHandle,
credential_handle: u32,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, revokable: bool)>) -> u32 {
credential_handle: u32,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, revokable: bool)>) -> u32 {
info!("vcx_credential_is_revokable >>> credential_handle: {:?}", credential_handle);

check_useful_c_callback!(cb, VcxErrorKind::InvalidOption);
Expand Down Expand Up @@ -746,10 +746,10 @@ pub extern fn vcx_v2_credential_update_state(command_handle: CommandHandle,
/// Error code as a u32
#[no_mangle]
pub extern fn vcx_v2_credential_update_state_with_message(command_handle: CommandHandle,
credential_handle: u32,
connection_handle: u32,
message: *const c_char,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, state: u32)>) -> u32 {
credential_handle: u32,
connection_handle: u32,
message: *const c_char,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, state: u32)>) -> u32 {
info!("vcx_v2_credential_update_state_with_message >>>");

check_useful_c_callback!(cb, VcxErrorKind::InvalidOption);
Expand Down Expand Up @@ -997,13 +997,13 @@ mod tests {

use agency_client::mocking::AgencyMockDecrypted;

use crate::api::return_types_u32;
use crate::api::VcxStateType;
use crate::credential::tests::BAD_CREDENTIAL_OFFER;
use crate::api_lib::api_handle::credential::tests::BAD_CREDENTIAL_OFFER;
use crate::api_lib::utils_c::return_types_u32;
use crate::api_lib::utils_c::timeout::TimeoutUtils;
use crate::api_lib::VcxStateType;
use crate::utils::constants::{GET_MESSAGES_DECRYPTED_RESPONSE, V3_OBJECT_SERIALIZE_VERSION};
use crate::utils::devsetup::*;
use crate::utils::mockdata::mockdata_credex::{ARIES_CREDENTIAL_OFFER, ARIES_CREDENTIAL_RESPONSE, CREDENTIAL_SM_FINISHED};
use crate::utils::timeout::TimeoutUtils;

use super::*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ use indy_sys::CommandHandle;
use libc::c_char;
use serde_json;

use crate::{credential_def, settings};
use crate::api_lib::api_handle::credential_def;
use crate::api_lib::utils_c::cstring::CStringUtils;
use crate::api_lib::utils_c::runtime::execute;
use crate::error::prelude::*;
use crate::utils::cstring::CStringUtils;
use crate::settings;
use crate::utils::error;
use crate::utils::runtime::execute;

/// Create a new CredentialDef object and publish correspondent record on the ledger
///
Expand Down Expand Up @@ -519,11 +520,11 @@ mod tests {

use std::ffi::CString;

use crate::{api, settings, utils};
use crate::api::return_types_u32;
use crate::{api_lib, settings, utils};
use crate::api_lib::utils_c::return_types_u32;
use crate::api_lib::utils_c::timeout::TimeoutUtils;
use crate::utils::constants::SCHEMA_ID;
use crate::utils::devsetup::*;
use crate::utils::timeout::TimeoutUtils;

use super::*;

Expand Down Expand Up @@ -679,17 +680,17 @@ mod tests {
{
let cb = return_types_u32::Return_U32_U32::new().unwrap();
let _rc = vcx_credentialdef_get_state(cb.command_handle, handle, Some(cb.get_callback()));
assert_eq!(cb.receive(TimeoutUtils::some_medium()).unwrap(), api::PublicEntityStateType::Built as u32)
assert_eq!(cb.receive(TimeoutUtils::some_medium()).unwrap(), api_lib::PublicEntityStateType::Built as u32)
}
{
let cb = return_types_u32::Return_U32_U32::new().unwrap();
let _rc = vcx_credentialdef_update_state(cb.command_handle, handle, Some(cb.get_callback()));
assert_eq!(cb.receive(TimeoutUtils::some_medium()).unwrap(), api::PublicEntityStateType::Published as u32);
assert_eq!(cb.receive(TimeoutUtils::some_medium()).unwrap(), api_lib::PublicEntityStateType::Published as u32);
}
{
let cb = return_types_u32::Return_U32_U32::new().unwrap();
let _rc = vcx_credentialdef_get_state(cb.command_handle, handle, Some(cb.get_callback()));
assert_eq!(cb.receive(TimeoutUtils::some_medium()).unwrap(), api::PublicEntityStateType::Published as u32)
assert_eq!(cb.receive(TimeoutUtils::some_medium()).unwrap(), api_lib::PublicEntityStateType::Published as u32)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ use std::ptr;
use indy_sys::CommandHandle;
use libc::c_char;

use crate::{connection, disclosed_proof};
use crate::api_lib::api_handle::connection;
use crate::api_lib::api_handle::disclosed_proof;
use crate::api_lib::utils_c::cstring::CStringUtils;
use crate::api_lib::utils_c::runtime::execute;
use crate::error::prelude::*;
use crate::utils::cstring::CStringUtils;
use crate::utils::error;
use crate::utils::runtime::execute;

/*
APIs in this module are called by a prover throughout the request-proof-and-verify process.
Expand Down Expand Up @@ -545,10 +546,10 @@ pub extern fn vcx_v2_disclosed_proof_update_state(command_handle: CommandHandle,
/// Error code as a u32
#[no_mangle]
pub extern fn vcx_v2_disclosed_proof_update_state_with_message(command_handle: CommandHandle,
proof_handle: u32,
connection_handle: u32,
message: *const c_char,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, state: u32)>) -> u32 {
proof_handle: u32,
connection_handle: u32,
message: *const c_char,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, state: u32)>) -> u32 {
info!("vcx_v2_disclosed_proof_update_state_with_message >>>");

check_useful_c_callback!(cb, VcxErrorKind::InvalidOption);
Expand Down Expand Up @@ -954,13 +955,14 @@ mod tests {

use agency_client::mocking::AgencyMockDecrypted;

use crate::api::{return_types_u32, VcxStateType};
use crate::api_lib::utils_c::return_types_u32;
use crate::api_lib::utils_c::timeout::TimeoutUtils;
use crate::api_lib::VcxStateType;
use crate::utils::constants::{CREDS_FROM_PROOF_REQ, GET_MESSAGES_DECRYPTED_RESPONSE, V3_OBJECT_SERIALIZE_VERSION};
use crate::utils::devsetup::*;
use crate::utils::mockdata::mock_settings::MockBuilder;
use crate::utils::mockdata::mockdata_credex::ARIES_CREDENTIAL_REQUEST;
use crate::utils::mockdata::mockdata_proof::ARIES_PROOF_REQUEST_PRESENTATION;
use crate::utils::timeout::TimeoutUtils;

use super::*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ use std::ptr;
use indy_sys::CommandHandle;
use libc::c_char;

use crate::api_lib::utils_c::cstring::CStringUtils;
use crate::api_lib::utils_c::runtime::execute;
use crate::error::prelude::*;
use crate::filters;
use crate::utils::cstring::CStringUtils;
use crate::utils::error;
use crate::utils::runtime::execute;

/// Filters proof requests based on name selected by verifier when creating the request.
///
Expand Down Expand Up @@ -62,11 +62,12 @@ mod tests {

use agency_client::mocking::AgencyMockDecrypted;

use crate::api::filters::vcx_filter_proof_requests_by_name;
use crate::api::return_types_u32;
use crate::connection;
use crate::disclosed_proof::get_proof_request_messages;
use crate::utils::{constants::GET_MESSAGES_DECRYPTED_RESPONSE, devsetup::*, error, mockdata::mockdata_proof, timeout::TimeoutUtils};
use crate::api_lib::api_c::filters::vcx_filter_proof_requests_by_name;
use crate::api_lib::api_handle::connection;
use crate::api_lib::api_handle::disclosed_proof::get_proof_request_messages;
use crate::api_lib::utils_c::return_types_u32;
use crate::api_lib::utils_c::timeout::TimeoutUtils;
use crate::utils::{constants::GET_MESSAGES_DECRYPTED_RESPONSE, devsetup::*, error, mockdata::mockdata_proof};

#[test]
#[cfg(feature = "general_test")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ use std::ptr;
use indy_sys::CommandHandle;
use libc::c_char;

use crate::{connection, credential_def, issuer_credential, settings};
use crate::api_lib::api_handle::{connection, credential_def, issuer_credential};
use crate::api_lib::utils_c::cstring::CStringUtils;
use crate::api_lib::utils_c::runtime::execute;
use crate::error::prelude::*;
use crate::utils::cstring::CStringUtils;
use crate::settings;
use crate::utils::error;
use crate::utils::runtime::execute;

/*
The API represents an Issuer side in credential issuance process.
Expand Down Expand Up @@ -333,10 +334,10 @@ pub extern fn vcx_v2_issuer_credential_update_state(command_handle: CommandHandl
/// Error code as a u32
#[no_mangle]
pub extern fn vcx_v2_issuer_credential_update_state_with_message(command_handle: CommandHandle,
credential_handle: u32,
connection_handle: u32,
message: *const c_char,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, state: u32)>) -> u32 {
credential_handle: u32,
connection_handle: u32,
message: *const c_char,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, state: u32)>) -> u32 {
info!("vcx_v2_issuer_credential_update_state_with_message >>>");

check_useful_c_callback!(cb, VcxErrorKind::InvalidOption);
Expand Down Expand Up @@ -582,8 +583,8 @@ pub extern fn vcx_issuer_credential_get_rev_reg_id(command_handle: CommandHandle

#[no_mangle]
pub extern fn vcx_issuer_credential_is_revokable(command_handle: CommandHandle,
credential_handle: u32,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, revokable: bool)>) -> u32 {
credential_handle: u32,
cb: Option<extern fn(xcommand_handle: CommandHandle, err: u32, revokable: bool)>) -> u32 {
info!("vcx_issuer_credential_is_revokable >>>");

check_useful_c_callback!(cb, VcxErrorKind::InvalidOption);
Expand Down Expand Up @@ -849,13 +850,14 @@ pub mod tests {

use agency_client::mocking::AgencyMockDecrypted;

use crate::api::{return_types_u32, VcxStateType};
use crate::api_lib::utils_c::return_types_u32;
use crate::api_lib::utils_c::timeout::TimeoutUtils;
use crate::api_lib::VcxStateType;
use crate::settings;
use crate::utils::constants::*;
use crate::utils::devsetup::*;
use crate::utils::get_temp_dir_path;
use crate::utils::mockdata::mockdata_credex::{ARIES_CREDENTIAL_REQUEST, CREDENTIAL_ISSUER_SM_FINISHED};
use crate::utils::timeout::TimeoutUtils;

use super::*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use libc::c_char;

use crate::api_lib::utils_c::cstring::CStringUtils;
use crate::error::prelude::*;
use crate::utils::cstring::CStringUtils;
use crate::utils::error::SUCCESS;
use crate::utils::logger::{CVoid, EnabledCB, FlushCB, LibvcxDefaultLogger, LibvcxLogger, LogCB, LOGGER_STATE};

Expand Down
12 changes: 12 additions & 0 deletions libvcx/src/api_lib/api_c/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
pub mod connection;
pub mod credential;
pub mod credential_def;
pub mod disclosed_proof;
pub mod issuer_credential;
pub mod logger;
pub mod proof;
pub mod schema;
pub mod utils;
pub mod vcx;
pub mod wallet;
mod filters;
Loading

0 comments on commit 3c2165d

Please sign in to comment.