content: /*
   * Copyright IBM Corp. All Rights Reserved.
   *
   * SPDX-License-Identifier: Apache-2.0
   */
  
  package application.java;
  
  import java.nio.file.Paths;
  import java.util.Properties;
  
  import org.hyperledger.fabric.gateway.Wallet;
  import org.hyperledger.fabric.gateway.Wallets;
  import org.hyperledger.fabric.gateway.Identities;
  import org.hyperledger.fabric.gateway.Identity;
  import org.hyperledger.fabric.sdk.Enrollment;
  import org.hyperledger.fabric.sdk.security.CryptoSuite;
  import org.hyperledger.fabric.sdk.security.CryptoSuiteFactory;
  import org.hyperledger.fabric_ca.sdk.EnrollmentRequest;
  import org.hyperledger.fabric_ca.sdk.HFCAClient;
  
  public class EnrollAdmin {
  
  	public static void main(String[] args) throws Exception {
  
  		// Create a CA client for interacting with the CA.
  		Properties props = new Properties();
  		props.put("pemFile",
  			"../../test-network/organizations/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem");
  		props.put("allowAllHostNames", "true");
  		HFCAClient caClient = HFCAClient.createNewInstance("https://localhost:7054", props);
  		CryptoSuite cryptoSuite = CryptoSuiteFactory.getDefault().getCryptoSuite();
  		caClient.setCryptoSuite(cryptoSuite);
  
  		// Create a wallet for managing identities
  		Wallet wallet = Wallets.newFileSystemWallet(Paths.get("wallet"));
  
  		// Check to see if we've already enrolled the admin user.
  		if (wallet.get("admin") != null) {
  			System.out.println("An identity for the admin user \"admin\" already exists in the wallet");
  			return;
  		}
  
  		// Enroll the admin user, and import the new identity into the wallet.
  		final EnrollmentRequest enrollmentRequestTLS = new EnrollmentRequest();
  		enrollmentRequestTLS.addHost("localhost");
  		enrollmentRequestTLS.setProfile("tls");
  		Enrollment enrollment = caClient.enroll("admin", "adminpw", enrollmentRequestTLS);
  		Identity user = Identities.newX509Identity("Org1MSP", enrollment);
  		wallet.put("admin", user);
  		System.out.println("Successfully enrolled user \"admin\" and imported it into the wallet");
  	}
  }
  