Skip to content

Abdulbois/ev-vcx

Repository files navigation

Evernym VCX

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.

Evolution

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.

Roadmap

  • 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+.

Prerequisites

  • VCX requires access to some Cloud Agent for full work. Here see instructions how to get Cloud Agent.

How to build VCX from source

Linux

  1. Install rust and rustup (https://www.rust-lang.org/install.html).
  2. 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}
    
  3. Clone this repo to your local machine.
  4. From the vcx/libvcx folder inside this local repository run the following commands to verify everything works:
    $ cargo build 
    $ cargo test 
    
  5. 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).

Android

  1. Install rust and rustup (https://www.rust-lang.org/install.html).
  2. Clone this repo to your local machine.
  3. Run install_toolchains.sh. You need to run this once to setup toolchains for android
  4. Run android.build.sh aarm64 to build libvcx for aarm64 architecture.(Other architerctures will follow soon)
  5. Tests are not working on Android as of now.

Wrappers documentation

The following wrappers are tested and complete.

Library initialization

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.

Getting started guide

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.

Example use

For the main workflow example check demo.

Actors

Libvcx provides APIs for acting as different actors. The actor states, transitions and messages depend on protocol_type is used in the configuration JSON.

How to migrate

The documents that provide necessary information for Libvcx migrations.