/* * Copyright IBM Corp. All Rights Reserved. * * SPDX-License-Identifier: Apache-2.0 */ import io.grpc.Grpc; import io.grpc.ManagedChannel; import io.grpc.TlsChannelCredentials; import org.hyperledger.fabric.client.identity.Identities; import org.hyperledger.fabric.client.identity.Identity; import org.hyperledger.fabric.client.identity.Signer; import org.hyperledger.fabric.client.identity.Signers; import org.hyperledger.fabric.client.identity.X509Identity; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.security.InvalidKeyException; import java.security.cert.CertificateException; public final class Connections { // Path to crypto materials. private static final Path cryptoPath = Paths.get("..", "..", "test-network", "organizations", "peerOrganizations", "org1.example.com"); // Path to user certificate. private static final Path certDirPath = cryptoPath.resolve(Paths.get("users", "User1@org1.example.com", "msp", "signcerts")); // Path to user private key directory. private static final Path keyDirPath = cryptoPath.resolve(Paths.get("users", "User1@org1.example.com", "msp", "keystore")); // Path to peer tls certificate. private static final Path tlsCertPath = cryptoPath.resolve(Paths.get("peers", "peer0.org1.example.com", "tls", "ca.crt")); // Gateway peer end point. private static final String peerEndpoint = "localhost:7051"; private static final String overrideAuth = "peer0.org1.example.com"; private static final String mspID = "Org1MSP"; private Connections() { // Private constructor to prevent instantiation } public static ManagedChannel newGrpcConnection() throws IOException { var credentials = TlsChannelCredentials.newBuilder() .trustManager(tlsCertPath.toFile()) .build(); return Grpc.newChannelBuilder(peerEndpoint, credentials) .overrideAuthority(overrideAuth) .build(); } public static Identity newIdentity() throws IOException, CertificateException { try (var certReader = Files.newBufferedReader(getFirstFilePath(certDirPath))) { var certificate = Identities.readX509Certificate(certReader); return new X509Identity(mspID, certificate); } } public static Signer newSigner() throws IOException, InvalidKeyException { try (var keyReader = Files.newBufferedReader(getFirstFilePath(keyDirPath))) { var privateKey = Identities.readPrivateKey(keyReader); return Signers.newPrivateKeySigner(privateKey); } } private static Path getFirstFilePath(Path dirPath) throws IOException { try (var keyFiles = Files.list(dirPath)) { return keyFiles.findFirst().orElseThrow(); } }}