From b017c3d50b26170e20ad53ea9991edc771db1f4c Mon Sep 17 00:00:00 2001 From: Deepika Karanji - d0k03k3 Date: Thu, 14 Mar 2024 10:56:41 +0530 Subject: [PATCH] add capabilities on add org to channel --- .../security/HeaderAuthenticationFilter.java | 2 +- .../impl/ChaincodeOperationsServiceImpl.java | 6 - .../service/impl/UpdateChannelImpl.java | 22 ++++ src/main/resources/files/connection.yml | 110 +++++++----------- src/main/resources/wallet/admin.id | 2 +- 5 files changed, 68 insertions(+), 74 deletions(-) diff --git a/src/main/java/hlf/java/rest/client/security/HeaderAuthenticationFilter.java b/src/main/java/hlf/java/rest/client/security/HeaderAuthenticationFilter.java index 880aff7c..5afaa93f 100644 --- a/src/main/java/hlf/java/rest/client/security/HeaderAuthenticationFilter.java +++ b/src/main/java/hlf/java/rest/client/security/HeaderAuthenticationFilter.java @@ -52,7 +52,7 @@ protected void doFilterInternal( */ private void authenticate(HttpServletRequest request) { - String apiKey = request.getHeader("apiKey"); + String apiKey = request.getHeader("api-key"); if (!fabricProperties.getClient().getRest().getApikey().equals(apiKey)) { log.debug("API Key does not match"); throw new AuthenticationFailureException(ErrorCode.AUTH_INVALID_API_KEY, "Invalid API Key"); diff --git a/src/main/java/hlf/java/rest/client/service/impl/ChaincodeOperationsServiceImpl.java b/src/main/java/hlf/java/rest/client/service/impl/ChaincodeOperationsServiceImpl.java index f45e5150..f1ef18f1 100644 --- a/src/main/java/hlf/java/rest/client/service/impl/ChaincodeOperationsServiceImpl.java +++ b/src/main/java/hlf/java/rest/client/service/impl/ChaincodeOperationsServiceImpl.java @@ -205,22 +205,16 @@ public String getCurrentPackageId( String packageId = null; String desiredLabel = chaincodeName + "_" + chaincodeVersion; - int x = 0; for (LifecycleQueryInstalledChaincodesProposalResponse peerResults : results) { - System.out.println("Run number " + x++ + ".... " + results.toString()); - - // Todo: filter based on org "fir" for (LifecycleQueryInstalledChaincodesProposalResponse .LifecycleQueryInstalledChaincodesResult lifecycleQueryInstalledChaincodeResult : peerResults.getLifecycleQueryInstalledChaincodesResult()) { - System.out.println("------------------- " + lifecycleQueryInstalledChaincodeResult.getLabel()); if (lifecycleQueryInstalledChaincodeResult.getLabel().equals(desiredLabel)) { packageId = lifecycleQueryInstalledChaincodeResult.getPackageId(); break; } } - break; } if (isNull(packageId)) { diff --git a/src/main/java/hlf/java/rest/client/service/impl/UpdateChannelImpl.java b/src/main/java/hlf/java/rest/client/service/impl/UpdateChannelImpl.java index 23ee7425..ca1d15c8 100644 --- a/src/main/java/hlf/java/rest/client/service/impl/UpdateChannelImpl.java +++ b/src/main/java/hlf/java/rest/client/service/impl/UpdateChannelImpl.java @@ -11,8 +11,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.hyperledger.fabric.protos.common.Configtx; import org.hyperledger.fabric.protos.common.Configtx.ConfigGroup; import org.hyperledger.fabric.protos.common.Configtx.ConfigValue; +import org.hyperledger.fabric.protos.common.Configuration; import org.hyperledger.fabric.protos.msp.MspConfigPackage.FabricCryptoConfig; import org.hyperledger.fabric.protos.msp.MspConfigPackage.FabricMSPConfig; import org.hyperledger.fabric.protos.msp.MspConfigPackage.FabricNodeOUs; @@ -24,6 +26,9 @@ @Service public class UpdateChannelImpl implements UpdateChannel { + private static final String DEFAULT_MOD_POLICY = "Admins"; + private static final String VALUE_TAG_CAPABILITIES = "Capabilities"; + private static final String FABRIC_2_0 = "V2_0"; @Override public ConfigGroup buildWriteset(ConfigGroup readset, ChannelUpdateParamsDTO organizationDetails) @@ -39,6 +44,7 @@ public ConfigGroup buildWriteset(ConfigGroup readset, ChannelUpdateParamsDTO org .setModPolicy(FabricClientConstants.CHANNEL_CONFIG_MOD_POLICY_ADMINS) .putAllPolicies(FabricChannelUtil.setApplicationPolicies(readset)) .putGroups(newOrgMspId, setNewOrgGroup(newOrgMspId, organizationDetails)) + .putValues(VALUE_TAG_CAPABILITIES, getCapabilities(FABRIC_2_0)) // putAllGroups excludes new organization .putAllGroups(existingOrganizations) // Application group version @@ -217,4 +223,20 @@ private FabricNodeOUs.Builder getFabricNodeOUs( .setCertificate(ByteString.copyFrom(nodeCert))) .setEnable(true); } + /** + * @param capabilities capabilities need to be added to config + * @return channel capabilities + */ + private Configtx.ConfigValue getCapabilities(String... capabilities) { + Configtx.ConfigValue.Builder valueBuilder = Configtx.ConfigValue.newBuilder(); + valueBuilder.setModPolicy(DEFAULT_MOD_POLICY); + Configuration.Capabilities.Builder capabilitiesBuilder = + Configuration.Capabilities.newBuilder(); + for (String capability : capabilities) { + capabilitiesBuilder.putCapabilities( + capability, Configuration.Capability.newBuilder().build()); + } + valueBuilder.setValue(capabilitiesBuilder.build().toByteString()); + return valueBuilder.build(); + } } diff --git a/src/main/resources/files/connection.yml b/src/main/resources/files/connection.yml index 0ecc75d4..4a059679 100644 --- a/src/main/resources/files/connection.yml +++ b/src/main/resources/files/connection.yml @@ -1,103 +1,81 @@ name: ConnectionProfile version: 1.0.0 client: - organization: fabgywsecv6 + organization: fabyhlewtv6 connection: timeout: peerTimeoutConfig: endorser: 300 organizations: - fabgywsecv6: - mspid: fabgywsecv6MSP + fabyhlewtv6: + mspid: fabyhlewtv6MSP peers: - - peer0.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com - - peer1.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com - - peer2.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com + - peer0.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com + - peer1.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com certificateAuthorities: - - ca.fabgywsecv6-net + - ca.fabyhlewtv6-net peers: - peer0.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com: - url: grpcs://peer0.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com:8443 + peer0.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com: + url: grpcs://peer0.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com:8443 tlsCACerts: pem: |- -----BEGIN CERTIFICATE----- - MIICFTCCAbygAwIBAgIUZ0h1laxGjrpNxz4Sd2P1KjRlFcgwCgYIKoZIzj0EAwIw + MIICFjCCAbygAwIBAgIUK0lDLighk5F1qJoSj5FD2TyTnrkwCgYIKoZIzj0EAwIw aTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCEFya2Fuc2FzMRQwEgYDVQQHDAtCZW50 - b252aWxsZTEUMBIGA1UECgwLZmFiZ3l3c2VjdjYxGzAZBgNVBAMMEmNhLmZhYmd5 - d3NlY3Y2LW5ldDAeFw0yNDAxMTgwNTI3MzJaFw0yNjExMDcwNTI3MzJaMGkxCzAJ + b252aWxsZTEUMBIGA1UECgwLZmFieWhsZXd0djYxGzAZBgNVBAMMEmNhLmZhYnlo + bGV3dHY2LW5ldDAeFw0yNDAzMTEwNDU5MzBaFw0yNjEyMzAwNDU5MzBaMGkxCzAJ BgNVBAYTAlVTMREwDwYDVQQIDAhBcmthbnNhczEUMBIGA1UEBwwLQmVudG9udmls - bGUxFDASBgNVBAoMC2ZhYmd5d3NlY3Y2MRswGQYDVQQDDBJjYS5mYWJneXdzZWN2 - Ni1uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ003gSuBfKSfsqCFdUcXAY - ZEa6C49GIvyZfbsEAkYfvcwQZa1isB9hKgOZbq/LKhgMQZcWIeWIGGwXUYtqQB3B + bGUxFDASBgNVBAoMC2ZhYnlobGV3dHY2MRswGQYDVQQDDBJjYS5mYWJ5aGxld3R2 + Ni1uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQnz5pQnZwmQwpKfCNiZ829 + Jz8o9eGq/ejXHqMr/rC457NERJ8wXZ2APDiKdjLe/5eHNZ6L/Ld3Hgow6xj+Tupq o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBpjAdBgNVHQ4EFgQU - 9jyIkB299Fi4NSwbQcJ6QYIgW5owCgYIKoZIzj0EAwIDRwAwRAIgTU1OHCgW4WBF - xRCMRJXq1SJDumxAK2u1ZKUI2Fbn9g8CIE0bbj5ZEKdxoOVs+Bugyeq5JUlJm0B+ - 8zfhxpr5YcLF + hkY/F8IzYTItCwommNfGh1hEPH0wCgYIKoZIzj0EAwIDSAAwRQIgd9HIquWcmONx + B7eLmJ7Myz9ueU7YpJdq2DxRHZtxnYcCIQDE6df8/YMAdimqWcpB/tbddDVx78cd + rpOKX0ISPxWg6A== -----END CERTIFICATE----- grpcOptions: - hostnameOverride: peer0.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com - ssl-target-name-override: peer0.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com - peer1.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com: - url: grpcs://peer1.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com:8443 + hostnameOverride: peer0.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com + ssl-target-name-override: peer0.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com + peer1.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com: + url: grpcs://peer1.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com:8443 tlsCACerts: pem: |- -----BEGIN CERTIFICATE----- - MIICFTCCAbygAwIBAgIUZ0h1laxGjrpNxz4Sd2P1KjRlFcgwCgYIKoZIzj0EAwIw + MIICFjCCAbygAwIBAgIUK0lDLighk5F1qJoSj5FD2TyTnrkwCgYIKoZIzj0EAwIw aTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCEFya2Fuc2FzMRQwEgYDVQQHDAtCZW50 - b252aWxsZTEUMBIGA1UECgwLZmFiZ3l3c2VjdjYxGzAZBgNVBAMMEmNhLmZhYmd5 - d3NlY3Y2LW5ldDAeFw0yNDAxMTgwNTI3MzJaFw0yNjExMDcwNTI3MzJaMGkxCzAJ + b252aWxsZTEUMBIGA1UECgwLZmFieWhsZXd0djYxGzAZBgNVBAMMEmNhLmZhYnlo + bGV3dHY2LW5ldDAeFw0yNDAzMTEwNDU5MzBaFw0yNjEyMzAwNDU5MzBaMGkxCzAJ BgNVBAYTAlVTMREwDwYDVQQIDAhBcmthbnNhczEUMBIGA1UEBwwLQmVudG9udmls - bGUxFDASBgNVBAoMC2ZhYmd5d3NlY3Y2MRswGQYDVQQDDBJjYS5mYWJneXdzZWN2 - Ni1uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ003gSuBfKSfsqCFdUcXAY - ZEa6C49GIvyZfbsEAkYfvcwQZa1isB9hKgOZbq/LKhgMQZcWIeWIGGwXUYtqQB3B + bGUxFDASBgNVBAoMC2ZhYnlobGV3dHY2MRswGQYDVQQDDBJjYS5mYWJ5aGxld3R2 + Ni1uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQnz5pQnZwmQwpKfCNiZ829 + Jz8o9eGq/ejXHqMr/rC457NERJ8wXZ2APDiKdjLe/5eHNZ6L/Ld3Hgow6xj+Tupq o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBpjAdBgNVHQ4EFgQU - 9jyIkB299Fi4NSwbQcJ6QYIgW5owCgYIKoZIzj0EAwIDRwAwRAIgTU1OHCgW4WBF - xRCMRJXq1SJDumxAK2u1ZKUI2Fbn9g8CIE0bbj5ZEKdxoOVs+Bugyeq5JUlJm0B+ - 8zfhxpr5YcLF + hkY/F8IzYTItCwommNfGh1hEPH0wCgYIKoZIzj0EAwIDSAAwRQIgd9HIquWcmONx + B7eLmJ7Myz9ueU7YpJdq2DxRHZtxnYcCIQDE6df8/YMAdimqWcpB/tbddDVx78cd + rpOKX0ISPxWg6A== -----END CERTIFICATE----- grpcOptions: - hostnameOverride: peer1.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com - ssl-target-name-override: peer1.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com - peer2.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com: - url: grpcs://peer2.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com:8443 - tlsCACerts: - pem: |- - -----BEGIN CERTIFICATE----- - MIICFTCCAbygAwIBAgIUZ0h1laxGjrpNxz4Sd2P1KjRlFcgwCgYIKoZIzj0EAwIw - aTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCEFya2Fuc2FzMRQwEgYDVQQHDAtCZW50 - b252aWxsZTEUMBIGA1UECgwLZmFiZ3l3c2VjdjYxGzAZBgNVBAMMEmNhLmZhYmd5 - d3NlY3Y2LW5ldDAeFw0yNDAxMTgwNTI3MzJaFw0yNjExMDcwNTI3MzJaMGkxCzAJ - BgNVBAYTAlVTMREwDwYDVQQIDAhBcmthbnNhczEUMBIGA1UEBwwLQmVudG9udmls - bGUxFDASBgNVBAoMC2ZhYmd5d3NlY3Y2MRswGQYDVQQDDBJjYS5mYWJneXdzZWN2 - Ni1uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ003gSuBfKSfsqCFdUcXAY - ZEa6C49GIvyZfbsEAkYfvcwQZa1isB9hKgOZbq/LKhgMQZcWIeWIGGwXUYtqQB3B - o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBpjAdBgNVHQ4EFgQU - 9jyIkB299Fi4NSwbQcJ6QYIgW5owCgYIKoZIzj0EAwIDRwAwRAIgTU1OHCgW4WBF - xRCMRJXq1SJDumxAK2u1ZKUI2Fbn9g8CIE0bbj5ZEKdxoOVs+Bugyeq5JUlJm0B+ - 8zfhxpr5YcLF - -----END CERTIFICATE----- - grpcOptions: - hostnameOverride: peer2.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com - ssl-target-name-override: peer2.fabgywsecv6-net.dev-1.wbp.in.wal-mart.com + hostnameOverride: peer1.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com + ssl-target-name-override: peer1.fabyhlewtv6-net.dev-1.wbp.in.wal-mart.com certificateAuthorities: - ca.fabgywsecv6-net: - url: ca.fabgywsecv6-net:7054 - caName: ca.fabgywsecv6-net + ca.fabyhlewtv6-net: + url: ca.fabyhlewtv6-net:7054 + caName: ca.fabyhlewtv6-net httpOptions: verify: false tlsCACert: pem: |- -----BEGIN CERTIFICATE----- - MIICFTCCAbygAwIBAgIUZ0h1laxGjrpNxz4Sd2P1KjRlFcgwCgYIKoZIzj0EAwIw + MIICFjCCAbygAwIBAgIUK0lDLighk5F1qJoSj5FD2TyTnrkwCgYIKoZIzj0EAwIw aTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCEFya2Fuc2FzMRQwEgYDVQQHDAtCZW50 - b252aWxsZTEUMBIGA1UECgwLZmFiZ3l3c2VjdjYxGzAZBgNVBAMMEmNhLmZhYmd5 - d3NlY3Y2LW5ldDAeFw0yNDAxMTgwNTI3MzJaFw0yNjExMDcwNTI3MzJaMGkxCzAJ + b252aWxsZTEUMBIGA1UECgwLZmFieWhsZXd0djYxGzAZBgNVBAMMEmNhLmZhYnlo + bGV3dHY2LW5ldDAeFw0yNDAzMTEwNDU5MzBaFw0yNjEyMzAwNDU5MzBaMGkxCzAJ BgNVBAYTAlVTMREwDwYDVQQIDAhBcmthbnNhczEUMBIGA1UEBwwLQmVudG9udmls - bGUxFDASBgNVBAoMC2ZhYmd5d3NlY3Y2MRswGQYDVQQDDBJjYS5mYWJneXdzZWN2 - Ni1uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ003gSuBfKSfsqCFdUcXAY - ZEa6C49GIvyZfbsEAkYfvcwQZa1isB9hKgOZbq/LKhgMQZcWIeWIGGwXUYtqQB3B + bGUxFDASBgNVBAoMC2ZhYnlobGV3dHY2MRswGQYDVQQDDBJjYS5mYWJ5aGxld3R2 + Ni1uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQnz5pQnZwmQwpKfCNiZ829 + Jz8o9eGq/ejXHqMr/rC457NERJ8wXZ2APDiKdjLe/5eHNZ6L/Ld3Hgow6xj+Tupq o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBpjAdBgNVHQ4EFgQU - 9jyIkB299Fi4NSwbQcJ6QYIgW5owCgYIKoZIzj0EAwIDRwAwRAIgTU1OHCgW4WBF - xRCMRJXq1SJDumxAK2u1ZKUI2Fbn9g8CIE0bbj5ZEKdxoOVs+Bugyeq5JUlJm0B+ - 8zfhxpr5YcLF + hkY/F8IzYTItCwommNfGh1hEPH0wCgYIKoZIzj0EAwIDSAAwRQIgd9HIquWcmONx + B7eLmJ7Myz9ueU7YpJdq2DxRHZtxnYcCIQDE6df8/YMAdimqWcpB/tbddDVx78cd + rpOKX0ISPxWg6A== -----END CERTIFICATE----- diff --git a/src/main/resources/wallet/admin.id b/src/main/resources/wallet/admin.id index df5b94ca..6e8aed2e 100644 --- a/src/main/resources/wallet/admin.id +++ b/src/main/resources/wallet/admin.id @@ -1 +1 @@ -{"credentials":{"certificate":"-----BEGIN CERTIFICATE-----\nMIIDBDCCAqugAwIBAgIUGKJ2oeAqq2oeT4fUmKlY3K7VsgYwCgYIKoZIzj0EAwIw\naTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCEFya2Fuc2FzMRQwEgYDVQQHDAtCZW50\nb252aWxsZTEUMBIGA1UECgwLZmFiZ3l3c2VjdjYxGzAZBgNVBAMMEmNhLmZhYmd5\nd3NlY3Y2LW5ldDAeFw0yNDAxMTgwNTMyMDBaFw0yNTAxMTcwNTM3MDBaMIGGMQsw\nCQYDVQQGEwJVUzEdMBsGA1UEBxMUNTEuNTAvLTAuMTMvQXJrYW5zYXMxFDASBgNV\nBAoTC2ZhYmd5d3NlY3Y2MSIwDAYDVQQLEwVhZG1pbjASBgNVBAsTC2ZhYmd5d3Nl\nY3Y2MR4wHAYDVQQDDBVBZG1pbkBmYWJneXdzZWN2Ni1uZXQwWTATBgcqhkjOPQIB\nBggqhkjOPQMBBwNCAASgxJRa0n5fN8jj+KQYYrijfZ2nY1t4If69K8s+6YyK7CiX\n/YYdWvYTExXVNLXguwN3kigRnUaIxE8B5sgiBpqJo4IBETCCAQ0wDgYDVR0PAQH/\nBAQDAgeAMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFG59rF5FYjV4Z0AMRZiWtcaq\n3zmjMB8GA1UdIwQYMBaAFPY8iJAdvfRYuDUsG0HCekGCIFuaMBUGA1UdEQQOMAyC\nCmNhLXRvb2xzLTAwgZUGCCoDBAUGBwgBBIGIeyJhdHRycyI6eyJhYmFjLmluaXQi\nOiJ0cnVlIiwiYWRtaW4iOiJ0cnVlIiwiaGYuQWZmaWxpYXRpb24iOiJmYWJneXdz\nZWN2NiIsImhmLkVucm9sbG1lbnRJRCI6IkFkbWluQGZhYmd5d3NlY3Y2LW5ldCIs\nImhmLlR5cGUiOiJhZG1pbiJ9fTAKBggqhkjOPQQDAgNHADBEAiA+rwGSzNFM5/sU\nEL+K/Nl7oUDmZDK9eBKb9PmypLCABQIgO/wlG18O1O9b9KikrYxvT+oS/nrVmHlp\nY+0CHcp89/U=\n-----END CERTIFICATE-----","privateKey":"-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgAqCOiVeuGiNO+eRS\nxChP79S/MdHd7k71NfqJ5tVNMbqhRANCAASgxJRa0n5fN8jj+KQYYrijfZ2nY1t4\nIf69K8s+6YyK7CiX/YYdWvYTExXVNLXguwN3kigRnUaIxE8B5sgiBpqJ\n-----END PRIVATE KEY-----"},"type":"X.509","version":1,"mspId":"fabgywsecv6MSP"} \ No newline at end of file +{"credentials":{"certificate":"-----BEGIN CERTIFICATE-----\nMIIDBDCCAqugAwIBAgIUTnf3WjzgISOrhlzD1gPNdExSmLowCgYIKoZIzj0EAwIw\naTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCEFya2Fuc2FzMRQwEgYDVQQHDAtCZW50\nb252aWxsZTEUMBIGA1UECgwLZmFieWhsZXd0djYxGzAZBgNVBAMMEmNhLmZhYnlo\nbGV3dHY2LW5ldDAeFw0yNDAzMTEwNTEwMDBaFw0yNTAzMTEwNTE1MDBaMIGGMQsw\nCQYDVQQGEwJVUzEdMBsGA1UEBxMUNTEuNTAvLTAuMTMvQXJrYW5zYXMxFDASBgNV\nBAoTC2ZhYnlobGV3dHY2MSIwDAYDVQQLEwVhZG1pbjASBgNVBAsTC2ZhYnlobGV3\ndHY2MR4wHAYDVQQDDBVBZG1pbkBmYWJ5aGxld3R2Ni1uZXQwWTATBgcqhkjOPQIB\nBggqhkjOPQMBBwNCAAQfXmuqEhDWpAMFeoKd/oK5+iP3EtewVvkOzBSHxlPZq7Oe\nUEFdVcqJiD0D99QbrE5FD+StwOTpRjrQSitippOUo4IBETCCAQ0wDgYDVR0PAQH/\nBAQDAgeAMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFORufvrJzs172c+ytqcHRVs+\nh1GcMB8GA1UdIwQYMBaAFIZGPxfCM2EyLQsKJpjXxodYRDx9MBUGA1UdEQQOMAyC\nCmNhLXRvb2xzLTAwgZUGCCoDBAUGBwgBBIGIeyJhdHRycyI6eyJhYmFjLmluaXQi\nOiJ0cnVlIiwiYWRtaW4iOiJ0cnVlIiwiaGYuQWZmaWxpYXRpb24iOiJmYWJ5aGxl\nd3R2NiIsImhmLkVucm9sbG1lbnRJRCI6IkFkbWluQGZhYnlobGV3dHY2LW5ldCIs\nImhmLlR5cGUiOiJhZG1pbiJ9fTAKBggqhkjOPQQDAgNHADBEAiBlOk7sRk1qmP16\nI+L9wHxnSXl2YP7q3+JLghEH0fg0ZAIgZevx8qEjXzL60t+49FbcBSYsorjBSCUJ\nkEeQHMDeTvI=\n-----END CERTIFICATE-----","privateKey":"-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeleyqGLJ0LjKoAbp\nFOZ62hNdV/sbVogZdNVocTaagTyhRANCAAQfXmuqEhDWpAMFeoKd/oK5+iP3Etew\nVvkOzBSHxlPZq7OeUEFdVcqJiD0D99QbrE5FD+StwOTpRjrQSitippOU\n-----END PRIVATE KEY-----"},"type":"X.509","version":1,"mspId":"fabyhlewtv6MSP"} \ No newline at end of file