diff --git a/msp/Org1/UserJavaTest.context b/msp/Org1/UserJavaTest.context new file mode 100644 index 0000000..763a487 Binary files /dev/null and b/msp/Org1/UserJavaTest.context differ diff --git a/msp/Org1MSP/admin.context b/msp/Org1MSP/admin.context new file mode 100644 index 0000000..3de9c8c Binary files /dev/null and b/msp/Org1MSP/admin.context differ diff --git a/src/main/java/blockchain/client/CAClientWrapper.java b/src/main/java/blockchain/client/CAClientWrapper.java index 5df0efb..fbfdd24 100644 --- a/src/main/java/blockchain/client/CAClientWrapper.java +++ b/src/main/java/blockchain/client/CAClientWrapper.java @@ -9,6 +9,7 @@ import org.hyperledger.fabric.sdk.exception.CryptoException; import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; import org.hyperledger.fabric.sdk.security.CryptoSuite; import org.hyperledger.fabric_ca.sdk.HFCAClient; +import org.hyperledger.fabric_ca.sdk.RegistrationRequest; import java.lang.reflect.InvocationTargetException; import java.net.MalformedURLException; @@ -36,6 +37,7 @@ public class CAClientWrapper { } private void init() throws MalformedURLException, IllegalAccessException, InstantiationException, ClassNotFoundException, CryptoException, InvalidArgumentException, NoSuchMethodException, InvocationTargetException { + BasicConfigurator.configure(); CryptoSuite cryptoSuite = CryptoSuite.Factory.getCryptoSuite(); hfcaClient = HFCAClient.createNewInstance(caUrl, properties); hfcaClient.setCryptoSuite(cryptoSuite); @@ -65,5 +67,39 @@ public class CAClientWrapper { return adminContext; } + //Method to register an User + public String registerUser(String username, String organization) throws Exception { + UserContext userContext = Util.readUserContext(organization, username); + if (userContext!=null){ + logger.warn("User already registered"); + return null; + } + RegistrationRequest rr = new RegistrationRequest(username,organization); + logger.info("registrar is : "+adminContext.getName()); + String enrollementSecret = hfcaClient.register(rr,adminContext); + logger.info("User registered"); + return enrollementSecret; + } + + //Method to enroll an User + public UserContext enrollUser(UserContext userContext, String secret) throws Exception{ + UserContext uContext = Util.readUserContext(userContext.getAffiliation(),userContext.getName()); + if(uContext!=null){ + logger.warn("User already enrolled"); + return uContext; + } + Enrollment enrollment = hfcaClient.enroll(userContext.getName(),secret); + userContext.setEnrollment(enrollment); + Util.writeUserContext(userContext); + logger.info("User enrolled"); + return userContext; + } + + //Method to revoke an User + public void revokeUser(UserContext admin, Enrollment userEnrollement, String reason) throws Exception{ + hfcaClient.revoke(admin,userEnrollement,reason); + } + + } diff --git a/src/main/java/blockchain/client/FabricClientWrapper.java b/src/main/java/blockchain/client/FabricClientWrapper.java index eeb3ee9..5c7a13d 100644 --- a/src/main/java/blockchain/client/FabricClientWrapper.java +++ b/src/main/java/blockchain/client/FabricClientWrapper.java @@ -1,13 +1,17 @@ package blockchain.client; +import blockchain.configuration.Config; import blockchain.user.UserContext; import org.hyperledger.fabric.sdk.Channel; import org.hyperledger.fabric.sdk.HFClient; +import org.hyperledger.fabric.sdk.Peer; import org.hyperledger.fabric.sdk.exception.CryptoException; import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; +import org.hyperledger.fabric.sdk.exception.ProposalException; import org.hyperledger.fabric.sdk.security.CryptoSuite; import java.lang.reflect.InvocationTargetException; +import java.util.Set; public class FabricClientWrapper { private HFClient client; @@ -28,4 +32,11 @@ public class FabricClientWrapper { ChannelClientWrapper channelClientWrapper = new ChannelClientWrapper(name, channel, this); return channelClientWrapper; } + + public Set queryForChannels() throws InvalidArgumentException, IllegalArgumentException, ProposalException { + client.newChannel(Config.CHANNEL_NAME); + client.newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + Peer peer = client.newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + return client.queryChannels(peer); + } } diff --git a/src/main/java/blockchain/configuration/Config.java b/src/main/java/blockchain/configuration/Config.java index 0f0b9ee..bd1200b 100644 --- a/src/main/java/blockchain/configuration/Config.java +++ b/src/main/java/blockchain/configuration/Config.java @@ -4,7 +4,7 @@ public class Config { public static final String ORG1_MSP = "Org1MSP"; - public static final String ORG1 = "Org1"; + public static final String ORG1 = "org1"; public static final String ADMIN = "admin"; @@ -12,7 +12,7 @@ public class Config { public static final String CA_ORG1_URL = "http://vps577432.ovh.net:7054"; - public static final String ORDERER_URL = "http://vps577432.ovh.net:7050"; + public static final String ORDERER_URL = "grpc://vps577432.ovh.net:7050"; public static final String ORDERER_NAME = "orderer.example.com"; @@ -22,7 +22,9 @@ public class Config { public static final String ORG1_PEER_0 = "peer0.org1.example.com"; - public static final String ORG1_PEER_0_URL = "http://vps577432.ovh.net:7051"; + public static final String ORG1_PEER_0_URL = "grpc://vps577432.ovh.net:7051"; + + public static final String USER_TEST_SECRET = "frwcKfCYPxWA"; } diff --git a/src/test/java/blockchain/client/TestRegisterEnrollUser.java b/src/test/java/blockchain/client/TestRegisterEnrollUser.java new file mode 100644 index 0000000..45a6ae3 --- /dev/null +++ b/src/test/java/blockchain/client/TestRegisterEnrollUser.java @@ -0,0 +1,36 @@ +package blockchain.client; + +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.Logger; +import org.junit.Test; + +public class TestRegisterEnrollUser { + private static Logger logger = Logger.getLogger(TestRegisterEnrollUser.class); + //Success + @Test + public void RegisterEnrollUser(){ + String caUrl = Config.CA_ORG1_URL; + try{ + CAClientWrapper caClientWrapper = new CAClientWrapper(caUrl,null); + UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); + caClientWrapper.setAdminContext(admin); + UserContext userContext = new UserContext(); + + userContext.setName("UserJavaTest"); + userContext.setAffiliation(Config.ORG1); + userContext.setMspId(Config.ORG1_MSP); + String userSecret = caClientWrapper.registerUser(userContext.getName(),userContext.getAffiliation()); + logger.info("uSecret : "+userSecret); + userContext = caClientWrapper.enrollUser(userContext,userSecret); + logger.info("userContext enrollement : "+userContext.getEnrollment()); + + }catch (Exception e){ + e.printStackTrace(); + } + + + } + +} diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java new file mode 100644 index 0000000..2d6d74b --- /dev/null +++ b/src/test/java/blockchain/query/QueryTest.java @@ -0,0 +1,31 @@ +package blockchain.query; + +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.Peer; +import org.junit.Test; + +import java.util.Set; + +public class QueryTest { + private static Logger logger = Logger.getLogger(QueryTest.class); + //DON'T WORK + @Test + public void TestAQueryChannels() { + BasicConfigurator.configure(); + UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); + try{ + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(admin); + Set channels = fabricClientWrapper.queryForChannels(); + logger.info("Channels : "+channels); + }catch (Exception e){ + e.printStackTrace(); + } + + + } +} diff --git a/target/classes/blockchain/client/CAClientWrapper.class b/target/classes/blockchain/client/CAClientWrapper.class index 9edb457..2a0e140 100644 Binary files a/target/classes/blockchain/client/CAClientWrapper.class and b/target/classes/blockchain/client/CAClientWrapper.class differ diff --git a/target/classes/blockchain/client/FabricClientWrapper.class b/target/classes/blockchain/client/FabricClientWrapper.class index d40738f..be87065 100644 Binary files a/target/classes/blockchain/client/FabricClientWrapper.class and b/target/classes/blockchain/client/FabricClientWrapper.class differ diff --git a/target/classes/blockchain/configuration/Config.class b/target/classes/blockchain/configuration/Config.class index 2a8480f..f99ed3c 100644 Binary files a/target/classes/blockchain/configuration/Config.class and b/target/classes/blockchain/configuration/Config.class differ diff --git a/target/test-classes/blockchain/client/TestEnrollAdmin.class b/target/test-classes/blockchain/client/TestEnrollAdmin.class index 83d44dd..98cb24a 100644 Binary files a/target/test-classes/blockchain/client/TestEnrollAdmin.class and b/target/test-classes/blockchain/client/TestEnrollAdmin.class differ diff --git a/target/test-classes/blockchain/client/TestRegisterEnrollUser.class b/target/test-classes/blockchain/client/TestRegisterEnrollUser.class new file mode 100644 index 0000000..ddb4a8d Binary files /dev/null and b/target/test-classes/blockchain/client/TestRegisterEnrollUser.class differ diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class new file mode 100644 index 0000000..4719316 Binary files /dev/null and b/target/test-classes/blockchain/query/QueryTest.class differ