Identity Mixer Support for both Fabric Gateway SDK for Java and Fabric Gateway Client API for Java

Project TitleIdentity Mixer Support for both Fabric Gateway SDK for Java and Fabric Gateway Client API for Java
Status

COMPLETED

Difficulty

MEDIUM  

Description 

Idemix is a cryptographic protocol suite, which provides strong authentication as well as privacy-preserving features such as anonymity, the ability to transact without revealing the identity of the transactor, and unlinkability, the ability of a single identity to send multiple transactions without revealing that the transactions were sent by the same identity. More details here - https://hyperledger-fabric.readthedocs.io/en/release-2.2/idemix.html

Current JavaSDK doesn't support to store Idemix credentials in Hyperledger Fabric Wallet. Objective of this mentorship program to support wallet to store idimix identities.

Here is Some fabric Java SDK changes required to complete this mentorship program.


  1. Idemix identity provider defined, similar to https://github.com/hyperledger/fabric-gateway-java/blob/main/src/main/java/org/hyperledger/fabric/gateway/impl/identity/X509IdentityProvider.java


  1. Idemix identity type defined, similar to: https://github.com/hyperledger/fabric-gateway-java/blob/main/src/main/java/org/hyperledger/fabric/gateway/impl/identity/X509IdentityImpl.java


Alternatively, if you are (or can) use Fabric v2.4, the new Fabric Gateway client API, while not currently including an Idemix implementation out-of-the-box, would allow you to plug in one without modifying the client API by just supplying:


  1. Idemix Identity representation (just MSD IP and credential bytes): https://hyperledger.github.io/fabric-gateway/main/api/java/org/hyperledger/fabric/client/identity/Identity.html


  1. Idemix signing function: https://hyperledger.github.io/fabric-gateway/main/api/java/org/hyperledger/fabric/client/identity/Signer.html


Additional Information

https://hyperledger-fabric.readthedocs.io/en/release-2.2/idemix.html

Learning Objectives

To explore the Open Source Contribution methodology
To Contribute Code to Hyperledger Fabric Project
To Know more about Hyperledger Fabric
To make more connection with Fabric Contributors

Expected Outcome

Ability to store Idemix Identity in a Wallet by using Fabric Gateway SDK for Java
Ability to store Idemix Identity in a Wallet by using Fabric Gateway Client API for Java
Ability to use the Stored Idemix Identity from a Wallet to fire transaction to the Hyperledger Fabric Network in both Fabric Gateway SDK for Java and Fabric Gateway Client API for Java
Write Unit Tests and Add Examples in fabric-samples Repository


Relation to Hyperledger 

Hyperledger Fabric, Hyperledger Fabric Gateway SDK for Java, Hyperledger Fabric Gateway Client API for Javayperledger Fabric, Hyperledger Fabric Gateway SDK for Java, Hyperledger Fabric Gateway Client API for Java

Education Level

Any Graduate or student

Skills

Basic Understanding of Hyperledger Fabric
Programming Experience in Java

Future plans

Contribute this code to fabric JavaSDK

Preferred Hours and Length of Internship

Part time or full time. 

Mentor(s) Names and Contact Info

Kamlesh Nagware, Kamlesh.nagware@gmail.com Snapper Future Tech knagware#6976