Ev-VCX provides a high level API to use VDR Tools for credential exchange, packaged as a Rust library that can be accessed through wrappers in various languages. Ev-VCX simplifies using VDR Tools for Aries compatible credential exchange.
Evernym LibVCX was originally built as a high level API for LibIndy and deployed as the core of Verity 1, Evernym’s original enterprise product for issuing and verifying credentials. It was contributed to Hyperledger as part of the Indy SDK. Over time, the Hyperledger community decided to split LibVCX from the Indy SDK Aries VCX where it continues to be maintained for their use cases. Evernym has resumed maintaining Ev-VCX as our own library in order to focus on mobile deployments which leverage Evernym's agency infrastructure. Ev-VCX is now principally used by the Evernym Mobile SDK.
- Remove Indy SDK components from the repository and reorganize the code.
- Pipelines that use VDR Tools as a dependency.
- Removal of legacy components: unused wrappers and the agency.
- Support for multiple ledgers, including Indy ledgers like Sovrin and IDUnion.
- Support for additional signature types such as BBS+.
- VCX requires access to some Cloud Agent for full work. Here see instructions how to get Cloud Agent.
- Install rust and rustup (https://www.rust-lang.org/install.html).
- Install VDR-Tools:
add-apt-repository "deb https://repo.corp.evernym.com/deb evernym-agency-dev-ubuntu main" apt-get update && apt-get install -y libvdrtools=${VDRTOOLS_VER}-{bionic|focal}
- Clone this repo to your local machine.
- From the vcx/libvcx folder inside this local repository run the following commands to verify everything works:
$ cargo build $ cargo test
- Currently developers are using intellij for IDE development (https://www.jetbrains.com/idea/download/) with the rust plugin (https://plugins.jetbrains.com/plugin/8182-rust).
- Install rust and rustup (https://www.rust-lang.org/install.html).
- Clone this repo to your local machine.
- Run
install_toolchains.sh
. You need to run this once to setup toolchains for android - Run
android.build.sh aarm64
to build libvcx for aarm64 architecture.(Other architerctures will follow soon) - Tests are not working on Android as of now.
The following wrappers are tested and complete.
Libvcx library must be initialized with one of the functions:
vcx_init_with_config
- initializes with passed as JSON string.vcx_init
- initializes with a path to the file containing .
Each library function will use this data after the initialization. The list of options can be find here An example of file can be found here
If the library works with an agency vcx_provision_agent_with_token
function must be called before initialization to populate configuration and wallet for this agent.
Provisioning token must be received from your sponsor server. More information about Cloud Agent provisioning and Sponsor registration you can find here.
The result of this function is JSON which can be extended and used for initialization.
To change a user must call vcx_shutdown
and then call initialization function again.
The tutorial which introduces Libvcx and explains how the whole ecosystem works, and how the functions in the SDK can be used to construct rich clients.
For the main workflow example check demo.
Libvcx provides APIs for acting as different actors. The actor states, transitions and messages depend on protocol_type is used in the configuration JSON.
-
Connection:
- Inviter
- Invitee
-
Credential Issuance:
- Issuer
- Holder
-
Credential Presentation:
- Verifier
- API
- State diagram
- Prover
- Verifier
The documents that provide necessary information for Libvcx migrations.