Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Abstract

Aries-VCX is a collection of Rust crates which provide APIs for stepping through Hyperledger Aries Protocols. Previously, Aries-vcx has provided it's functionality to mobile (android and ios) consumers via a wrapper layer known as libvcx. Libvcx wraps over aries_vcx functionality and creates C-callable FFI bindings, and provides Java and Objective-C bindings for calling those bindings from mobile ecosystems. Overtime, manually maintain libvcx has become quite a chore, and does not leverage new FFI tech which is now available. The goal of this mentorship project, is to create new mobile bindings using the UniFFI tool, which from initial prototyping has shown a lot promise.

Mentor and Mentees

Mentors

Patrik Stas, Discord: Patrik Stas#7722, Absa Group
Bogdan Mircea, Discord: bobozaur#5997, Absa Group
Miroslav Kovar, Discord: mirgee#3763, Absa Group
George Mulhearn, Discord: gmulhearn#0356

Mentee

Swapnil Tripathi, Discord: swaptr, Github: https://github.com/swaptr

Deliverables

  •  Create Android binary + bindings compilation scripts for the existing UniFFI prototype in aries-vcx: https://github.com/hyperledger/aries-vcx/tree/main/uniffi_aries_vcx
  •  Bootstrap sample android demo application, which consumes the existing prototype's bindings and binaries
  •  Update existing prototype to use newer aries_vcx functionality (switch from vdrtools profile to modular_libs profile)
  •  Create bindings for all Connection  APIs and update sample app accordingly
  •  Create bindings for all Holder  APIs and update sample app accordingly
  •  Design/Discover APIs for a rust mediator client
  •  Implement APIs for a rust mediator client
  •  Create bindings for mediator client and update sample app accordingly
  •  Create bindings for all Prover  APIs and update sample app accordingly
  • Update existing prototype to use newer aries_vcx functionality (switch from vdrtools profile to modular_libs profile)

Bonus Deliverables

  •  Create CI for compiling and packaging an Android SDK deliverable with aries_vcx and mediator client functionality
  •  Consider async API optimizations (how can be improve on the existing run_blocking  approach.. UniFFI may have support for this later in the timeline!)
  •  Create CI for compiling and packaging an iOS SDK deliverable with aries_vcx and mediator client functionality

...

  •  Comfortable with aries-vcx and UniFFI tool
  •  Script for building uniffi_aries_vcx android consumables developed
  •  Sample app bootstrapped and consuming/demonstrating uniffi_aries_vcx bindings

Eval 2:

  •  Connection APIs wrapped in UniFFI
  •  Holder APIs wrapped in UniFFI Sample app updated to demonstrate Connection APIs
  •  Sample app updated to demonstrate Holder APIs

Eval 3:

  •  Designed mediator client implementation
  •  Implemented mediator client implementation
    •  key registration
    •  message pickup
  • Holder APIs wrapped in UniFFI

Eval 4:

  •  mediator client APIs wrapped in UniFFI
  •  Prover APIs wrapped in UniFFI
  •  Migrate to modular libs stack (credx, indy-vdr)
  •  Sample app updated to demonstrate Prover APIssupport Holder flow (receive a credential)

Timeline

DatesTasks/Plan

Status

Jun 12 - Jun 26

Mentee intro with the mentor.

On-boarding:

  •  understand aries vcx project/s
  •  Get aries-vcx integration tests working to confirm development environment
  •  plan out the scope and tasks for the UniFFI project
  •  complete UniFFI tutorials
  •  build rust sample project for Android architectures
Jun 27 - Jul 10
  •  Manually build the existing uniffi_aries_vcx project for android
  •  Create a convenience script for compiling uniffi_aries_vcx project for android
  •  Expand the script to generate UniFFI bindings for uniffi_aries_vcx

Jul 11 - Jul 24

  •  Bootstrap android sample app which consumes bindings generated by script mentioned above - demonstrate app to mentors (e.g. a simple button that calls into an existing uniffi method).
  •  update uniffi_aries_vcx to use modular-libs instead of vdrtools
    •  Not an appropriate time for this
Jul 25 - Aug 7 (Jul 28 eval)
  •  Complete Connection  API uniffi bindings
  •  Update sample app to use Connection APIs
    •  additional considerations: app complexity (invitation QR scanner, receiving incoming messages via dummy/testing relay/mediator service)
    •  PR
    create profile
Aug 8 - Aug 21 Complete Holder  API uniffi bindings
  •  Update sample app to use Holderscan invitation
  •   APIs PR

Aug 22 - Sep 4 (Sept 1 eval)

  •  Breather to complete outstanding above tasks
  •  Discuss and design mediator client APIs with mentors
  • Update sample app to send request
Sep 5 - Sep 18 Implement mediator client key registration related APIs (i.e. creating initial connection with mediator service)
Sep 19 - Oct 2
  •  Finish mediator client implementation (pickup protocol)
    •  PR
    •  if ready: consider testing against other aries-vcx mentorship project (mediator service)
    Work on Holder API bindings
Oct 3 - Oct 16 (Oct 13 eval)
  •  Wrap mediator client with UniFFI bindings
  •  Update sample app to consume the mediator client
    •  PR
  • complete Holder API bindings
  •  start/plan work on sample app holder flow (receive a cred)
Oct 16 - Oct 30
  •  Complete Prover  API uniffi bindings
  •  Update sample app to use Prover  APIs
    •  PR
  • Migrate to modular libs stack (credx, indy-vdr) and ensure successful compilation still
  •  continue work on sample app holder flow (receive a cred)
Oct 31 - Nov 6
Nov 7 - Nov 30 (Nov 30 eval)
  •  Consider bonus deliverables mentioned above

...