├── .github └── workflows │ ├── fabric_integration_tests.yml │ ├── pull_request.yml │ ├── push.yml │ └── release.yml ├── .gitignore ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── Dockerfile ├── LICENSE ├── MAINTAINERS.md ├── README.md ├── docker-compose.yml ├── pom.xml ├── scripts ├── pull-fabric-images.sh └── run-integration-tests.sh └── src ├── main ├── java │ └── hlf │ │ └── java │ │ └── rest │ │ └── client │ │ ├── FabricClientBootstrap.java │ │ ├── config │ │ ├── BaseKafkaConfig.java │ │ ├── CustomTxnListenerMetricsConfig.java │ │ ├── EventDedupeConfig.java │ │ ├── FabricProperties.java │ │ ├── GatewayConfig.java │ │ ├── KafkaConsumerConfig.java │ │ ├── KafkaConsumerErrorHandler.java │ │ ├── KafkaProducerConfig.java │ │ ├── KafkaProperties.java │ │ ├── SSLAuthFilesHelper.java │ │ ├── SecurityConfig.java │ │ ├── SwaggerConfig.java │ │ └── WorkerPoolConfig.java │ │ ├── controller │ │ ├── ChaincodeOperationsController.java │ │ ├── ChannelOperationController.java │ │ ├── EventController.java │ │ ├── FabricClientController.java │ │ └── FabricOperationsController.java │ │ ├── exception │ │ ├── AuthenticationFailureException.java │ │ ├── BaseException.java │ │ ├── ChannelOperationException.java │ │ ├── ErrorCode.java │ │ ├── ErrorConstants.java │ │ ├── FabricTransactionException.java │ │ ├── GlobalExceptionHandler.java │ │ ├── NotFoundException.java │ │ ├── RetryableServiceException.java │ │ ├── ServiceException.java │ │ └── UnrecognizedTransactionPayloadException.java │ │ ├── listener │ │ ├── BlockEventListener.java │ │ ├── ChaincodeEventListener.java │ │ ├── DynamicKafkaListener.java │ │ ├── FabricEventListener.java │ │ └── TransactionConsumer.java │ │ ├── metrics │ │ ├── EmitCustomTransactionListenerMetrics.java │ │ ├── EmitCustomTransactionListenerMetricsAspect.java │ │ ├── MetricsTrackedEndpoint.java │ │ └── MetricsTrackedEndpointAspect.java │ │ ├── model │ │ ├── AbstractModelValidator.java │ │ ├── AnchorPeerDTO.java │ │ ├── BlockEventPrivateDataWriteSet.java │ │ ├── BlockEventWriteSet.java │ │ ├── ChaincodeEventCapture.java │ │ ├── ChaincodeOperations.java │ │ ├── ChaincodeOperationsType.java │ │ ├── ChannelOperationRequest.java │ │ ├── ChannelOperationType.java │ │ ├── ChannelUpdateParamsDTO.java │ │ ├── ClientResponseModel.java │ │ ├── CommitChannelParamsDTO.java │ │ ├── EventAPIResponseModel.java │ │ ├── EventStructure.java │ │ ├── EventType.java │ │ ├── MSPDTO.java │ │ ├── MultiDataTransactionPayload.java │ │ ├── MultiPrivateDataTransactionPayloadValidator.java │ │ ├── Orderer.java │ │ ├── Peer.java │ │ ├── PrivateTransactionPayload.java │ │ └── ValidatedDataModel.java │ │ ├── sdk │ │ └── StandardCCEvent.java │ │ ├── security │ │ └── HeaderAuthenticationFilter.java │ │ ├── service │ │ ├── ChaincodeOperationsService.java │ │ ├── ChannelConfigDeserialization.java │ │ ├── ChannelService.java │ │ ├── EventFulfillment.java │ │ ├── EventPublishService.java │ │ ├── HFClientWrapper.java │ │ ├── NetworkStatus.java │ │ ├── RecencyTransactionContext.java │ │ ├── TransactionFulfillment.java │ │ ├── UpdateChannel.java │ │ └── impl │ │ │ ├── ChaincodeOperationsServiceImpl.java │ │ │ ├── ChannelConfigDeserializationImpl.java │ │ │ ├── ChannelServiceImpl.java │ │ │ ├── DefaultCacheBasedRecencyTransactionContext.java │ │ │ ├── EventFulfillmentImpl.java │ │ │ ├── EventPublishServiceImpl.java │ │ │ ├── HFClientWrapperImpl.java │ │ │ ├── NetworkStatusImpl.java │ │ │ ├── NoOpRecencyTransactionContext.java │ │ │ ├── TransactionFulfillmentImpl.java │ │ │ └── UpdateChannelImpl.java │ │ └── util │ │ ├── FabricChannelUtil.java │ │ ├── FabricClientConstants.java │ │ ├── FabricEventParseUtil.java │ │ └── SerializationUtil.java └── resources │ ├── application.template │ ├── dashboards │ └── grafana-dashboard.json │ ├── logback.xml │ └── static │ └── open-api.yml └── test ├── java ├── fabricSetup │ ├── .env │ ├── docker-compose.yaml │ ├── e2e-2Orgs │ │ ├── configtx.yaml │ │ ├── crypto-config.yaml │ │ └── v2.1 │ │ │ ├── configtx.yaml │ │ │ ├── crypto-config │ │ │ ├── ordererOrganizations │ │ │ │ └── example.com │ │ │ │ │ ├── ca │ │ │ │ │ ├── 19b5153790854dae850a0f941570fc3c569b878723933ad5a9c319d293f2d492_sk │ │ │ │ │ └── ca.example.com-cert.pem │ │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── Admin@example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.example.com-cert.pem │ │ │ │ │ ├── orderers │ │ │ │ │ └── orderer.example.com │ │ │ │ │ │ ├── msp │ │ │ │ │ │ ├── admincerts │ │ │ │ │ │ │ └── Admin@example.com-cert.pem │ │ │ │ │ │ ├── cacerts │ │ │ │ │ │ │ └── ca.example.com-cert.pem │ │ │ │ │ │ ├── keystore │ │ │ │ │ │ │ └── 2033c8300dd5950d3fff13657d205cb7ef69e97758b70c12c5086205b69e88ac_sk │ │ │ │ │ │ ├── signcerts │ │ │ │ │ │ │ └── orderer.example.com-cert.pem │ │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ │ └── tlsca.example.com-cert.pem │ │ │ │ │ │ └── tls │ │ │ │ │ │ ├── ca.crt │ │ │ │ │ │ ├── server.crt │ │ │ │ │ │ └── server.key │ │ │ │ │ ├── tlsca │ │ │ │ │ ├── da76f315609de11bb1600d6eef9555b6d2cd0bf265549ff820236974d67b5245_sk │ │ │ │ │ └── tlsca.example.com-cert.pem │ │ │ │ │ └── users │ │ │ │ │ └── Admin@example.com │ │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── Admin@example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.example.com-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ │ └── fc6dea208b6c9bb150c6e9a809fd6a5dcc6b5ce4a6481b025557ef4a6e3ecf44_sk │ │ │ │ │ ├── signcerts │ │ │ │ │ │ └── Admin@example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.example.com-cert.pem │ │ │ │ │ └── tls │ │ │ │ │ ├── ca.crt │ │ │ │ │ ├── client.crt │ │ │ │ │ └── client.key │ │ │ └── peerOrganizations │ │ │ │ ├── org1.example.com │ │ │ │ ├── ca │ │ │ │ │ ├── ca.org1.example.com-cert.pem │ │ │ │ │ └── fcf776b02a05600408d0be9d9752afc59f64950b721cacb363b5b95a0fea6216_sk │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ ├── peers │ │ │ │ │ ├── peer0.org1.example.com │ │ │ │ │ │ ├── msp │ │ │ │ │ │ │ ├── admincerts │ │ │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ │ │ │ ├── cacerts │ │ │ │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ │ │ │ ├── keystore │ │ │ │ │ │ │ │ └── a1993072d65632fab2be261fa0d41218badd164eda336545366fc1ea9558161a_sk │ │ │ │ │ │ │ ├── signcerts │ │ │ │ │ │ │ │ └── peer0.org1.example.com-cert.pem │ │ │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ │ │ └── tls │ │ │ │ │ │ │ ├── ca.crt │ │ │ │ │ │ │ ├── server.crt │ │ │ │ │ │ │ └── server.key │ │ │ │ │ └── peer1.org1.example.com │ │ │ │ │ │ ├── msp │ │ │ │ │ │ ├── admincerts │ │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ │ │ ├── cacerts │ │ │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ │ │ ├── keystore │ │ │ │ │ │ │ └── d10285162f81bfd66b1acdf631cccf7ac2cbcab3673a9c27ec9ed7fce1ea4803_sk │ │ │ │ │ │ ├── signcerts │ │ │ │ │ │ │ └── peer1.org1.example.com-cert.pem │ │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ │ │ └── tls │ │ │ │ │ │ ├── ca.crt │ │ │ │ │ │ ├── server.crt │ │ │ │ │ │ └── server.key │ │ │ │ ├── tlsca │ │ │ │ │ ├── 1243663c779d2dab99bdd05e8c0941be8e3184e5a9dbe5711ab7b230266d7227_sk │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ └── users │ │ │ │ │ ├── Admin@org1.example.com │ │ │ │ │ ├── msp │ │ │ │ │ │ ├── admincerts │ │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ │ │ ├── cacerts │ │ │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ │ │ ├── keystore │ │ │ │ │ │ │ └── 581fa072e48dc2a516f664df94ea687447c071f89fc0b783b147956a08929dcc_sk │ │ │ │ │ │ ├── signcerts │ │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ │ └── tls │ │ │ │ │ │ ├── ca.crt │ │ │ │ │ │ ├── client.crt │ │ │ │ │ │ └── client.key │ │ │ │ │ └── User1@org1.example.com │ │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── User1@org1.example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ │ └── f84683030531deda35a8bcd1260c21f05b33c110be8e69943eba6a8db79c5292_sk │ │ │ │ │ ├── signcerts │ │ │ │ │ │ └── User1@org1.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ │ │ └── tls │ │ │ │ │ ├── ca.crt │ │ │ │ │ ├── client.crt │ │ │ │ │ └── client.key │ │ │ │ ├── org2.example.com │ │ │ │ ├── ca │ │ │ │ │ ├── b59bba37975dafcc4a93984aa01d3d29b64894617db9e0c9a2d486b5273cbd27_sk │ │ │ │ │ └── ca.org2.example.com-cert.pem │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── Admin@org2.example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.org2.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.org2.example.com-cert.pem │ │ │ │ ├── peers │ │ │ │ │ ├── peer0.org2.example.com │ │ │ │ │ │ ├── msp │ │ │ │ │ │ │ ├── admincerts │ │ │ │ │ │ │ │ └── Admin@org2.example.com-cert.pem │ │ │ │ │ │ │ ├── cacerts │ │ │ │ │ │ │ │ └── ca.org2.example.com-cert.pem │ │ │ │ │ │ │ ├── keystore │ │ │ │ │ │ │ │ └── 5d14548de7149e4c62bcef9f8de62358238101620a7362e826b9af7ff33480ad_sk │ │ │ │ │ │ │ ├── signcerts │ │ │ │ │ │ │ │ └── peer0.org2.example.com-cert.pem │ │ │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ │ │ └── tlsca.org2.example.com-cert.pem │ │ │ │ │ │ └── tls │ │ │ │ │ │ │ ├── ca.crt │ │ │ │ │ │ │ ├── server.crt │ │ │ │ │ │ │ └── server.key │ │ │ │ │ └── peer1.org2.example.com │ │ │ │ │ │ ├── msp │ │ │ │ │ │ ├── admincerts │ │ │ │ │ │ │ └── Admin@org2.example.com-cert.pem │ │ │ │ │ │ ├── cacerts │ │ │ │ │ │ │ └── ca.org2.example.com-cert.pem │ │ │ │ │ │ ├── keystore │ │ │ │ │ │ │ └── 2e38502a52ee50337182ba19ccbd0ef566316876b11685db999d59e5118666fb_sk │ │ │ │ │ │ ├── signcerts │ │ │ │ │ │ │ └── peer1.org2.example.com-cert.pem │ │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ │ └── tlsca.org2.example.com-cert.pem │ │ │ │ │ │ └── tls │ │ │ │ │ │ ├── ca.crt │ │ │ │ │ │ ├── server.crt │ │ │ │ │ │ └── server.key │ │ │ │ ├── tlsca │ │ │ │ │ ├── 6108ccfc03f7ce78a432004c35bbb4b4b4f6b0351e220a4a9de3a36d20868a4a_sk │ │ │ │ │ └── tlsca.org2.example.com-cert.pem │ │ │ │ └── users │ │ │ │ │ ├── Admin@org2.example.com │ │ │ │ │ ├── msp │ │ │ │ │ │ ├── admincerts │ │ │ │ │ │ │ └── Admin@org2.example.com-cert.pem │ │ │ │ │ │ ├── cacerts │ │ │ │ │ │ │ └── ca.org2.example.com-cert.pem │ │ │ │ │ │ ├── keystore │ │ │ │ │ │ │ └── 5fcbc56face045c33ad213f276293bbe3c54c2e69936045af5c9c46f38b4eddc_sk │ │ │ │ │ │ ├── signcerts │ │ │ │ │ │ │ └── Admin@org2.example.com-cert.pem │ │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ │ └── tlsca.org2.example.com-cert.pem │ │ │ │ │ └── tls │ │ │ │ │ │ ├── ca.crt │ │ │ │ │ │ ├── client.crt │ │ │ │ │ │ └── client.key │ │ │ │ │ └── User1@org2.example.com │ │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── User1@org2.example.com-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── ca.org2.example.com-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ │ └── 7f466d17e8f7540362bd3a7a93e0ed2f3c574b61b4f55bb21ff390b835920c5e_sk │ │ │ │ │ ├── signcerts │ │ │ │ │ │ └── User1@org2.example.com-cert.pem │ │ │ │ │ └── tlscacerts │ │ │ │ │ │ └── tlsca.org2.example.com-cert.pem │ │ │ │ │ └── tls │ │ │ │ │ ├── ca.crt │ │ │ │ │ ├── client.crt │ │ │ │ │ └── client.key │ │ │ │ ├── org3.example.com │ │ │ │ └── msp │ │ │ │ │ ├── IssuerPublicKey │ │ │ │ │ ├── RevocationPublicKey │ │ │ │ │ └── keystore │ │ │ │ │ ├── IssuerSecretKey │ │ │ │ │ └── RevocationSecretKey │ │ │ │ └── org4.example.com │ │ │ │ └── msp │ │ │ │ ├── IssuerPublicKey │ │ │ │ ├── RevocationPublicKey │ │ │ │ └── keystore │ │ │ │ ├── IssuerSecretKey │ │ │ │ └── RevocationSecretKey │ │ │ └── orderer.block │ └── peer-base │ │ └── peer-base.yaml └── hlf │ └── java │ └── rest │ └── client │ ├── IT │ ├── ChannelIT.java │ ├── KafkaBaseIT.java │ ├── PerPartitionListenerIntegrationIT.java │ ├── SingleThreadedListenerIntegrationIT.java │ └── SmartContractIT.java │ ├── chaincode │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── example │ │ ├── MyAsset.java │ │ └── MyAssetContract.java │ ├── controller │ ├── FabricClientControllerTest.java │ ├── FabricOperationsControllerTest.java │ └── e2e │ │ ├── ConsumeEventFromMultipleKafkaHosts.java │ │ ├── ConsumeFromEventKafka.java │ │ └── SendToIntgKafka.java │ ├── exception │ └── GlobalExceptionHandlerTest.java │ ├── integration │ └── ConfigHandlerControllerIntegrationTest.java │ ├── service │ └── impl │ │ ├── NetworkStatusImplTest.java │ │ └── TransactionFulfillmentImplTest.java │ └── util │ ├── EnrollAdmin.java │ ├── RegisterUser.java │ └── TestingUtlitlies.java └── resources ├── application-default-consumer.yml ├── application-per-partition-consumer.yml ├── application.yml ├── car.json ├── integration └── sample-application.yml ├── testconfig ├── connection.yml └── fabric-connection.yml └── testwallet ├── admin.id └── clientUser.id /.github/workflows/fabric_integration_tests.yml: -------------------------------------------------------------------------------- 1 | name: Fabric Integration Tests 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - main 7 | workflow_dispatch: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Clone the repository 15 | uses: "actions/checkout@v2" 16 | - name: Setup JDK 11 17 | uses: "actions/setup-java@v2" 18 | with: 19 | java-version: '11' 20 | distribution: 'adopt-openj9' 21 | - name: Run integration tests 22 | run: | 23 | chmod +x ./scripts/run-integration-tests.sh 24 | ./scripts/run-integration-tests.sh -------------------------------------------------------------------------------- /.github/workflows/pull_request.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request CI 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - main 7 | workflow_dispatch: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Clone the repository 15 | uses: "actions/checkout@v2" 16 | - name: Setup JDK 11 17 | uses: "actions/setup-java@v2" 18 | with: 19 | java-version: '11' 20 | distribution: 'adopt-openj9' 21 | - name: Run tests 22 | run: mvn -B clean verify 23 | - name: Run build 24 | run: mvn -B package -DskipTests=true 25 | -------------------------------------------------------------------------------- /.github/workflows/push.yml: -------------------------------------------------------------------------------- 1 | name: Merge Build and Sanity 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | workflow_dispatch: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Clone the repository 15 | uses: "actions/checkout@v2" 16 | - name: Setup JDK 11 17 | uses: "actions/setup-java@v2" 18 | with: 19 | java-version: '11' 20 | distribution: 'adopt-openj9' 21 | - name: Run tests and lints 22 | run: mvn -B clean verify 23 | - name: Run build 24 | run: mvn -B clean package -DskipTests=true 25 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | releaseType: 7 | description: 'Release Type (patch|minor|major)' 8 | required: true 9 | default: "patch" 10 | type: string 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - name: Check the release type information 18 | run: | 19 | if [[ "${type}" != "patch" && "${type}" != "minor" && "${type}" != "major" ]]; then 20 | echo "Release type cannot be ${type}" 21 | exit -1 22 | fi 23 | shell: bash 24 | env: 25 | type: "${{ github.event.inputs.releaseType }}" 26 | - name: Clone the repository 27 | uses: "actions/checkout@v2" 28 | - name: Setup JDK 11 29 | uses: "actions/setup-java@v2" 30 | with: 31 | java-version: '11' 32 | distribution: 'adopt-openj9' 33 | - name: Run tests and lints 34 | run: mvn -B clean verify 35 | - name: Run build 36 | run: mvn -B clean package -DskipTests=true 37 | - name: Login to GitHub Container Registry 38 | uses: docker/login-action@v1 39 | with: 40 | registry: ghcr.io 41 | username: $GITHUB_ACTOR 42 | password: "${{ secrets.GITHUB_TOKEN }}" 43 | - name: Generate a container image 44 | run: | 45 | version=$(mvn -q \ 46 | -Dexec.executable=echo \ 47 | -Dexec.args='${project.version}' \ 48 | --non-recursive \ 49 | exec:exec) 50 | docker build . -t ghcr.io/${USERNAME_OR_ORG}/hlf-connector:${version} 51 | docker push ghcr.io/${USERNAME_OR_ORG}/hlf-connector:${version} 52 | shell: bash 53 | env: 54 | USERNAME_OR_ORG: "${{ github.repository_owner }}" 55 | - name: Increment the pom version 56 | run: | 57 | mvn build-helper:parse-version help:effective-pom validate -D${type} 58 | rm -f pom.xml.versionsBackup 59 | shell: bash 60 | env: 61 | type: "${{ github.event.inputs.releaseType }}" 62 | - name: Create Pull Request with new PRs 63 | uses: peter-evans/create-pull-request@v3 64 | with: 65 | token: "${{ secrets.GITHUB_TOKEN }}" 66 | branch-suffix: timestamp 67 | title: Increment version after release 68 | labels: auto-version-increment 69 | signoff: true 70 | delete-branch: false 71 | commit-message: Auto increment version after release 72 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | /wallet 7 | /config/truststore 8 | /config/** 9 | 10 | ### STS ### 11 | .apt_generated 12 | .classpath 13 | .factorypath 14 | .project 15 | .settings 16 | .springBeans 17 | .sts4-cache 18 | 19 | ### IntelliJ IDEA ### 20 | .idea 21 | *.iws 22 | *.iml 23 | *.ipr 24 | 25 | ### NetBeans ### 26 | /nbproject/private/ 27 | /nbbuild/ 28 | /dist/ 29 | /nbdist/ 30 | /.nb-gradle/ 31 | build/ 32 | !**/src/main/**/build/ 33 | !**/src/test/**/build/ 34 | 35 | ### VS Code ### 36 | .vscode/ 37 | 38 | 39 | # Compiled class file 40 | *.class 41 | 42 | # Log file 43 | *.log 44 | 45 | # BlueJ files 46 | *.ctxt 47 | 48 | # Mobile Tools for Java (J2ME) 49 | .mtj.tmp/ 50 | 51 | # Package Files # 52 | *.jar 53 | *.war 54 | *.nar 55 | *.ear 56 | *.zip 57 | *.tar.gz 58 | *.rar 59 | 60 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 61 | hs_err_pid* 62 | 63 | *.DS_Store 64 | .DS_Store 65 | .classpath 66 | .mvn/ 67 | .project 68 | .settings/ 69 | HELP.md 70 | mvnw 71 | mvnw.cmd 72 | target/ 73 | 74 | # Ignore IDE files 75 | .idea 76 | *.iml 77 | 78 | #env 79 | /config/application.yml 80 | application.yml 81 | /config/connection-* 82 | docker-compose-* 83 | secrets 84 | stores 85 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | # Fabric Connector Maintainers 3 | * @hyperledger-labs/hlf-connector-maintainers 4 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | Code of Conduct Guidelines 2 | ========================== 3 | 4 | Please review the Hyperledger [Code of 5 | Conduct](https://wiki.hyperledger.org/community/hyperledger-project-code-of-conduct) 6 | before participating. It is important that we keep things civil. 7 | 8 | Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License. 9 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:18-jdk-oracle 2 | 3 | RUN mkdir /app 4 | 5 | COPY ./target/hlf-connector.jar /app 6 | 7 | WORKDIR /app 8 | 9 | 10 | RUN mkdir -p /usr/local/config 11 | 12 | RUN groupadd -r appGrp -g 10001 \ 13 | && useradd -u 10000 -r -g appGrp -m -d /opt/app/ -s /sbin/nologin -c "appGrp user" appGrp \ 14 | && chown -R 10000:10001 /usr/local/config 15 | 16 | USER 10000 17 | 18 | ENV spring_config_location=file:///usr/local/config/application.yml 19 | ENV JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx4096m -Dspring.config.location=${spring_config_location}" 20 | 21 | ENTRYPOINT java -jar hlf-connector.jar $JAVA_OPTS 22 | -------------------------------------------------------------------------------- /MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | Maintainers 2 | =========== 3 | 4 | **Active Maintainers** 5 | 6 | | Name | GitHub | Chat | email 7 | |----------------------|--------------|------------|---------------------- 8 | | Anand Banik | [anandbanik] | | 9 | | Arun S M | [arsulegai] | arsulegai | 10 | | Weihong Ou | [weihong-ou] | | 11 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | hlf-connector: 5 | container_name: hlf-connector 6 | build: . 7 | environment: 8 | - spring_profiles_active=container 9 | - fabric_localhostReportAddress=false 10 | - fabric_orgConnectionConfig_filename=connection-org1.yaml 11 | - fabric_wallet_clientUser_name=clientUser 12 | ports: 13 | - 8081:8080 14 | volumes: 15 | - ./config/application.yml:/usr/local/config/application.yml 16 | - ./wallet:/usr/local/config/wallet 17 | - ./config/connection-org1.yaml:/usr/local/config/connection-org1.yaml 18 | networks: 19 | default: 20 | external: 21 | name: net_test 22 | -------------------------------------------------------------------------------- /scripts/pull-fabric-images.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | set -euo pipefail 3 | 4 | VERSION=${FABRIC_VERSION:-2.2} 5 | STABLE_TAG=amd64-${VERSION}-stable 6 | 7 | for image in peer orderer tools ccenv baseos javaenv nodeenv; do 8 | docker pull -q hyperledger-fabric.jfrog.io/fabric-${image}:${STABLE_TAG} 9 | docker tag hyperledger-fabric.jfrog.io/fabric-${image}:${STABLE_TAG} hyperledger/fabric-${image} 10 | docker rmi -f hyperledger-fabric.jfrog.io/fabric-${image}:${STABLE_TAG} >/dev/null 11 | done 12 | 13 | docker pull -q hyperledger/fabric-ca:1.4 14 | docker tag hyperledger/fabric-ca:1.4 hyperledger/fabric-ca 15 | docker rmi -f hyperledger/fabric-ca:1.4 >/dev/null 16 | -------------------------------------------------------------------------------- /scripts/run-integration-tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # Script for continuous integration run. Cleanup, start docker containers for fabric and fabric ca 3 | # Start integration tests. 4 | 5 | set -euo pipefail 6 | 7 | export ORG_HYPERLEDGER_FABRIC_SDK_LOGLEVEL=TRACE 8 | export ORG_HYPERLEDGER_FABRIC_CA_SDK_LOGLEVEL=TRACE 9 | export ORG_HYPERLEDGER_FABRIC_SDK_LOG_EXTRALOGLEVEL=10 10 | 11 | cd "$(dirname "$0")" 12 | source pull-fabric-images.sh 13 | 14 | pushd ../src/test/java/fabricSetup/ >/dev/null 15 | docker compose up --force-recreate -d 16 | popd >/dev/null && cd .. 17 | 18 | docker ps -a 19 | 20 | export ORG_HYPERLEDGER_FABRIC_SDK_DIAGNOSTICFILEDIR=target/diagDump 21 | export MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" 22 | mvn clean test-compile failsafe:integration-test -Dmaven.test.failure.ignore=false 23 | 24 | pushd src/test/java/fabricSetup/ >/dev/null 25 | docker compose down --volumes 26 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/FabricClientBootstrap.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.boot.builder.SpringApplicationBuilder; 7 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 8 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 9 | 10 | /** Bootstrap for the Fabric-Client application */ 11 | @Slf4j 12 | @SpringBootApplication 13 | @EnableConfigurationProperties 14 | public class FabricClientBootstrap extends SpringBootServletInitializer { 15 | 16 | public static void main(String[] args) { 17 | SpringApplication.run(FabricClientBootstrap.class, args); 18 | } 19 | 20 | /** 21 | * Configure spring application builder. 22 | * 23 | * @param builder the builder 24 | * @return the spring application builder 25 | */ 26 | @Override 27 | protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 28 | log.info("Action : Starting : Servlet Initializer."); 29 | return builder.sources(FabricClientBootstrap.class); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/CustomTxnListenerMetricsConfig.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import io.micrometer.core.instrument.Counter; 4 | import io.micrometer.core.instrument.MeterRegistry; 5 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | 9 | @Configuration 10 | @ConditionalOnProperty("kafka.integration-points[0].brokerHost") 11 | public class CustomTxnListenerMetricsConfig { 12 | 13 | @Bean 14 | public Counter customKafkaSuccessCounter(MeterRegistry meterRegistry) { 15 | return meterRegistry.counter("kafka.messages.processed.messages"); 16 | } 17 | 18 | @Bean 19 | public Counter invalidInboundTransactionMessageCounter(MeterRegistry meterRegistry) { 20 | return meterRegistry.counter("transaction.messages.unrecognized.failures"); 21 | } 22 | 23 | @Bean 24 | public Counter inboundTxnProcessingFailureCounter(MeterRegistry meterRegistry) { 25 | return meterRegistry.counter("transaction.messages.process.failures"); 26 | } 27 | 28 | @Bean 29 | public Counter inboundTxnContractExceptionCounter(MeterRegistry meterRegistry) { 30 | return meterRegistry.counter("transaction.messages.contract.failures"); 31 | } 32 | 33 | @Bean 34 | public Counter inboundTxnTimeoutExceptionCounter(MeterRegistry meterRegistry) { 35 | return meterRegistry.counter("transaction.messages.timeout.failures"); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/EventDedupeConfig.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import com.google.common.cache.Cache; 4 | import com.google.common.cache.CacheBuilder; 5 | import hlf.java.rest.client.service.RecencyTransactionContext; 6 | import hlf.java.rest.client.service.impl.DefaultCacheBasedRecencyTransactionContext; 7 | import hlf.java.rest.client.service.impl.NoOpRecencyTransactionContext; 8 | import java.util.concurrent.TimeUnit; 9 | import lombok.Data; 10 | import lombok.extern.slf4j.Slf4j; 11 | import org.springframework.boot.context.properties.ConfigurationProperties; 12 | import org.springframework.context.annotation.Bean; 13 | import org.springframework.context.annotation.Configuration; 14 | 15 | @Data 16 | @Configuration 17 | @ConfigurationProperties(prefix = "dedupe") 18 | @Slf4j 19 | public class EventDedupeConfig { 20 | 21 | private boolean enable; 22 | private int recencyWindowSize; 23 | private int recencyWindowExpiryInMinutes; 24 | 25 | @Bean 26 | public RecencyTransactionContext recencyTransactionContext() { 27 | 28 | if (!this.isEnable()) { 29 | log.info( 30 | "Dedupe config is disabled. Events wont be validated prior to submission to publisher topic"); 31 | return new NoOpRecencyTransactionContext(); 32 | } 33 | 34 | Cache recencyCache = 35 | CacheBuilder.newBuilder() 36 | .maximumSize(this.getRecencyWindowSize()) 37 | .expireAfterAccess(this.getRecencyWindowExpiryInMinutes(), TimeUnit.MINUTES) 38 | .build(); 39 | 40 | log.info( 41 | "Enabling recency check with cache size {} and TTL {} minutes", 42 | recencyWindowSize, 43 | recencyWindowExpiryInMinutes); 44 | 45 | return new DefaultCacheBasedRecencyTransactionContext(recencyCache); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/FabricProperties.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import java.util.List; 4 | import javax.annotation.PostConstruct; 5 | import lombok.Data; 6 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 7 | import org.springframework.boot.context.properties.ConfigurationProperties; 8 | import org.springframework.cloud.context.config.annotation.RefreshScope; 9 | import org.springframework.context.annotation.Configuration; 10 | 11 | /** 12 | * FabricProperties reads and binds with the application.yml and provide all the configuration as a 13 | * bean configuration To use any configuration, just autowire and call the associated "get" method 14 | */ 15 | @Data 16 | @Configuration 17 | @ConfigurationProperties(prefix = "fabric") 18 | @RefreshScope 19 | public class FabricProperties { 20 | 21 | private static final String SYSTEM_PROP_FABRIC_SERVICE_DISCOVERY_LOCALHOST = 22 | "org.hyperledger.fabric.sdk.service_discovery.as_localhost"; 23 | 24 | private boolean localhostReportAddress; 25 | private WalletConfig wallet; 26 | private OrgConnectionConfig orgConnectionConfig; 27 | private Client client; 28 | private Events events; 29 | 30 | @Data 31 | public static class WalletConfig { 32 | private String path; 33 | private AdminUser adminUser; 34 | private ClientUser clientUser; 35 | 36 | @Data 37 | public static class AdminUser { 38 | private String name; 39 | } 40 | 41 | @Data 42 | public static class ClientUser { 43 | private String name; 44 | } 45 | } 46 | 47 | @Data 48 | public static class OrgConnectionConfig { 49 | private String path; 50 | private String filename; 51 | private int defaultCommitTimeoutInSeconds = 60; 52 | } 53 | 54 | @Data 55 | public static class Client { 56 | private Rest rest; 57 | 58 | @Data 59 | public static class Rest { 60 | private String apikey; 61 | } 62 | } 63 | 64 | @Data 65 | @ConditionalOnProperty(prefix = "fabric.events", name = "enable", havingValue = "true") 66 | public static class Events { 67 | private boolean enable; 68 | // TODO: This will be removed or deprecated and the property 'chaincodeDetails' will be 69 | // preferred for providing Chaincode details for Event subscription 70 | private List chaincode; 71 | private boolean standardCCEventEnabled; 72 | private List blockDetails; 73 | private List chaincodeDetails; 74 | } 75 | 76 | @Data 77 | public static class BlockDetails { 78 | private String channelName; 79 | private List listenerTopics; 80 | } 81 | 82 | @Data 83 | public static class ChaincodeDetails { 84 | private String channelName; 85 | private String chaincodeId; 86 | private List listenerTopics; 87 | } 88 | 89 | /** 90 | * Forces Hyperledger Service Discovery to report the localhost address for all nodes (peers & 91 | * ordering service) when client is running on local machine. This property allows client to node 92 | * connectivity when nodes cannot be accessed directly by the client on their public network 93 | * address as in the case above. 94 | */ 95 | @PostConstruct 96 | private void systemVariableSetup() { 97 | System.setProperty( 98 | SYSTEM_PROP_FABRIC_SERVICE_DISCOVERY_LOCALHOST, 99 | String.valueOf(this.isLocalhostReportAddress())); 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/KafkaConsumerConfig.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import hlf.java.rest.client.util.FabricClientConstants; 4 | import io.micrometer.core.instrument.MeterRegistry; 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.apache.commons.lang3.StringUtils; 9 | import org.apache.kafka.clients.consumer.ConsumerConfig; 10 | import org.apache.kafka.common.serialization.StringDeserializer; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 13 | import org.springframework.cloud.context.config.annotation.RefreshScope; 14 | import org.springframework.context.annotation.Configuration; 15 | import org.springframework.kafka.core.DefaultKafkaConsumerFactory; 16 | import org.springframework.kafka.core.MicrometerConsumerListener; 17 | 18 | /* 19 | * This class is the configuration class for setting the properties for the kafka consumers. 20 | * 21 | */ 22 | @Slf4j 23 | @Configuration 24 | @ConditionalOnProperty("kafka.integration-points[0].brokerHost") 25 | @RefreshScope 26 | public class KafkaConsumerConfig extends BaseKafkaConfig { 27 | 28 | @Autowired private MeterRegistry meterRegistry; 29 | 30 | public DefaultKafkaConsumerFactory consumerFactory( 31 | KafkaProperties.Consumer kafkaConsumerProperties) { 32 | Map props = new HashMap<>(); 33 | props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaConsumerProperties.getBrokerHost()); 34 | props.put(ConsumerConfig.GROUP_ID_CONFIG, kafkaConsumerProperties.getGroupId()); 35 | props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); 36 | props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); 37 | props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false); 38 | props.put( 39 | ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, FabricClientConstants.KAFKA_INTG_SESSION_TIMEOUT); 40 | props.put( 41 | ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 42 | FabricClientConstants.KAFKA_INTG_MAX_POLL_INTERVAL); 43 | props.put( 44 | ConsumerConfig.MAX_POLL_RECORDS_CONFIG, FabricClientConstants.KAFKA_INTG_MAX_POLL_RECORDS); 45 | 46 | // Distribute available partitions evenly across all consumers (or consumer threads) 47 | props.put( 48 | ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG, 49 | FabricClientConstants.ROUND_ROBIN_CONSUMER_PARTITION_ASSIGNEMENT_STRATEGY); 50 | 51 | // Azure event-hub config 52 | configureSaslProperties(props, kafkaConsumerProperties.getSaslJaasConfig()); 53 | 54 | if (StringUtils.isNotBlank(kafkaConsumerProperties.getOffsetResetPolicy())) { 55 | props.put( 56 | ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, kafkaConsumerProperties.getOffsetResetPolicy()); 57 | } 58 | 59 | // Adding SSL configuration if Kafka Cluster is SSL secured 60 | configureSSLProperties( 61 | props, kafkaConsumerProperties, kafkaConsumerProperties.getTopic(), meterRegistry); 62 | 63 | log.info("Generating Kafka consumer factory.."); 64 | 65 | DefaultKafkaConsumerFactory defaultKafkaConsumerFactory = 66 | new DefaultKafkaConsumerFactory<>(props); 67 | defaultKafkaConsumerFactory.addListener(new MicrometerConsumerListener<>(meterRegistry)); 68 | 69 | return defaultKafkaConsumerFactory; 70 | } 71 | 72 | @Override 73 | protected ConfigType getConfigType() { 74 | return ConfigType.CONSUMER; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/KafkaProperties.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import java.util.List; 4 | import lombok.Data; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import org.apache.commons.lang3.StringUtils; 8 | import org.springframework.boot.context.properties.ConfigurationProperties; 9 | import org.springframework.cloud.context.config.annotation.RefreshScope; 10 | import org.springframework.context.annotation.Configuration; 11 | 12 | /** 13 | * The type Kafka properties is added for fetching Kafka properties as configuration and can be used 14 | * in Consumer and Producer using @Autowired 15 | */ 16 | @Data 17 | @Configuration 18 | @ConfigurationProperties(prefix = "kafka") 19 | @RefreshScope 20 | public class KafkaProperties { 21 | 22 | private List integrationPoints; 23 | private List eventListeners; 24 | private Producer failedMessageListener; 25 | 26 | @Getter 27 | @Setter 28 | public static class Producer extends SSLProperties { 29 | private String brokerHost; 30 | private String topic; 31 | private String saslJaasConfig; 32 | private Boolean enableIdempotence; 33 | private Boolean enableAtMostOnceSemantics; 34 | 35 | @Override 36 | public String toString() { 37 | return "Producer{" 38 | + "brokerHost='" 39 | + brokerHost 40 | + '\'' 41 | + ", topic='" 42 | + topic 43 | + '\'' 44 | + ", saslJaasConfig='" 45 | + saslJaasConfig 46 | + '\'' 47 | + '}'; 48 | } 49 | } 50 | 51 | @Getter 52 | @Setter 53 | public static class EventProducer extends Producer { 54 | private boolean listenToFailedMessages; 55 | } 56 | 57 | /** The type Ssl properties is added for configuring SSL configuration for Kafka Cluster. */ 58 | @Getter 59 | @Setter 60 | public static class SSLProperties { 61 | 62 | protected boolean sslEnabled; 63 | protected String securityProtocol; 64 | protected String sslKeystoreLocation; 65 | protected String sslKeystorePassword; 66 | protected String sslTruststoreLocation; 67 | protected String sslTruststorePassword; 68 | protected String sslKeyPassword; 69 | protected String sslKeystoreBase64; 70 | protected String sslTruststoreBase64; 71 | 72 | protected boolean isSslAuthRequired() { 73 | boolean isProtocolSSL = 74 | StringUtils.isNotBlank(securityProtocol) && "ssl".equalsIgnoreCase(securityProtocol); 75 | return isProtocolSSL && sslEnabled; 76 | } 77 | } 78 | 79 | @Getter 80 | @Setter 81 | public static class Consumer extends SSLProperties { 82 | private String brokerHost; 83 | private String groupId; 84 | private String topic; 85 | private int topicPartitions = 1; 86 | private boolean enableParallelListenerCapabilities = false; 87 | private String saslJaasConfig; 88 | private String offsetResetPolicy; 89 | 90 | @Override 91 | public String toString() { 92 | return "Consumer{" 93 | + "brokerHost='" 94 | + brokerHost 95 | + '\'' 96 | + ", groupId='" 97 | + groupId 98 | + '\'' 99 | + ", topic='" 100 | + topic 101 | + '\'' 102 | + ", saslJaasConfig='" 103 | + saslJaasConfig 104 | + '\'' 105 | + '}'; 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/SSLAuthFilesHelper.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import java.io.FileInputStream; 4 | import java.io.IOException; 5 | import java.nio.file.Files; 6 | import java.nio.file.Path; 7 | import java.nio.file.Paths; 8 | import java.security.KeyStore; 9 | import java.security.KeyStoreException; 10 | import java.security.NoSuchAlgorithmException; 11 | import java.security.cert.Certificate; 12 | import java.security.cert.CertificateException; 13 | import java.security.cert.X509Certificate; 14 | import java.sql.Timestamp; 15 | import java.util.ArrayList; 16 | import java.util.Base64; 17 | import java.util.Collections; 18 | import java.util.Enumeration; 19 | import java.util.List; 20 | import lombok.experimental.UtilityClass; 21 | import lombok.extern.slf4j.Slf4j; 22 | import org.springframework.util.CollectionUtils; 23 | 24 | @Slf4j 25 | @UtilityClass 26 | public class SSLAuthFilesHelper { 27 | 28 | void createSSLAuthFiles(KafkaProperties.SSLProperties kafkaSSLProperties) { 29 | 30 | log.info("Creating Kafka ssl keystore file"); 31 | createSSLFileFromBase64( 32 | kafkaSSLProperties.getSslKeystoreBase64(), kafkaSSLProperties.getSslKeystoreLocation()); 33 | 34 | log.info("Keystore file created at {}", kafkaSSLProperties.getSslKeystoreLocation()); 35 | 36 | log.info("Creating Kafka ssl truststore file"); 37 | createSSLFileFromBase64( 38 | kafkaSSLProperties.getSslTruststoreBase64(), kafkaSSLProperties.getSslTruststoreLocation()); 39 | 40 | log.info("TrustStore file created at {}", kafkaSSLProperties.getSslTruststoreLocation()); 41 | } 42 | 43 | private static void createSSLFileFromBase64( 44 | String sslKeystoreBase64, String sslKeystoreLocation) { 45 | log.info("Creating file at: {}", sslKeystoreLocation); 46 | try { 47 | final Path path = Paths.get(sslKeystoreLocation); 48 | final Path parentPath = path.getParent(); 49 | if (!Files.isDirectory(parentPath)) { 50 | log.info("Creating directory: {}", parentPath); 51 | Files.createDirectory(parentPath); 52 | } 53 | Files.write(path, Base64.getDecoder().decode(sslKeystoreBase64)); 54 | } catch (IOException e) { 55 | log.error("Failed to create the ssl auth file at location: {}", sslKeystoreLocation, e); 56 | } 57 | } 58 | 59 | Timestamp getExpiryTimestampForKeyStore(String keyStorePath, String keyStorePassword) 60 | throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException { 61 | 62 | KeyStore keyStore = loadKeyStore(keyStorePath, keyStorePassword); 63 | 64 | List certExpiryTimestamps = new ArrayList<>(); 65 | 66 | Enumeration aliases = keyStore.aliases(); 67 | while (aliases.hasMoreElements()) { 68 | String alias = aliases.nextElement(); 69 | Certificate cert = keyStore.getCertificate(alias); 70 | if (cert instanceof X509Certificate) { 71 | X509Certificate x509Cert = (X509Certificate) cert; 72 | certExpiryTimestamps.add(new Timestamp(x509Cert.getNotAfter().getTime())); 73 | } 74 | } 75 | 76 | if (CollectionUtils.isEmpty(certExpiryTimestamps)) { 77 | throw new CertificateException( 78 | "Couldn't extract an instance of X509Certificate for fetching expiry details"); 79 | } 80 | 81 | // Return the earliest (minimum) timestamp from the list 82 | return Collections.min(certExpiryTimestamps); 83 | } 84 | 85 | private static KeyStore loadKeyStore(String path, String password) 86 | throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { 87 | KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); 88 | try (FileInputStream fis = new FileInputStream(path)) { 89 | keyStore.load(fis, password.toCharArray()); 90 | } 91 | return keyStore; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/SecurityConfig.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import hlf.java.rest.client.security.HeaderAuthenticationFilter; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; 7 | import org.springframework.security.config.annotation.web.builders.WebSecurity; 8 | import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 9 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 10 | import org.springframework.security.web.authentication.logout.LogoutFilter; 11 | import org.springframework.web.servlet.HandlerExceptionResolver; 12 | 13 | /** 14 | * SecurityConfig provides configuration which allows http calls which can be accessed by 15 | * application 16 | */ 17 | @Configuration 18 | @EnableWebSecurity 19 | public class SecurityConfig extends WebSecurityConfigurerAdapter { 20 | 21 | @Autowired private HandlerExceptionResolver handlerExceptionResolver; 22 | 23 | @Autowired private FabricProperties fabricProperties; 24 | 25 | /** 26 | * The configure method sets the permission limits to the Http request. Also, filter has been 27 | * configured which intercepts each request. 28 | */ 29 | @Override 30 | protected void configure(HttpSecurity http) throws Exception { 31 | // @formatter:off 32 | // Enable header based authentication for all the requests 33 | http.requestMatchers() 34 | .anyRequest() 35 | .and() 36 | .addFilterBefore( 37 | new HeaderAuthenticationFilter(fabricProperties, handlerExceptionResolver), 38 | LogoutFilter.class) 39 | .csrf() 40 | .disable() // NOSONAR 41 | .headers() 42 | .xssProtection(); 43 | // @formatter:on 44 | } 45 | 46 | /** 47 | * This configure method helps in ignoring spring security for particular http requests. This is 48 | * required because of the filter usage. 49 | * 50 | * @param web the web 51 | */ 52 | @Override 53 | public void configure(WebSecurity web) { 54 | // Enable Swagger Access 55 | web.ignoring() 56 | .antMatchers( 57 | "/swagger-ui.html", 58 | "/swagger-ui/**", 59 | "/v3/api-docs", 60 | "/v3/api-docs/swagger-config", 61 | "/webjars/**", 62 | "/actuator/**", 63 | "/open-api.*"); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/SwaggerConfig.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import io.swagger.v3.oas.models.media.StringSchema; 4 | import io.swagger.v3.oas.models.parameters.HeaderParameter; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springdoc.core.SpringDocConfigProperties; 7 | import org.springdoc.core.customizers.OpenApiCustomiser; 8 | import org.springdoc.core.providers.ObjectMapperProvider; 9 | import org.springframework.context.annotation.Bean; 10 | import org.springframework.context.annotation.Configuration; 11 | 12 | /** 13 | * Swagger configuration for the swagger api. Swagger UI is accessible at {hostname}/swagger-ui.html 14 | * Swagger Open API Doc is accessible at {hostname}/v3/api-docs 15 | */ 16 | @Slf4j 17 | @Configuration 18 | public class SwaggerConfig { 19 | 20 | /** 21 | * This bean is responsible for adding api key header for all the APIs exposed. Open api global 22 | * header customizer open api customiser. 23 | * 24 | * @return the open api customiser 25 | */ 26 | @Bean 27 | public OpenApiCustomiser openApiGlobalHeaderCustomizer() { 28 | log.info("Inside API customizer"); 29 | StringSchema schema = new StringSchema(); 30 | return openApi -> 31 | openApi.getPaths().values().stream() 32 | .flatMap(pathItem -> pathItem.readOperations().stream()) 33 | .forEach( 34 | operation -> { 35 | operation.addParametersItem( 36 | new HeaderParameter() 37 | .required(true) 38 | .name("api-key") 39 | .description("API Key") 40 | .schema(schema)); 41 | }); 42 | } 43 | 44 | @Bean 45 | public SpringDocConfigProperties springDocConfigProperties() { 46 | return new SpringDocConfigProperties(); 47 | } 48 | 49 | @Bean 50 | public ObjectMapperProvider springDocObjectMapperProvider( 51 | SpringDocConfigProperties springDocConfigProperties) { 52 | return new ObjectMapperProvider(springDocConfigProperties); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/config/WorkerPoolConfig.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.config; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.cloud.context.config.annotation.RefreshScope; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | import org.springframework.core.task.TaskExecutor; 8 | import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 9 | 10 | @Configuration 11 | @RefreshScope 12 | public class WorkerPoolConfig { 13 | 14 | /** 15 | * Core Pool and Max Pool size of executors are made configurable since these parameters are 16 | * determined by the environment in which the Connector is running, like the number of CPU cores. 17 | * If these values are not configured, fallback to the application defaults. 18 | */ 19 | @Value("${executors.defaultExecutor.corePoolSize:20}") 20 | private int defaultTaskExecutorCorePoolSize; 21 | 22 | @Value("${executors.defaultExecutor.maxPoolSize:30}") 23 | private int defaultExecutorMaxPoolSize; 24 | 25 | @Value("${executors.defaultExecutor.waitQueueSize:400}") 26 | private int defaultExecutorQueueSize; 27 | 28 | /** A general-purpose, re-usable Task executor. */ 29 | @Bean 30 | public TaskExecutor defaultTaskExecutor() { 31 | ThreadPoolTaskExecutor defaultTaskExecutor = new ThreadPoolTaskExecutor(); 32 | defaultTaskExecutor.setCorePoolSize(defaultTaskExecutorCorePoolSize); 33 | defaultTaskExecutor.setMaxPoolSize(defaultExecutorMaxPoolSize); 34 | defaultTaskExecutor.setQueueCapacity(defaultExecutorQueueSize); 35 | return defaultTaskExecutor; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/controller/ChannelOperationController.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.controller; 2 | 3 | import hlf.java.rest.client.metrics.MetricsTrackedEndpoint; 4 | import hlf.java.rest.client.model.ChannelOperationRequest; 5 | import hlf.java.rest.client.model.ClientResponseModel; 6 | import hlf.java.rest.client.service.ChannelService; 7 | import java.util.Set; 8 | import lombok.extern.slf4j.Slf4j; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.http.HttpStatus; 11 | import org.springframework.http.ResponseEntity; 12 | import org.springframework.web.bind.annotation.GetMapping; 13 | import org.springframework.web.bind.annotation.PostMapping; 14 | import org.springframework.web.bind.annotation.RequestBody; 15 | import org.springframework.web.bind.annotation.RequestMapping; 16 | import org.springframework.web.bind.annotation.RequestParam; 17 | import org.springframework.web.bind.annotation.RestController; 18 | 19 | @Slf4j 20 | @RestController 21 | @RequestMapping("/channel") 22 | public class ChannelOperationController { 23 | 24 | @Autowired private ChannelService channelService; 25 | 26 | @PostMapping("/create") 27 | @MetricsTrackedEndpoint(name = "Create Channel", method = "POST", uri = "/channel/create") 28 | public ResponseEntity createChannel( 29 | @RequestBody ChannelOperationRequest channelCreationRequest) { 30 | ClientResponseModel response = channelService.createChannel(channelCreationRequest); 31 | return ResponseEntity.status(response.getCode()).body(response); 32 | } 33 | 34 | @PostMapping("/join") 35 | @MetricsTrackedEndpoint(name = "Join Channel", method = "POST", uri = "/channel/join") 36 | public ResponseEntity joinChannel( 37 | @RequestBody ChannelOperationRequest channelJoinRequest) { 38 | ClientResponseModel response = channelService.joinChannel(channelJoinRequest); 39 | return ResponseEntity.status(response.getCode()).body(response); 40 | } 41 | 42 | @GetMapping("/members-mspid") 43 | public ResponseEntity> getChannelMembersMSPID( 44 | @RequestParam("channel_name") String channelName) { 45 | return new ResponseEntity<>(channelService.getChannelMembersMSPID(channelName), HttpStatus.OK); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/controller/EventController.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.controller; 2 | 3 | import hlf.java.rest.client.model.ClientResponseModel; 4 | import hlf.java.rest.client.service.EventFulfillment; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 8 | import org.springframework.cloud.context.config.annotation.RefreshScope; 9 | import org.springframework.http.ResponseEntity; 10 | import org.springframework.validation.annotation.Validated; 11 | import org.springframework.web.bind.annotation.PostMapping; 12 | import org.springframework.web.bind.annotation.RequestParam; 13 | import org.springframework.web.bind.annotation.RestController; 14 | 15 | @RestController 16 | @ConditionalOnProperty(prefix = "fabric.events", name = "enable", havingValue = "true") 17 | @RefreshScope 18 | @Slf4j 19 | public class EventController { 20 | 21 | @Autowired EventFulfillment eventFulfillment; 22 | 23 | /** 24 | * The REST Endpoint for replaying the events from a specific block number. 25 | * 26 | * @param startBlockNumber start block number 27 | * @param endBlockNumber end block number 28 | * @param networkName networkName/channel 29 | * @param eventType type of event 30 | * @return the ClientResponseModel status indicating that the request is accepted 31 | */ 32 | @PostMapping(value = "/blocks/events") 33 | public ResponseEntity replayEvents( 34 | @RequestParam("block-number-start") Long startBlockNumber, 35 | @RequestParam("block-number-end") Long endBlockNumber, 36 | @RequestParam(value = "transaction-id", required = false) String transactionId, 37 | @RequestParam("channel") @Validated String networkName, 38 | @RequestParam("eventType") @Validated String eventType) { 39 | log.info( 40 | "Triggering blocks since: {}, to: {}, on: {}, type: {}", 41 | startBlockNumber, 42 | endBlockNumber, 43 | networkName, 44 | eventType); 45 | return eventFulfillment.replayEvents( 46 | startBlockNumber, endBlockNumber, transactionId, networkName, eventType); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/AuthenticationFailureException.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | public class AuthenticationFailureException extends BaseException { 4 | private static final long serialVersionUID = 2554714419375055302L; 5 | 6 | public AuthenticationFailureException(ErrorCode code, String message) { 7 | super(code, message); 8 | } 9 | 10 | public AuthenticationFailureException(ErrorCode code, String message, Throwable cause) { 11 | super(code, message, cause); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/BaseException.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | /** 4 | * BaseException class which is created as abstract and will be super class of all our exception 5 | * classes. 6 | */ 7 | public abstract class BaseException extends RuntimeException { 8 | 9 | private static final long serialVersionUID = 2554714415375055302L; 10 | 11 | /** Uniquely identifies the exception instance thrown in code execution */ 12 | private final ErrorCode code; 13 | 14 | /** 15 | * Constructs a new BaseException exception with the specified detail message and {@link #code} 16 | * 17 | * @param code the {@link ErrorCode} to identify this exception instance 18 | * @param message the detailed message about the exception 19 | */ 20 | public BaseException(ErrorCode code, String message) { 21 | super(message); 22 | this.code = code; 23 | } 24 | 25 | /** 26 | * Constructs a new Base exception with the specified detail message, cause and {@link #code} 27 | * 28 | *

Note that the detail message associated with {@link #getCause()} is not automatically 29 | * incorporated in this runtime exception's detail message. 30 | * 31 | * @param code the error code 32 | * @param message the detail message 33 | * @param cause the cause (A null value is permitted, and indicates that the cause is nonexistent 34 | * or unknown.) 35 | */ 36 | public BaseException(ErrorCode code, String message, Throwable cause) { 37 | super(message, cause); 38 | this.code = code; 39 | } 40 | 41 | public ErrorCode getCode() { 42 | return code; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/ChannelOperationException.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | public class ChannelOperationException extends BaseException { 4 | 5 | public ChannelOperationException(ErrorCode code) { 6 | super(code, code.getReason()); 7 | } 8 | 9 | public ChannelOperationException(ErrorCode code, String message) { 10 | super(code, message); 11 | } 12 | 13 | public ChannelOperationException(ErrorCode code, String message, Throwable cause) { 14 | super(code, message, cause); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/ErrorCode.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | /** 4 | * ErrorCode enum will help us to uniquely identify each and every exception which has been manually 5 | * thrown in the execution flow 6 | */ 7 | public enum ErrorCode { 8 | SUCCESS(0000, "Submission successful"), 9 | // @formatter:off 10 | NOT_FOUND(1000, "Not able to find the requested resource data"), 11 | 12 | NO_EVENTS_FOUND(1001, "Not able to find any events for the passed input."), 13 | 14 | DESERIALIZATION_FAILURE(2000, "Error while deserializing an object"), 15 | 16 | NOT_SUPPORTED(1002, "Operation passed not supported."), 17 | 18 | VALIDATION_FAILED(1003, "The data passed fails validation from the resource."), 19 | 20 | SEQUENCE_NUMBER_VALIDATION_FAILED( 21 | 1004, "The sequence number is not same in all the peers or not present."), 22 | 23 | CHAINCODE_PACKAGE_ID_VALIDATION_FAILED( 24 | 1005, "The chaincode packageId is not same in all the peers or not present."), 25 | 26 | CHANNEL_CREATION_FAILED(3000, "Failed to create Channel"), 27 | 28 | CHANNEL_JOIN_FAILED(3006, "Failed to join channel"), 29 | 30 | CHANNEL_CREATION_MISSING_ORDERER(4000, "Orderer is missing"), 31 | 32 | CHANNEL_CREATION_MISSING_PEER(4001, "Peer is missing"), 33 | 34 | CHANNEL_NAME_MISSING(4002, "Channel name is missing"), 35 | 36 | CHANNEL_CREATION_MISSING_CONSORTIUM_NAME(4003, "Consortium name is missing"), 37 | 38 | CHANNEL_CREATION_CHANNEL_EXISTS(4005, "Channel exists"), 39 | 40 | CHANNEL_MISSING_CERTIFICATE(4006, "Certificate is missing"), 41 | CHANNEL_NOT_FOUND(4007, "Channel does not exists"), 42 | 43 | CHANNEL_PAYLOAD_ERROR(4999, "Unknown error"), 44 | 45 | HYPERLEDGER_FABRIC_CONNECTION_ERROR(5000, "Hyperledger Fabric connection related error"), 46 | 47 | HYPERLEDGER_FABRIC_CHANNEL_TXN_ERROR( 48 | 5001, "Hyperledger Fabric channel transaction error by block Number"), 49 | 50 | HYPERLEDGER_FABRIC_CHAINCODE_OPERATIONS_REQUEST_REJECTION( 51 | 5002, 52 | "Hyperledger Fabric chaincode operations request has illegal argument or argument is missing."), 53 | 54 | HYPERLEDGER_FABRIC_TRANSACTION_ERROR(6000, "Hyperledger Fabric transaction related error"), 55 | 56 | HYPERLEDGER_FABRIC_TRANSACTION_CONTRACT_ERROR( 57 | 6001, "Exception occurred while executing contract method"), 58 | 59 | HYPERLEDGER_FABRIC_TRANSACTION_TIMEOUT_ERROR( 60 | 6002, "Hyperledger Fabric Connection timed-out during Transaction"), 61 | 62 | HYPERLEDGER_FABRIC_TRANSACTION_GATEWAY_ERROR( 63 | 6003, "A Gateway error has occurred due to possible API misconfiguration"), 64 | 65 | HYPERLEDGER_FABRIC_NOT_SUPPORTED(8000, "In Hyperledger Fabric this feature is not supported"), 66 | 67 | AUTH_INVALID_API_KEY(9000, "Invalid api key"), 68 | 69 | NO_COLLECTION_CONFIG_FOUND(9001, "No Collection Config found"), 70 | 71 | NOT_DEFINED( 72 | 9999, 73 | "The exception is not a BaseException OR error code is not yet defined by the developer"); 74 | // @formatter:on 75 | 76 | private final int value; 77 | private final String reason; 78 | 79 | ErrorCode(int value, String reason) { 80 | this.value = value; 81 | this.reason = reason; 82 | } 83 | 84 | public int getValue() { 85 | return value; 86 | } 87 | 88 | public String getReason() { 89 | return reason; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/ErrorConstants.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | public final class ErrorConstants { 4 | 5 | /** Default value used by spring-cloud-sleuth to save the span id in Slf4j MDC */ 6 | public static final String LOG_SPAN_ID = "X-B3-SpanId"; 7 | 8 | /** 9 | * The generic error message to be used by {@link GlobalExceptionHandler} 10 | * 11 | *

When we encounter any exception, which is not a {@link BaseException}, and the most specific 12 | * cause is also not a {@link BaseException}, then we will return this error message, instead of 13 | * returning the technical error message 14 | */ 15 | public static final String GENERIC_ERROR_MESSAGE = 16 | "An error has occurred. Please contact the support team."; 17 | 18 | public static final Integer NO_ERROR = null; 19 | 20 | private ErrorConstants() {} 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/FabricTransactionException.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | /** 4 | * Used to represent all service level exceptions coming from the Hyperledger SDK 5 | * 6 | * @author c0c00ub 7 | */ 8 | public class FabricTransactionException extends BaseException { 9 | 10 | private static final long serialVersionUID = -1162154215509853616L; 11 | 12 | public FabricTransactionException(ErrorCode code, String message) { 13 | super(code, message); 14 | } 15 | 16 | public FabricTransactionException(ErrorCode code, String message, Throwable cause) { 17 | super(code, message, cause); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/NotFoundException.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | public class NotFoundException extends BaseException { 4 | private static final long serialVersionUID = 2554714419375055302L; 5 | 6 | public NotFoundException(ErrorCode code, String message) { 7 | super(code, message); 8 | } 9 | 10 | public NotFoundException(ErrorCode code, String message, Throwable cause) { 11 | super(code, message, cause); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/RetryableServiceException.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | public class RetryableServiceException extends ServiceException { 4 | 5 | public RetryableServiceException(ErrorCode code, String message, Throwable cause) { 6 | super(code, message, cause); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/ServiceException.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | /** ServiceException class is for all our service exceptions. */ 4 | public class ServiceException extends BaseException { 5 | 6 | private static final long serialVersionUID = 8145724920013541503L; 7 | 8 | public ServiceException(ErrorCode code, String message) { 9 | super(code, message); 10 | } 11 | 12 | public ServiceException(ErrorCode code, String message, Throwable cause) { 13 | super(code, message, cause); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/exception/UnrecognizedTransactionPayloadException.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.exception; 2 | 3 | public class UnrecognizedTransactionPayloadException extends BaseException { 4 | 5 | private static final long serialVersionUID = 6585724920013541503L; 6 | 7 | public UnrecognizedTransactionPayloadException(ErrorCode code, String message) { 8 | super(code, message); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/metrics/EmitCustomTransactionListenerMetrics.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.metrics; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.METHOD) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface EmitCustomTransactionListenerMetrics {} 11 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/metrics/EmitCustomTransactionListenerMetricsAspect.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.metrics; 2 | 3 | import hlf.java.rest.client.exception.ErrorCode; 4 | import hlf.java.rest.client.exception.FabricTransactionException; 5 | import hlf.java.rest.client.exception.ServiceException; 6 | import hlf.java.rest.client.exception.UnrecognizedTransactionPayloadException; 7 | import io.micrometer.core.instrument.Counter; 8 | import org.aspectj.lang.ProceedingJoinPoint; 9 | import org.aspectj.lang.annotation.Around; 10 | import org.aspectj.lang.annotation.Aspect; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 13 | import org.springframework.stereotype.Component; 14 | 15 | @Aspect 16 | @Component 17 | @ConditionalOnProperty("kafka.integration-points[0].brokerHost") 18 | public class EmitCustomTransactionListenerMetricsAspect { 19 | 20 | private static final String ANNOTATION_NAME = 21 | "hlf.java.rest.client.metrics.EmitCustomTransactionListenerMetrics"; 22 | 23 | @Autowired private Counter customKafkaSuccessCounter; 24 | 25 | @Autowired private Counter invalidInboundTransactionMessageCounter; 26 | 27 | @Autowired private Counter inboundTxnProcessingFailureCounter; 28 | 29 | @Autowired private Counter inboundTxnContractExceptionCounter; 30 | 31 | @Autowired private Counter inboundTxnTimeoutExceptionCounter; 32 | 33 | @Around("@annotation(" + ANNOTATION_NAME + ")") 34 | public Object interceptedKafkaMetricsEmissionAdvice(ProceedingJoinPoint proceedingJoinPoint) 35 | throws Throwable { 36 | try { 37 | Object returnValue = proceedingJoinPoint.proceed(); 38 | customKafkaSuccessCounter.increment(); 39 | return returnValue; 40 | } catch (UnrecognizedTransactionPayloadException e) { 41 | invalidInboundTransactionMessageCounter.increment(); 42 | inboundTxnProcessingFailureCounter.increment(); 43 | throw e; 44 | } catch (FabricTransactionException e) { 45 | inboundTxnProcessingFailureCounter.increment(); 46 | if (e.getCode().equals(ErrorCode.HYPERLEDGER_FABRIC_TRANSACTION_CONTRACT_ERROR)) { 47 | inboundTxnContractExceptionCounter.increment(); 48 | } else if (e.getCode().equals(ErrorCode.HYPERLEDGER_FABRIC_TRANSACTION_TIMEOUT_ERROR)) { 49 | inboundTxnTimeoutExceptionCounter.increment(); 50 | } 51 | throw e; 52 | } catch (ServiceException e) { 53 | inboundTxnProcessingFailureCounter.increment(); 54 | throw e; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/metrics/MetricsTrackedEndpoint.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.metrics; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.METHOD) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface MetricsTrackedEndpoint { 11 | String name(); 12 | 13 | String uri(); 14 | 15 | String method(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/metrics/MetricsTrackedEndpointAspect.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.metrics; 2 | 3 | import io.micrometer.core.instrument.Gauge; 4 | import io.micrometer.core.instrument.MeterRegistry; 5 | import java.util.Map; 6 | import java.util.concurrent.ConcurrentHashMap; 7 | import org.aspectj.lang.JoinPoint; 8 | import org.aspectj.lang.annotation.After; 9 | import org.aspectj.lang.annotation.Aspect; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.stereotype.Component; 12 | 13 | @Aspect 14 | @Component 15 | public class MetricsTrackedEndpointAspect { 16 | 17 | @Autowired private MeterRegistry meterRegistry; 18 | 19 | private Map trackedEndpoints = new ConcurrentHashMap<>(); 20 | 21 | @After("@annotation(metricsTrackedEndpoint)") 22 | public void afterTimedEndpoint( 23 | JoinPoint joinPoint, MetricsTrackedEndpoint metricsTrackedEndpoint) { 24 | 25 | trackedEndpoints.computeIfAbsent( 26 | metricsTrackedEndpoint.name(), 27 | val -> { 28 | Gauge.builder("tracked_endpoints", () -> 1L) 29 | .tag("name", metricsTrackedEndpoint.name()) 30 | .tag("method", metricsTrackedEndpoint.method()) 31 | .tag("uri", metricsTrackedEndpoint.uri()) 32 | .register(meterRegistry); 33 | 34 | return true; 35 | }); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/AbstractModelValidator.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | public abstract class AbstractModelValidator { 4 | public abstract void validate(T dataModel); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/AnchorPeerDTO.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class AnchorPeerDTO { 7 | private String hostname; 8 | private int port; 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/BlockEventPrivateDataWriteSet.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class BlockEventPrivateDataWriteSet { 8 | @JsonProperty("namespace") 9 | private String namespace; 10 | 11 | @JsonProperty("collection_name") 12 | private String collectionName; 13 | 14 | @JsonProperty("key") 15 | private String key; 16 | 17 | @JsonProperty("value") 18 | private String value; 19 | 20 | @JsonProperty("is_delete") 21 | private boolean isDelete; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/BlockEventWriteSet.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class BlockEventWriteSet { 8 | @JsonProperty("key") 9 | private String key; 10 | 11 | @JsonProperty("value") 12 | private String value; 13 | 14 | @JsonProperty("is_delete") 15 | private boolean isDelete; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/ChaincodeEventCapture.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import org.hyperledger.fabric.sdk.BlockEvent; 4 | import org.hyperledger.fabric.sdk.ChaincodeEvent; 5 | 6 | public class ChaincodeEventCapture { 7 | 8 | private final String handle; 9 | private final BlockEvent blockEvent; 10 | private final ChaincodeEvent chaincodeEvent; 11 | 12 | public ChaincodeEventCapture( 13 | String handle, BlockEvent blockEvent, ChaincodeEvent chaincodeEvent) { 14 | this.handle = handle; 15 | this.blockEvent = blockEvent; 16 | this.chaincodeEvent = chaincodeEvent; 17 | } 18 | 19 | /** @return the handle */ 20 | public String getHandle() { 21 | return handle; 22 | } 23 | 24 | /** @return the blockEvent */ 25 | public BlockEvent getBlockEvent() { 26 | return blockEvent; 27 | } 28 | 29 | /** @return the chaincodeEvent */ 30 | public ChaincodeEvent getChaincodeEvent() { 31 | return chaincodeEvent; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/ChaincodeOperations.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import java.util.Set; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | public class ChaincodeOperations { 10 | private String chaincodeName; 11 | private String chaincodeVersion; 12 | private Long sequence; 13 | private Boolean initRequired; 14 | private String chaincodePackageID; 15 | private Set peerNames; 16 | // lombok generates a method by the name `IsWithCollectionConfig()` 17 | private boolean isWithCollectionConfig; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/ChaincodeOperationsType.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | public enum ChaincodeOperationsType { 4 | APPROVE, 5 | COMMIT 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/ChannelOperationRequest.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Properties; 6 | import lombok.Data; 7 | import org.hyperledger.fabric.sdk.HFClient; 8 | import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; 9 | import org.springframework.util.CollectionUtils; 10 | 11 | @Data 12 | public class ChannelOperationRequest { 13 | 14 | private static final String TRUST_CERT_BYTES = "pemBytes"; 15 | private static final String PEER_ORGANIZATION_MSPID_PROPERTY = 16 | "org.hyperledger.fabric.sdk.peer.organization_mspid"; 17 | 18 | private String channelName; 19 | 20 | private String consortiumName; 21 | 22 | private List orderers; 23 | 24 | private List peers; 25 | 26 | /** 27 | * get the list of peers from the request 28 | * 29 | * @param hfClient the requester sending the client object to construct the peer instance 30 | * @return list of fabric peers 31 | * @throws InvalidArgumentException 32 | */ 33 | public List getFabricPeers(HFClient hfClient) 34 | throws InvalidArgumentException { 35 | List peers = new ArrayList<>(); 36 | if (CollectionUtils.isEmpty(this.getPeers())) { 37 | return peers; 38 | } 39 | for (hlf.java.rest.client.model.Peer peerModel : this.getPeers()) { 40 | String peerName = peerModel.getName(); 41 | String peerGrpcUrl = peerModel.getGrpcUrl(); 42 | Properties properties = new Properties(); 43 | properties.put(PEER_ORGANIZATION_MSPID_PROPERTY, peerModel.getMspid()); 44 | properties.put(TRUST_CERT_BYTES, peerModel.getCertificate().getBytes()); 45 | org.hyperledger.fabric.sdk.Peer peer = hfClient.newPeer(peerName, peerGrpcUrl, properties); 46 | peers.add(peer); 47 | } 48 | return peers; 49 | } 50 | 51 | /** 52 | * get the list of orderers from the request 53 | * 54 | * @param hfClient the requester sending the client object to construct the peer instance 55 | * @return list of fabric orderers 56 | * @throws InvalidArgumentException 57 | */ 58 | public List getFabricOrderers(HFClient hfClient) 59 | throws InvalidArgumentException { 60 | List orderers = new ArrayList<>(); 61 | if (CollectionUtils.isEmpty(this.getOrderers())) { 62 | return orderers; 63 | } 64 | for (hlf.java.rest.client.model.Orderer ordererModel : this.getOrderers()) { 65 | String ordererName = ordererModel.getName(); 66 | String ordererGrpcUrl = ordererModel.getGrpcUrl(); 67 | Properties properties = new Properties(); 68 | properties.put(TRUST_CERT_BYTES, ordererModel.getCertificate().getBytes()); 69 | org.hyperledger.fabric.sdk.Orderer orderer = 70 | hfClient.newOrderer(ordererName, ordererGrpcUrl, properties); 71 | orderers.add(orderer); 72 | } 73 | return orderers; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/ChannelOperationType.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | public enum ChannelOperationType { 4 | CREATE, 5 | ADD_ORG, 6 | JOIN_PEER, 7 | INSTALL_CHAINCODE, 8 | APPROVE_CHAINCODE, 9 | COMMIT_CHAINCODE 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/ChannelUpdateParamsDTO.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import java.util.List; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class ChannelUpdateParamsDTO { 8 | private String organizationMspId; 9 | private List anchorPeerDTOs; 10 | private MSPDTO mspDTO; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/ClientResponseModel.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import com.fasterxml.jackson.annotation.JsonInclude.Include; 5 | import hlf.java.rest.client.exception.ErrorConstants; 6 | import hlf.java.rest.client.exception.GlobalExceptionHandler; 7 | import java.io.Serializable; 8 | import java.time.Instant; 9 | import lombok.Data; 10 | import org.slf4j.MDC; 11 | 12 | /** 13 | * ErrorResponseModel class is used as the standard response body for all the successful responses 14 | * or exceptions handled by the {@link GlobalExceptionHandler} 15 | */ 16 | @Data 17 | public class ClientResponseModel { 18 | 19 | public ClientResponseModel(Integer code, Serializable message) { 20 | Instant instant = Instant.now(); 21 | this.timestamp = instant.toString(); 22 | this.transactionId = MDC.get(ErrorConstants.LOG_SPAN_ID); 23 | this.code = code; 24 | this.message = message; 25 | } 26 | 27 | public ClientResponseModel(String errorId, Integer code, Serializable message) { 28 | Instant instant = Instant.now(); 29 | this.timestamp = instant.toString(); 30 | this.transactionId = errorId; 31 | this.code = code; 32 | this.message = message; 33 | } 34 | 35 | public ClientResponseModel() { 36 | this.timestamp = null; 37 | this.transactionId = null; 38 | this.code = 0; 39 | this.message = null; 40 | } 41 | 42 | /** End timestamp of the response in UTC format * */ 43 | private String timestamp; 44 | 45 | /** 46 | * An UUID value which can be used to trace the log of all the events which led to this response 47 | * or error 48 | */ 49 | private String transactionId; 50 | 51 | @JsonInclude(value = Include.NON_NULL) 52 | /** Used to uniquely identify the exception instance causing this error */ 53 | private Integer code; 54 | 55 | /** 56 | * The details of response. It can be a detailed message string OR a java class having in-depth 57 | * details of this error 58 | */ 59 | private Serializable message; 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/CommitChannelParamsDTO.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import java.util.List; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class CommitChannelParamsDTO { 8 | 9 | private List signatures; 10 | private String configUpdateBase64Encoded; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/EventAPIResponseModel.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class EventAPIResponseModel { 9 | private String data; 10 | private String error; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/EventStructure.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class EventStructure { 9 | private String data; 10 | private String privateData; 11 | private String error; 12 | private String eventURI; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/EventType.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | public enum EventType { 4 | BLOCK_EVENT, 5 | CHAINCODE_EVENT 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/MSPDTO.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import java.util.List; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class MSPDTO { 8 | 9 | private List rootCerts; 10 | private List tlsRootCerts; 11 | private String adminOUCert; 12 | private String clientOUCert; 13 | private String ordererOUCert; 14 | private String peerOUCert; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/MultiDataTransactionPayload.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import java.io.Serializable; 5 | import java.util.List; 6 | import lombok.Data; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class MultiDataTransactionPayload extends ValidatedDataModel implements Serializable { 11 | private List peerNames; 12 | private List privatePayload; 13 | private List publicPayload; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/MultiPrivateDataTransactionPayloadValidator.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | import org.springframework.util.CollectionUtils; 5 | 6 | public class MultiPrivateDataTransactionPayloadValidator 7 | extends AbstractModelValidator { 8 | 9 | /** 10 | * -> Payload should at-least contain one or more Private Data or Public Data or both. -> If one 11 | * or more Private Data is present, it's corresponding key name and value name must be present. 12 | * CollectionName would remain as optional. -> Peer names are optional 13 | */ 14 | @Override 15 | public void validate(MultiDataTransactionPayload multiDataTransactionPayload) { 16 | 17 | // Ensure that both Public & Private Data are not missing 18 | if (CollectionUtils.isEmpty(multiDataTransactionPayload.getPrivatePayload()) 19 | && CollectionUtils.isEmpty(multiDataTransactionPayload.getPublicPayload())) { 20 | throw new IllegalStateException( 21 | "Payload should consist of at-least one Private Data Payload or Public Payload"); 22 | } 23 | 24 | // If the model has Private data listed, ensure that it has mandatory fields populated 25 | // Have the nested if condition to avoid null pointer exceptions in case if the private 26 | // payload is absent and was never sent. 27 | if (!CollectionUtils.isEmpty(multiDataTransactionPayload.getPrivatePayload())) { 28 | boolean hasValidPrivateData = 29 | multiDataTransactionPayload.getPrivatePayload().stream() 30 | .allMatch( 31 | privateTransactionPayload -> 32 | StringUtils.isNotBlank(privateTransactionPayload.getKey()) 33 | && StringUtils.isNotBlank(privateTransactionPayload.getData())); 34 | 35 | if (!hasValidPrivateData) { 36 | throw new IllegalStateException( 37 | "One or more Private Data representation is invalid, Private details should contain both Key name & Data"); 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/Orderer.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Orderer { 7 | 8 | private String name; 9 | private String mspid; 10 | private String grpcUrl; 11 | private String certificate; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/Peer.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Peer { 7 | 8 | private String name; 9 | private String mspid; 10 | private MSPDTO mspDTO; 11 | private String grpcUrl; 12 | private String certificate; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/PrivateTransactionPayload.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class PrivateTransactionPayload { 7 | private String key; 8 | private String collectionName; 9 | private String data; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/model/ValidatedDataModel.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.model; 2 | 3 | public class ValidatedDataModel {} 4 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/sdk/StandardCCEvent.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.sdk; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import java.io.Serializable; 5 | import lombok.Data; 6 | 7 | /** 8 | * StandardCCEvent can be used by smart contract developers to send a commonly wrapped event that 9 | * the hlf-connector decodes. The decoded event can be used to publish to Kafka. 10 | */ 11 | @Data 12 | public class StandardCCEvent implements Serializable { 13 | @JsonProperty("key") 14 | private String key; 15 | 16 | @JsonProperty("event") 17 | private String event; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/security/HeaderAuthenticationFilter.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.security; 2 | 3 | import hlf.java.rest.client.config.FabricProperties; 4 | import hlf.java.rest.client.exception.AuthenticationFailureException; 5 | import hlf.java.rest.client.exception.ErrorCode; 6 | import javax.servlet.FilterChain; 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | import lombok.extern.slf4j.Slf4j; 10 | import org.springframework.web.filter.OncePerRequestFilter; 11 | import org.springframework.web.servlet.HandlerExceptionResolver; 12 | 13 | @Slf4j 14 | public class HeaderAuthenticationFilter extends OncePerRequestFilter { 15 | 16 | private FabricProperties fabricProperties; 17 | 18 | private HandlerExceptionResolver handlerExceptionResolver; 19 | 20 | /** 21 | * Instantiates a new Header authentication filter. 22 | * 23 | * @param fabricProperties the application 24 | * @param handlerExceptionResolver the handler exception resolver 25 | */ 26 | public HeaderAuthenticationFilter( 27 | FabricProperties fabricProperties, HandlerExceptionResolver handlerExceptionResolver) { 28 | this.fabricProperties = fabricProperties; 29 | this.handlerExceptionResolver = handlerExceptionResolver; 30 | } 31 | 32 | @Override 33 | protected void doFilterInternal( 34 | HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) { 35 | try { 36 | authenticate(request); 37 | filterChain.doFilter(request, response); 38 | } catch (Exception ex) { 39 | // This resolver will take care of handling all the AuthenticationExceptions 40 | // and delegating the handling of the response to appropriate exception handler 41 | handlerExceptionResolver.resolveException(request, response, null, ex); 42 | } 43 | } 44 | 45 | /** 46 | * This function checks if apiKey and userId are part of header and verifies apikey against apiKey 47 | * configured for the application. 48 | * 49 | *

Also we set the userId as part of SecurityContextHolder 50 | * 51 | * @param request HttpServletRequest 52 | */ 53 | private void authenticate(HttpServletRequest request) { 54 | 55 | String apiKey = request.getHeader("api-key"); 56 | if (!fabricProperties.getClient().getRest().getApikey().equals(apiKey)) { 57 | log.debug("API Key does not match"); 58 | throw new AuthenticationFailureException(ErrorCode.AUTH_INVALID_API_KEY, "Invalid API Key"); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/ChaincodeOperationsService.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | import hlf.java.rest.client.model.ChaincodeOperations; 4 | import hlf.java.rest.client.model.ChaincodeOperationsType; 5 | import java.util.Optional; 6 | import java.util.Set; 7 | import org.hyperledger.fabric.sdk.LifecycleChaincodeEndorsementPolicy; 8 | import org.springframework.web.multipart.MultipartFile; 9 | 10 | public interface ChaincodeOperationsService { 11 | 12 | /** 13 | * Perform chaincode operations passed in the arguments. 14 | * 15 | * @param networkName the network name 16 | * @param chaincodeOperationsModel the chaincode operations model 17 | * @param operationsType the operations type 18 | * @return the transactionId 19 | */ 20 | String performChaincodeOperation( 21 | String networkName, 22 | ChaincodeOperations chaincodeOperationsModel, 23 | ChaincodeOperationsType operationsType, 24 | Optional collectionConfigFile); 25 | 26 | /** 27 | * Gets current sequence for the channel and chaincode. 28 | * 29 | * @param networkName the network name 30 | * @param chaincodeName the chaincode name 31 | * @param chaincodeVersion the chaincode version 32 | * @return the current sequence 33 | */ 34 | String getCurrentSequence(String networkName, String chaincodeName, String chaincodeVersion); 35 | 36 | /** 37 | * Gets the current Version of the specified Chainode within the Channel 38 | * 39 | * @param networkName the network name 40 | * @param chaincodeName the chaincode name 41 | * @return the current Version 42 | */ 43 | String getCurrentVersion(String networkName, String chaincodeName); 44 | 45 | /** 46 | * Gets current package id for the passed channel and chaincode. 47 | * 48 | * @param networkName the network name 49 | * @param chaincodeName the chaincode name 50 | * @param chaincodeVersion the chaincode version 51 | * @return the current package id 52 | */ 53 | String getCurrentPackageId(String networkName, String chaincodeName, String chaincodeVersion); 54 | 55 | /** 56 | * Gets the current PDC associated with the specified Chaincode 57 | * 58 | * @param networkName the network name 59 | * @param chaincodeName the chaincode name 60 | * @param chaincodeVersion the chaincode version 61 | * @return the current package id 62 | */ 63 | String getCollectionConfig(String networkName, String chaincodeName, String chaincodeVersion); 64 | 65 | Set getApprovedOrganizations( 66 | String networkName, 67 | ChaincodeOperations chaincodeOperationsModel, 68 | Optional chaincodeEndorsementPolicyOptional, 69 | Optional collectionConfigFileOptional); 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/ChannelConfigDeserialization.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | import hlf.java.rest.client.exception.ServiceException; 4 | 5 | public interface ChannelConfigDeserialization { 6 | 7 | String deserializeValueFields(String channelConfigString) throws ServiceException; 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/ChannelService.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | import hlf.java.rest.client.model.ChannelOperationRequest; 4 | import hlf.java.rest.client.model.ClientResponseModel; 5 | import java.util.Set; 6 | 7 | public interface ChannelService { 8 | 9 | /** 10 | * create new channel 11 | * 12 | * @param channelOperationRequest request that includes channel name, org msp, peer, and orderer 13 | * information 14 | * @return channel operation response 15 | */ 16 | ClientResponseModel createChannel(ChannelOperationRequest channelOperationRequest); 17 | 18 | /** 19 | * join peer to the channel 20 | * 21 | * @param channelOperationRequest request that includes channel name, org msp, peer, and orderer 22 | * information 23 | * @return channel operation response 24 | */ 25 | ClientResponseModel joinChannel(ChannelOperationRequest channelOperationRequest); 26 | 27 | /** 28 | * get channel members mspid 29 | * 30 | * @param channelName 31 | * @return 32 | */ 33 | Set getChannelMembersMSPID(String channelName); 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/EventFulfillment.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | import hlf.java.rest.client.model.ClientResponseModel; 4 | import org.springframework.http.ResponseEntity; 5 | 6 | public interface EventFulfillment { 7 | 8 | /** 9 | * Replay the blockchain events. 10 | * 11 | *

Sends all the events from either the chaincode or the block itself since the specific block 12 | * number. 13 | * 14 | * @param startBlockNumber Long since the block number for replaying the events 15 | * @param endBlockNumber Long until the block number 16 | * @param networkName String channel name 17 | * @param eventType String event type parameter 18 | * @return responseEntity ResponseEntity Transaction Response 19 | */ 20 | ResponseEntity replayEvents( 21 | Long startBlockNumber, 22 | Long endBlockNumber, 23 | String transactionId, 24 | String networkName, 25 | String eventType); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/EventPublishService.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 4 | 5 | /** 6 | * The EventPublishService is a service class, which include the kafka template. It sends the 7 | * Message to the Event Kafka message topic 8 | */ 9 | @ConditionalOnProperty("kafka.event-listeners[0].brokerHost") 10 | public interface EventPublishService { 11 | 12 | /** 13 | * @param payload String message payload 14 | * @param fabricTxId String Fabric transaction ID 15 | * @param eventName String chaincode event-name 16 | * @param channelName String Name of the channel where the event was generated. 17 | * @param messageKey associated key for the payload. 18 | */ 19 | void publishChaincodeEvents( 20 | final String payload, 21 | String chaincodeName, 22 | String fabricTxId, 23 | String eventName, 24 | String channelName, 25 | String messageKey, 26 | boolean isTxnValid); 27 | 28 | /** 29 | * @param payload String message payload 30 | * @param fabricTxId String Fabric transaction ID 31 | * @param chaincodeName String chaincode name 32 | * @param channelName String Name of the channel where the event was generated. 33 | * @param functionName String Name of the function name. 34 | * @param isPrivateDataPresent boolean flag to check if privateData present in payload 35 | */ 36 | void publishBlockEvents( 37 | final String payload, 38 | String fabricTxId, 39 | String channelName, 40 | String chaincodeName, 41 | String functionName, 42 | Boolean isPrivateDataPresent); 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/HFClientWrapper.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | import org.hyperledger.fabric.sdk.HFClient; 4 | 5 | public interface HFClientWrapper { 6 | HFClient getHfClient(); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/NetworkStatus.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | import hlf.java.rest.client.model.ChannelUpdateParamsDTO; 4 | import hlf.java.rest.client.model.ClientResponseModel; 5 | import hlf.java.rest.client.model.CommitChannelParamsDTO; 6 | import java.util.Set; 7 | import org.springframework.http.ResponseEntity; 8 | 9 | public interface NetworkStatus { 10 | 11 | ResponseEntity getChannelFromNetwork(String channelName); 12 | 13 | Set getAnchorPeerForChannel(String channelName); 14 | 15 | ResponseEntity signChannelConfigTransaction( 16 | String channelName, String configUpdate); 17 | 18 | ResponseEntity generateConfigUpdate( 19 | String channelName, ChannelUpdateParamsDTO organizationDetails); 20 | 21 | ResponseEntity commitChannelConfigTransaction( 22 | String channelName, CommitChannelParamsDTO commitChannelParamsDTO); 23 | 24 | ResponseEntity addOrgToChannel( 25 | String channelName, ChannelUpdateParamsDTO organizationDetails); 26 | 27 | ResponseEntity addAnchorPeersToChannel( 28 | String channelName, ChannelUpdateParamsDTO channelUpdateParamsDTO); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/RecencyTransactionContext.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | public interface RecencyTransactionContext { 4 | 5 | void setTransactionContext(String transactionId); 6 | 7 | boolean validateAndRemoveTransactionContext(String transactionId); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/UpdateChannel.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service; 2 | 3 | import hlf.java.rest.client.exception.ServiceException; 4 | import hlf.java.rest.client.model.ChannelUpdateParamsDTO; 5 | import org.hyperledger.fabric.protos.common.Configtx.ConfigGroup; 6 | 7 | public interface UpdateChannel { 8 | 9 | ConfigGroup buildWriteset(ConfigGroup readset, ChannelUpdateParamsDTO organizationDetails) 10 | throws ServiceException; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/impl/DefaultCacheBasedRecencyTransactionContext.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service.impl; 2 | 3 | import com.google.common.cache.Cache; 4 | import hlf.java.rest.client.service.RecencyTransactionContext; 5 | 6 | public class DefaultCacheBasedRecencyTransactionContext implements RecencyTransactionContext { 7 | 8 | private Cache recencyCache; 9 | 10 | public DefaultCacheBasedRecencyTransactionContext(Cache recencyCache) { 11 | this.recencyCache = recencyCache; 12 | } 13 | 14 | @Override 15 | public void setTransactionContext(String transactionId) { 16 | recencyCache.put(transactionId, 1); 17 | } 18 | 19 | @Override 20 | public boolean validateAndRemoveTransactionContext(String transactionId) { 21 | synchronized (this) { 22 | if (recencyCache.getIfPresent(transactionId) == null) { 23 | return false; 24 | } 25 | recencyCache.invalidate(transactionId); 26 | return true; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/impl/HFClientWrapperImpl.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service.impl; 2 | 3 | import hlf.java.rest.client.service.HFClientWrapper; 4 | import lombok.Getter; 5 | import org.hyperledger.fabric.sdk.HFClient; 6 | 7 | @Getter 8 | public class HFClientWrapperImpl implements HFClientWrapper { 9 | private final HFClient hfClient; 10 | 11 | public HFClientWrapperImpl(HFClient hfClient) { 12 | this.hfClient = hfClient; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/service/impl/NoOpRecencyTransactionContext.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.service.impl; 2 | 3 | import hlf.java.rest.client.service.RecencyTransactionContext; 4 | 5 | public class NoOpRecencyTransactionContext implements RecencyTransactionContext { 6 | @Override 7 | public void setTransactionContext(String transactionId) { 8 | // NO-OP 9 | } 10 | 11 | @Override 12 | public boolean validateAndRemoveTransactionContext(String transactionId) { 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/hlf/java/rest/client/util/SerializationUtil.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.util; 2 | 3 | import hlf.java.rest.client.exception.ErrorCode; 4 | import hlf.java.rest.client.exception.ErrorConstants; 5 | import hlf.java.rest.client.exception.ServiceException; 6 | import hlf.java.rest.client.model.ClientResponseModel; 7 | import hlf.java.rest.client.service.ChannelConfigDeserialization; 8 | import java.util.Base64; 9 | import lombok.extern.slf4j.Slf4j; 10 | import org.json.simple.JSONObject; 11 | import org.json.simple.parser.JSONParser; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.http.HttpStatus; 14 | import org.springframework.http.ResponseEntity; 15 | import org.springframework.stereotype.Component; 16 | 17 | @Component 18 | @Slf4j 19 | public class SerializationUtil { 20 | 21 | @Autowired private ChannelConfigDeserialization channelConfigDeserialization; 22 | 23 | public ResponseEntity decodeContents( 24 | String encodedJson, boolean decodeInterior, boolean prettyPrint) { 25 | byte[] decodedJsonByteArray = Base64.getDecoder().decode(encodedJson); 26 | String decodedJson = new String(decodedJsonByteArray); 27 | try { 28 | if (decodeInterior) { 29 | decodedJson = channelConfigDeserialization.deserializeValueFields(decodedJson); 30 | } 31 | if (prettyPrint) { 32 | JSONParser parser = new JSONParser(); 33 | JSONObject json = (JSONObject) parser.parse(decodedJson); 34 | return new ResponseEntity<>( 35 | new ClientResponseModel(ErrorConstants.NO_ERROR, json), HttpStatus.OK); 36 | } 37 | return new ResponseEntity<>( 38 | new ClientResponseModel(ErrorConstants.NO_ERROR, decodedJson), HttpStatus.OK); 39 | } catch (Exception e) { 40 | log.warn("Json Deserialization Failed"); 41 | throw new ServiceException( 42 | ErrorCode.DESERIALIZATION_FAILURE, "Json Deserialization Failed", e); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %d{yyyy-MM-dd | HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/.env: -------------------------------------------------------------------------------- 1 | #default env. vars settings 2 | #TLS: 3 | #ORG_HYPERLEDGER_FABRIC_SDKTEST_INTEGRATIONTESTS_TLS=true 4 | #ORG_HYPERLEDGER_FABRIC_SDKTEST_INTEGRATIONTESTS_CA_TLS=--tls.enabled 5 | ORG_HYPERLEDGER_FABRIC_SDKTEST_INTEGRATIONTESTS_TLS=false 6 | ORG_HYPERLEDGER_FABRIC_SDKTEST_INTEGRATIONTESTS_CA_TLS= 7 | ORG_HYPERLEDGER_FABRIC_SDKTEST_INTEGRATIONTESTS_CLIENT_AUTH_REQUIRED=false 8 | # 9 | #Image tags - Fabric versions. 10 | 11 | ##V 2.1 12 | FAB_CONFIG_GEN_VERS=v2.1 13 | V11_IDENTITIES_ALLOWREMOVE=--cfg.identities.allowremove 14 | V11_AFFILIATIONS_ALLOWREMOVE=--cfg.affiliations.allowremove 15 | IMAGE_TAG_FABRIC=:2.1 16 | IMAGE_TAG_FABRIC_CA=:1.4 17 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/ca/19b5153790854dae850a0f941570fc3c569b878723933ad5a9c319d293f2d492_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg+qHEmY7XuQRVMcGs 3 | b8AM0J6spdV9pBk8FZb28M/FkvChRANCAASPcIGW5kzH9cA4LU+qNeofAPWpzZNp 4 | RJOs0ok058qxczQ8wyg+Q3F5m6TOW+KmV21Tz59dUsCBp3Ol2L6Ob6g/ 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICLjCCAdWgAwIBAgIQA7Edgx6GV/aPDOHR6YQUDTAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTE4MDIyNTEyNDMyOVoXDTI4MDIyMzEyNDMyOVowaTELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv 8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABI9wgZbmTMf1wDgtT6o16h8A9anN 9 | k2lEk6zSiTTnyrFzNDzDKD5DcXmbpM5b4qZXbVPPn11SwIGnc6XYvo5vqD+jXzBd 10 | MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB 11 | Af8wKQYDVR0OBCIEIBm1FTeQhU2uhQoPlBVw/DxWm4eHI5M61anDGdKT8tSSMAoG 12 | CCqGSM49BAMCA0cAMEQCIGrydKuzLP7/IC3Z+rk6VEZDzaf3eP+j3uJ8wLPlb3bo 13 | AiBQRx26UGSjoAb8cKi8lSwIWpHF5tKwmUMuUvvd4lFa1g== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/msp/admincerts/Admin@example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCjCCAbGgAwIBAgIRANozuXGOLYtQQSSKSzJsjpEwCgYIKoZIzj0EAwIwaTEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt 5 | cGxlLmNvbTAeFw0xODAyMjUxMjQzMzBaFw0yODAyMjMxMjQzMzBaMFYxCzAJBgNV 6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp 7 | c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABDoeTQ0Oo4M50oJQibVqpWAkdOXF3flmQjBD2aemB2jVXHacjJGJ 9 | khUIjzsHgsRv9FSqITtH2xE/Tvq7Khe6ifSjTTBLMA4GA1UdDwEB/wQEAwIHgDAM 10 | BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIBm1FTeQhU2uhQoPlBVw/DxWm4eHI5M6 11 | 1anDGdKT8tSSMAoGCCqGSM49BAMCA0cAMEQCIDaxA0FeAom7yDl42F5MEHc7IGHV 12 | PU6a15Cij4hJq+BOAiAHK7+XgPSmSGvL3nMYdRSPxD1BDrIEyH5ShWjRKtvB8w== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICLjCCAdWgAwIBAgIQA7Edgx6GV/aPDOHR6YQUDTAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTE4MDIyNTEyNDMyOVoXDTI4MDIyMzEyNDMyOVowaTELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv 8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABI9wgZbmTMf1wDgtT6o16h8A9anN 9 | k2lEk6zSiTTnyrFzNDzDKD5DcXmbpM5b4qZXbVPPn11SwIGnc6XYvo5vqD+jXzBd 10 | MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB 11 | Af8wKQYDVR0OBCIEIBm1FTeQhU2uhQoPlBVw/DxWm4eHI5M61anDGdKT8tSSMAoG 12 | CCqGSM49BAMCA0cAMEQCIGrydKuzLP7/IC3Z+rk6VEZDzaf3eP+j3uJ8wLPlb3bo 13 | AiBQRx26UGSjoAb8cKi8lSwIWpHF5tKwmUMuUvvd4lFa1g== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNjCCAdygAwIBAgIRALBAjQY2Wfpwz6/bqKvkeAowCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjlaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/LJmaZdt0jZMgTfsQ 9 | vLkJTCDG4m8lNdtQI5VoCpKKSxMlFKUPU54ofttW2Vn76hm7/eK+Lq09LRgJheo1 10 | 6y47o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCDadvMVYJ3hG7FgDW7vlVW20s0L8mVUn/ggI2l0 12 | 1ntSRTAKBggqhkjOPQQDAgNIADBFAiEAvX5+F+QnNPKX/Q/kFmkzOdRovEtgIylG 13 | EArBHBpaqpkCIDNzXoW//ROIslbKToWexg/kwAH1HMhkm9doTyaDxc4k 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/admincerts/Admin@example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCjCCAbGgAwIBAgIRANozuXGOLYtQQSSKSzJsjpEwCgYIKoZIzj0EAwIwaTEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt 5 | cGxlLmNvbTAeFw0xODAyMjUxMjQzMzBaFw0yODAyMjMxMjQzMzBaMFYxCzAJBgNV 6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp 7 | c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABDoeTQ0Oo4M50oJQibVqpWAkdOXF3flmQjBD2aemB2jVXHacjJGJ 9 | khUIjzsHgsRv9FSqITtH2xE/Tvq7Khe6ifSjTTBLMA4GA1UdDwEB/wQEAwIHgDAM 10 | BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIBm1FTeQhU2uhQoPlBVw/DxWm4eHI5M6 11 | 1anDGdKT8tSSMAoGCCqGSM49BAMCA0cAMEQCIDaxA0FeAom7yDl42F5MEHc7IGHV 12 | PU6a15Cij4hJq+BOAiAHK7+XgPSmSGvL3nMYdRSPxD1BDrIEyH5ShWjRKtvB8w== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICLjCCAdWgAwIBAgIQA7Edgx6GV/aPDOHR6YQUDTAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTE4MDIyNTEyNDMyOVoXDTI4MDIyMzEyNDMyOVowaTELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv 8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABI9wgZbmTMf1wDgtT6o16h8A9anN 9 | k2lEk6zSiTTnyrFzNDzDKD5DcXmbpM5b4qZXbVPPn11SwIGnc6XYvo5vqD+jXzBd 10 | MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB 11 | Af8wKQYDVR0OBCIEIBm1FTeQhU2uhQoPlBVw/DxWm4eHI5M61anDGdKT8tSSMAoG 12 | CCqGSM49BAMCA0cAMEQCIGrydKuzLP7/IC3Z+rk6VEZDzaf3eP+j3uJ8wLPlb3bo 13 | AiBQRx26UGSjoAb8cKi8lSwIWpHF5tKwmUMuUvvd4lFa1g== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/keystore/2033c8300dd5950d3fff13657d205cb7ef69e97758b70c12c5086205b69e88ac_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgKgjdakYKClGvuBTE 3 | j90kkwTNxziI9IU3D39Xicy/NRmhRANCAARQfP/qUmnEcXIlE5PlkR4RCMn2XykM 4 | sPFZN0k1XfpkSA4KP0nCALUgiITKLsOQohYA7oDaFQD/ZhaRswgwEgmN 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts/orderer.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCzCCAbKgAwIBAgIQUcfZvWT8UgJJ30cDzW15bDAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTE4MDIyNTEyNDMyOVoXDTI4MDIyMzEyNDMyOVowWDELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xHDAaBgNVBAMTE29yZGVyZXIuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAARQfP/qUmnEcXIlE5PlkR4RCMn2XykMsPFZN0k1XfpkSA4KP0nC 9 | ALUgiITKLsOQohYA7oDaFQD/ZhaRswgwEgmNo00wSzAOBgNVHQ8BAf8EBAMCB4Aw 10 | DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCAZtRU3kIVNroUKD5QVcPw8VpuHhyOT 11 | OtWpwxnSk/LUkjAKBggqhkjOPQQDAgNHADBEAiApAQ0e/qdVsd5qtXGHqYKRt30Y 12 | LPaGPmy8wbX8+/KDhwIgXtt1TL97Z0rfq7iKXzXLRNk8jNntsrmRFoLVstXr3dA= 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNjCCAdygAwIBAgIRALBAjQY2Wfpwz6/bqKvkeAowCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjlaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/LJmaZdt0jZMgTfsQ 9 | vLkJTCDG4m8lNdtQI5VoCpKKSxMlFKUPU54ofttW2Vn76hm7/eK+Lq09LRgJheo1 10 | 6y47o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCDadvMVYJ3hG7FgDW7vlVW20s0L8mVUn/ggI2l0 12 | 1ntSRTAKBggqhkjOPQQDAgNIADBFAiEAvX5+F+QnNPKX/Q/kFmkzOdRovEtgIylG 13 | EArBHBpaqpkCIDNzXoW//ROIslbKToWexg/kwAH1HMhkm9doTyaDxc4k 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNjCCAdygAwIBAgIRALBAjQY2Wfpwz6/bqKvkeAowCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjlaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/LJmaZdt0jZMgTfsQ 9 | vLkJTCDG4m8lNdtQI5VoCpKKSxMlFKUPU54ofttW2Vn76hm7/eK+Lq09LRgJheo1 10 | 6y47o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCDadvMVYJ3hG7FgDW7vlVW20s0L8mVUn/ggI2l0 12 | 1ntSRTAKBggqhkjOPQQDAgNIADBFAiEAvX5+F+QnNPKX/Q/kFmkzOdRovEtgIylG 13 | EArBHBpaqpkCIDNzXoW//ROIslbKToWexg/kwAH1HMhkm9doTyaDxc4k 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICWDCCAf+gAwIBAgIQEoFXZgR6Uf98aXa8vCz/+TAKBggqhkjOPQQDAjBsMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 5 | YW1wbGUuY29tMB4XDTE4MDIyNTEyNDMyOVoXDTI4MDIyMzEyNDMyOVowWDELMAkG 6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu 7 | Y2lzY28xHDAaBgNVBAMTE29yZGVyZXIuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIB 8 | BggqhkjOPQMBBwNCAARGfQx30I/dAcatxE5Ey/gIdySpWQTy7hJqw8FOTHhKFx6/ 9 | Z+cUTF/TVsKC45EXxwcmFhvF7RKWdxVgyK7OYo2ho4GWMIGTMA4GA1UdDwEB/wQE 10 | AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw 11 | ADArBgNVHSMEJDAigCDadvMVYJ3hG7FgDW7vlVW20s0L8mVUn/ggI2l01ntSRTAn 12 | BgNVHREEIDAeghNvcmRlcmVyLmV4YW1wbGUuY29tggdvcmRlcmVyMAoGCCqGSM49 13 | BAMCA0cAMEQCIEQ0rBt+tUCusMauftesbFj0Lwj8CICpO7RItGTwna7IAiAwm9F8 14 | g57CKJs8blVD3fqxC+XOMJnpL0/3H3tp3UO3Lw== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgkHOHT4FwJzq3zkdE 3 | B8oY/IQF1+XRMX9XUFndIraWcZ+hRANCAARGfQx30I/dAcatxE5Ey/gIdySpWQTy 4 | 7hJqw8FOTHhKFx6/Z+cUTF/TVsKC45EXxwcmFhvF7RKWdxVgyK7OYo2h 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/tlsca/da76f315609de11bb1600d6eef9555b6d2cd0bf265549ff820236974d67b5245_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgCD+hNwuA/p5PUc/p 3 | 8yHLkULik77W5RVTLu6mFNy+7sqhRANCAAR/LJmaZdt0jZMgTfsQvLkJTCDG4m8l 4 | NdtQI5VoCpKKSxMlFKUPU54ofttW2Vn76hm7/eK+Lq09LRgJheo16y47 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNjCCAdygAwIBAgIRALBAjQY2Wfpwz6/bqKvkeAowCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjlaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/LJmaZdt0jZMgTfsQ 9 | vLkJTCDG4m8lNdtQI5VoCpKKSxMlFKUPU54ofttW2Vn76hm7/eK+Lq09LRgJheo1 10 | 6y47o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCDadvMVYJ3hG7FgDW7vlVW20s0L8mVUn/ggI2l0 12 | 1ntSRTAKBggqhkjOPQQDAgNIADBFAiEAvX5+F+QnNPKX/Q/kFmkzOdRovEtgIylG 13 | EArBHBpaqpkCIDNzXoW//ROIslbKToWexg/kwAH1HMhkm9doTyaDxc4k 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/admincerts/Admin@example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCjCCAbGgAwIBAgIRANozuXGOLYtQQSSKSzJsjpEwCgYIKoZIzj0EAwIwaTEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt 5 | cGxlLmNvbTAeFw0xODAyMjUxMjQzMzBaFw0yODAyMjMxMjQzMzBaMFYxCzAJBgNV 6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp 7 | c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABDoeTQ0Oo4M50oJQibVqpWAkdOXF3flmQjBD2aemB2jVXHacjJGJ 9 | khUIjzsHgsRv9FSqITtH2xE/Tvq7Khe6ifSjTTBLMA4GA1UdDwEB/wQEAwIHgDAM 10 | BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIBm1FTeQhU2uhQoPlBVw/DxWm4eHI5M6 11 | 1anDGdKT8tSSMAoGCCqGSM49BAMCA0cAMEQCIDaxA0FeAom7yDl42F5MEHc7IGHV 12 | PU6a15Cij4hJq+BOAiAHK7+XgPSmSGvL3nMYdRSPxD1BDrIEyH5ShWjRKtvB8w== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICLjCCAdWgAwIBAgIQA7Edgx6GV/aPDOHR6YQUDTAKBggqhkjOPQQDAjBpMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w 5 | bGUuY29tMB4XDTE4MDIyNTEyNDMyOVoXDTI4MDIyMzEyNDMyOVowaTELMAkGA1UE 6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz 7 | Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv 8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABI9wgZbmTMf1wDgtT6o16h8A9anN 9 | k2lEk6zSiTTnyrFzNDzDKD5DcXmbpM5b4qZXbVPPn11SwIGnc6XYvo5vqD+jXzBd 10 | MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB 11 | Af8wKQYDVR0OBCIEIBm1FTeQhU2uhQoPlBVw/DxWm4eHI5M61anDGdKT8tSSMAoG 12 | CCqGSM49BAMCA0cAMEQCIGrydKuzLP7/IC3Z+rk6VEZDzaf3eP+j3uJ8wLPlb3bo 13 | AiBQRx26UGSjoAb8cKi8lSwIWpHF5tKwmUMuUvvd4lFa1g== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/fc6dea208b6c9bb150c6e9a809fd6a5dcc6b5ce4a6481b025557ef4a6e3ecf44_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgJCUOS5YydUDCykHG 3 | uAHptdOC8S/+s5jJoo+uHA45AXChRANCAAQ6Hk0NDqODOdKCUIm1aqVgJHTlxd35 4 | ZkIwQ9mnpgdo1Vx2nIyRiZIVCI87B4LEb/RUqiE7R9sRP076uyoXuon0 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICCjCCAbGgAwIBAgIRANozuXGOLYtQQSSKSzJsjpEwCgYIKoZIzj0EAwIwaTEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt 5 | cGxlLmNvbTAeFw0xODAyMjUxMjQzMzBaFw0yODAyMjMxMjQzMzBaMFYxCzAJBgNV 6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp 7 | c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABDoeTQ0Oo4M50oJQibVqpWAkdOXF3flmQjBD2aemB2jVXHacjJGJ 9 | khUIjzsHgsRv9FSqITtH2xE/Tvq7Khe6ifSjTTBLMA4GA1UdDwEB/wQEAwIHgDAM 10 | BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIBm1FTeQhU2uhQoPlBVw/DxWm4eHI5M6 11 | 1anDGdKT8tSSMAoGCCqGSM49BAMCA0cAMEQCIDaxA0FeAom7yDl42F5MEHc7IGHV 12 | PU6a15Cij4hJq+BOAiAHK7+XgPSmSGvL3nMYdRSPxD1BDrIEyH5ShWjRKtvB8w== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNjCCAdygAwIBAgIRALBAjQY2Wfpwz6/bqKvkeAowCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjlaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/LJmaZdt0jZMgTfsQ 9 | vLkJTCDG4m8lNdtQI5VoCpKKSxMlFKUPU54ofttW2Vn76hm7/eK+Lq09LRgJheo1 10 | 6y47o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCDadvMVYJ3hG7FgDW7vlVW20s0L8mVUn/ggI2l0 12 | 1ntSRTAKBggqhkjOPQQDAgNIADBFAiEAvX5+F+QnNPKX/Q/kFmkzOdRovEtgIylG 13 | EArBHBpaqpkCIDNzXoW//ROIslbKToWexg/kwAH1HMhkm9doTyaDxc4k 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICNjCCAdygAwIBAgIRALBAjQY2Wfpwz6/bqKvkeAowCgYIKoZIzj0EAwIwbDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l 5 | eGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjlaMGwxCzAJ 6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh 7 | bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh 8 | bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/LJmaZdt0jZMgTfsQ 9 | vLkJTCDG4m8lNdtQI5VoCpKKSxMlFKUPU54ofttW2Vn76hm7/eK+Lq09LRgJheo1 10 | 6y47o18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB 11 | Af8EBTADAQH/MCkGA1UdDgQiBCDadvMVYJ3hG7FgDW7vlVW20s0L8mVUn/ggI2l0 12 | 1ntSRTAKBggqhkjOPQQDAgNIADBFAiEAvX5+F+QnNPKX/Q/kFmkzOdRovEtgIylG 13 | EArBHBpaqpkCIDNzXoW//ROIslbKToWexg/kwAH1HMhkm9doTyaDxc4k 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICLDCCAdKgAwIBAgIQQB/Q27zvV3HdmgTddbiGSDAKBggqhkjOPQQDAjBsMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 5 | YW1wbGUuY29tMB4XDTE4MDIyNTEyNDMzMFoXDTI4MDIyMzEyNDMzMFowVjELMAkG 6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu 7 | Y2lzY28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI 8 | KoZIzj0DAQcDQgAEDyHyDf7GK1HvmZLXoRYmlF9eOiLHXVY9/MDFXuhxncFSA836 9 | RKH6uecjIYgCnJnYQ/jiOS8/r0upvSpQLeL9hKNsMGowDgYDVR0PAQH/BAQDAgWg 10 | MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCsG 11 | A1UdIwQkMCKAINp28xVgneEbsWANbu+VVbbSzQvyZVSf+CAjaXTWe1JFMAoGCCqG 12 | SM49BAMCA0gAMEUCIQDjzYv5ThB7Bw92F3cAG//LOTEFxc5tq8xIsBLNDX/7bAIg 13 | T5A4E/wVTJQB16Y2pqYpWs3AOjy2SeLAxDC0mGtpk5I= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgAUQFRr3xtGi8hiuJ 3 | 84VuZaxOz05mU2tcJVfVALQZYwahRANCAAQPIfIN/sYrUe+ZktehFiaUX146Isdd 4 | Vj38wMVe6HGdwVIDzfpEofq55yMhiAKcmdhD+OI5Lz+vS6m9KlAt4v2E 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQzCCAeqgAwIBAgIRAM/vaDvPsyIiC9hvn5nnR8AwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE 8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA 9 | BLqI9dX7d9NGo3guL5FP8otGsiBjN7Bzd6dG/CayJDfjNRG34YO8t299u6EoFXvz 10 | pcjAMGu0UKTrzMfcyOuzcMyjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG 11 | BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILHMNMPy0M+AeGj6OhoR 12 | h00gQTCEX9jus20uWUTXdnccMAoGCCqGSM49BAMCA0cAMEQCIF7Wl3A11zENr1Co 13 | qGyu3h4fCukktFVyG/WPJUylVXjIAiB9LjpXm9ERgJMfZsjDIzCj9M4aQuVN9XLk 14 | Xnx0uoKz7g== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/ca/fcf776b02a05600408d0be9d9752afc59f64950b721cacb363b5b95a0fea6216_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgr1xJRvvqH13IM5kC 3 | rf8dUp5HUt5LMPQt5PPRUj4NODuhRANCAAS6iPXV+3fTRqN4Li+RT/KLRrIgYzew 4 | c3enRvwmsiQ34zURt+GDvLdvfbuhKBV786XIwDBrtFCk68zH3Mjrs3DM 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQCTkaQxdPH5en+xQc80ZfTTAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXd2NGbWqiK4nyPdqTb5BZYA9q0mpzv2 9 | Aq6jM5CRadTsmWRDkZKzboaPolBTSkZ4F71TmBM0QAux31pojMmq/6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4 11 | aPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDRwAwRAIgEMqmOlsM 12 | PED00efu1YJzssn1KfPaln7wd5WMJFxTV9QCIHWjDY7WsNJRAxHTOeNsKpGzDR+8 13 | SQSHwVS1grlwr2IF 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQzCCAeqgAwIBAgIRAM/vaDvPsyIiC9hvn5nnR8AwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE 8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA 9 | BLqI9dX7d9NGo3guL5FP8otGsiBjN7Bzd6dG/CayJDfjNRG34YO8t299u6EoFXvz 10 | pcjAMGu0UKTrzMfcyOuzcMyjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG 11 | BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILHMNMPy0M+AeGj6OhoR 12 | h00gQTCEX9jus20uWUTXdnccMAoGCCqGSM49BAMCA0cAMEQCIF7Wl3A11zENr1Co 13 | qGyu3h4fCukktFVyG/WPJUylVXjIAiB9LjpXm9ERgJMfZsjDIzCj9M4aQuVN9XLk 14 | Xnx0uoKz7g== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQCTkaQxdPH5en+xQc80ZfTTAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXd2NGbWqiK4nyPdqTb5BZYA9q0mpzv2 9 | Aq6jM5CRadTsmWRDkZKzboaPolBTSkZ4F71TmBM0QAux31pojMmq/6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4 11 | aPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDRwAwRAIgEMqmOlsM 12 | PED00efu1YJzssn1KfPaln7wd5WMJFxTV9QCIHWjDY7WsNJRAxHTOeNsKpGzDR+8 13 | SQSHwVS1grlwr2IF 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQzCCAeqgAwIBAgIRAM/vaDvPsyIiC9hvn5nnR8AwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE 8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA 9 | BLqI9dX7d9NGo3guL5FP8otGsiBjN7Bzd6dG/CayJDfjNRG34YO8t299u6EoFXvz 10 | pcjAMGu0UKTrzMfcyOuzcMyjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG 11 | BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILHMNMPy0M+AeGj6OhoR 12 | h00gQTCEX9jus20uWUTXdnccMAoGCCqGSM49BAMCA0cAMEQCIF7Wl3A11zENr1Co 13 | qGyu3h4fCukktFVyG/WPJUylVXjIAiB9LjpXm9ERgJMfZsjDIzCj9M4aQuVN9XLk 14 | Xnx0uoKz7g== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/a1993072d65632fab2be261fa0d41218badd164eda336545366fc1ea9558161a_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgDZW8sacCC5Tj4EDa 3 | +cO7Gj8R6xCwXxMz696o1mlFXd6hRANCAAS6FMmwSVXAd1nuFnLAWNjJxjy22P6x 4 | hommYDfmk6H0NYchLF84HZifDDEd9vBor0hweKMKA1qaJ5HRmRQCXeoU 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGTCCAb+gAwIBAgIQSeDyNLVb/3oNe+jV7hL4BjAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuhTJsElVwHdZ7hZywFjYycY8ttj+sYaJ 9 | pmA35pOh9DWHISxfOB2YnwwxHfbwaK9IcHijCgNamieR0ZkUAl3qFKNNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4 11 | aPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDSAAwRQIhANgiqxwH 12 | jcMjvh/dIyP/Tp9Ta9bdXjVuG/6RcsUcyLVuAiAwY3Nf0STZYb04GqkF5wz1LCwO 13 | 2Jv23njFokdw52Av3Q== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICZjCCAg2gAwIBAgIQT5LDpIbEhZ93KRfuBzhsPDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29t 8 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+br01bZtM+KZswLnXiZK0f3bfSqt 9 | 8+NnJc71NGx+VsUeU38jNl282Uo7A0PNKMQpr10BXomDl3jsTMK8E0aT16OBlzCB 10 | lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC 11 | MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgEkNmPHedLauZvdBejAlBvo4xhOWp 12 | 2+VxGreyMCZtcicwKAYDVR0RBCEwH4IWcGVlcjAub3JnMS5leGFtcGxlLmNvbYIF 13 | cGVlcjAwCgYIKoZIzj0EAwIDRwAwRAIgdwC/WQ6wRHlTygTJJ8SiAoMrbDpTePhx 14 | Z2GEIu5RtMwCIBuJ8LTJnFZNivBbTFU/65lhCLpVj5R3j5KuaJ+dovF5 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgU5XBkyixcK39vXnj 3 | dBduk5jEjog3zpWU6JhIv5B5WLGhRANCAAT5uvTVtm0z4pmzAudeJkrR/dt9Kq3z 4 | 42clzvU0bH5WxR5TfyM2XbzZSjsDQ80oxCmvXQFeiYOXeOxMwrwTRpPX 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQCTkaQxdPH5en+xQc80ZfTTAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXd2NGbWqiK4nyPdqTb5BZYA9q0mpzv2 9 | Aq6jM5CRadTsmWRDkZKzboaPolBTSkZ4F71TmBM0QAux31pojMmq/6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4 11 | aPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDRwAwRAIgEMqmOlsM 12 | PED00efu1YJzssn1KfPaln7wd5WMJFxTV9QCIHWjDY7WsNJRAxHTOeNsKpGzDR+8 13 | SQSHwVS1grlwr2IF 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQzCCAeqgAwIBAgIRAM/vaDvPsyIiC9hvn5nnR8AwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE 8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA 9 | BLqI9dX7d9NGo3guL5FP8otGsiBjN7Bzd6dG/CayJDfjNRG34YO8t299u6EoFXvz 10 | pcjAMGu0UKTrzMfcyOuzcMyjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG 11 | BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILHMNMPy0M+AeGj6OhoR 12 | h00gQTCEX9jus20uWUTXdnccMAoGCCqGSM49BAMCA0cAMEQCIF7Wl3A11zENr1Co 13 | qGyu3h4fCukktFVyG/WPJUylVXjIAiB9LjpXm9ERgJMfZsjDIzCj9M4aQuVN9XLk 14 | Xnx0uoKz7g== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/d10285162f81bfd66b1acdf631cccf7ac2cbcab3673a9c27ec9ed7fce1ea4803_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg3e+vDZnr+zvaGcZq 3 | pJ9Dfiyi0wDLH5v44wOAcjI3KTShRANCAASrYYwsv0r6X9M5gw+OQ+79FJ5/m3Uk 4 | C10HzT/LJ/twRwgx+WU/iYC2NFe3L31Wh+YsI3jvBwkoG8HHWg4PmfhJ 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/signcerts/peer1.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGTCCAcCgAwIBAgIRALZOlQWnY/I+JK9aFd3YQYMwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMS5leGFtcGxlLmNvbTBZ 8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABKthjCy/Svpf0zmDD45D7v0Unn+bdSQL 9 | XQfNP8sn+3BHCDH5ZT+JgLY0V7cvfVaH5iwjeO8HCSgbwcdaDg+Z+EmjTTBLMA4G 10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAILHMNMPy0M+A 11 | eGj6OhoRh00gQTCEX9jus20uWUTXdnccMAoGCCqGSM49BAMCA0cAMEQCIDlKy3Jm 12 | qG+iFvVQbOAc6ZUuvs3vgDaPmraMX7Yev1hhAiA8o4Ot8Y7fifQM+nnoMFrD19no 13 | Jpy8es25T/qKsUmKjw== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICZzCCAg2gAwIBAgIQTsjboZMtLR0ZpepWlz6A0jAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcxLmV4YW1wbGUuY29t 8 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+m1ydGyZEXX1xC4hViMDeHIbpVae 9 | PZIrvJNsmE3X7qLWkIVcG2slQLXMBcM9fzWcy7eYc2ubZl26JFMJ0Oe0AaOBlzCB 10 | lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC 11 | MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgEkNmPHedLauZvdBejAlBvo4xhOWp 12 | 2+VxGreyMCZtcicwKAYDVR0RBCEwH4IWcGVlcjEub3JnMS5leGFtcGxlLmNvbYIF 13 | cGVlcjEwCgYIKoZIzj0EAwIDSAAwRQIhAJ1QixXF/H9l3nn29BnHQn0T9PCo4JMD 14 | GEWbPvKzZ3J+AiBayXQNn8xUSkq6Vv5gfYP7VEAQiEVqWLXtfYpv7rkxQQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1GpcOzQvyrQBsvzk 3 | qzWrNW/J7ZmJnjrCBvrigiY40rKhRANCAAT6bXJ0bJkRdfXELiFWIwN4chulVp49 4 | kiu8k2yYTdfuotaQhVwbayVAtcwFwz1/NZzLt5hza5tmXbokUwnQ57QB 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/tlsca/1243663c779d2dab99bdd05e8c0941be8e3184e5a9dbe5711ab7b230266d7227_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgJPpj4xP8sP535MnK 3 | H/naZVK5DbDzDPXRwYQ7YLDvioChRANCAATSTpBPSWash0k52YWz6xwyLlOHYndV 4 | 4DcSa+HASfFSOT8fP7b7HPg+wI+3y/JW0C/0Y2dpsy2COFAoAh6moQH0 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQCTkaQxdPH5en+xQc80ZfTTAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXd2NGbWqiK4nyPdqTb5BZYA9q0mpzv2 9 | Aq6jM5CRadTsmWRDkZKzboaPolBTSkZ4F71TmBM0QAux31pojMmq/6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4 11 | aPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDRwAwRAIgEMqmOlsM 12 | PED00efu1YJzssn1KfPaln7wd5WMJFxTV9QCIHWjDY7WsNJRAxHTOeNsKpGzDR+8 13 | SQSHwVS1grlwr2IF 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQzCCAeqgAwIBAgIRAM/vaDvPsyIiC9hvn5nnR8AwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE 8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA 9 | BLqI9dX7d9NGo3guL5FP8otGsiBjN7Bzd6dG/CayJDfjNRG34YO8t299u6EoFXvz 10 | pcjAMGu0UKTrzMfcyOuzcMyjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG 11 | BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILHMNMPy0M+AeGj6OhoR 12 | h00gQTCEX9jus20uWUTXdnccMAoGCCqGSM49BAMCA0cAMEQCIF7Wl3A11zENr1Co 13 | qGyu3h4fCukktFVyG/WPJUylVXjIAiB9LjpXm9ERgJMfZsjDIzCj9M4aQuVN9XLk 14 | Xnx0uoKz7g== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/581fa072e48dc2a516f664df94ea687447c071f89fc0b783b147956a08929dcc_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgpANnM2zJ/oz7c31B 3 | ahODy1OSvibxUHpQ/1xiUleYvH+hRANCAAS1d3Y0ZtaqIrifI92pNvkFlgD2rSan 4 | O/YCrqMzkJFp1OyZZEORkrNuho+iUFNKRngXvVOYEzRAC7HfWmiMyar/ 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQCTkaQxdPH5en+xQc80ZfTTAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXd2NGbWqiK4nyPdqTb5BZYA9q0mpzv2 9 | Aq6jM5CRadTsmWRDkZKzboaPolBTSkZ4F71TmBM0QAux31pojMmq/6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4 11 | aPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDRwAwRAIgEMqmOlsM 12 | PED00efu1YJzssn1KfPaln7wd5WMJFxTV9QCIHWjDY7WsNJRAxHTOeNsKpGzDR+8 13 | SQSHwVS1grlwr2IF 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICOzCCAeKgAwIBAgIRANdqRtQ4BSl3O6sg5VeYxUkwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNv 8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOfoHrkSSoVxdU27Ze8cJFTfs/Gh 9 | 0qj2kHAraNi/dHygZqSCQoXAL7Ynv9VB0koqy1SnuHXPsxXmjO9gBVBHyLajbDBq 10 | MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw 11 | DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCASQ2Y8d50tq5m90F6MCUG+jjGE5anb 12 | 5XEat7IwJm1yJzAKBggqhkjOPQQDAgNHADBEAiAKydl2QDdJMz5BTRG16enduyDA 13 | VyY+BozDhuC5mMoFUwIgeOxgp0xSS05xdpj1Zh9JJRDiYPbiRNf5/52vBaohYbQ= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg7WgTs8H5ItZS1RuP 3 | 1E8d5bCCcXXF8ThB7/e7/gfXrgyhRANCAATn6B65EkqFcXVNu2XvHCRU37PxodKo 4 | 9pBwK2jYv3R8oGakgkKFwC+2J7/VQdJKKstUp7h1z7MV5ozvYAVQR8i2 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/admincerts/User1@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGTCCAb+gAwIBAgIQasN+oEYEWpzdwd5/XOoVNzAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2A2AbNszJAGlxFu5KMOvCVkuJrH//iw/ 9 | kbkgBsnG6wZCYuGlNAkSK9BZPTV/qxTLnZqNIN8uvg6eO3zYrhIvE6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4 11 | aPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDSAAwRQIhAPYzdEPT 12 | ek748A82YB4I6CC5K28k9IXjh0Ny4Z3UmiYEAiBLqwWDlJQMFoY7TOtrIHLMEpHz 13 | 8mclDuUg7Gtp1ktHgg== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQzCCAeqgAwIBAgIRAM/vaDvPsyIiC9hvn5nnR8AwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE 8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA 9 | BLqI9dX7d9NGo3guL5FP8otGsiBjN7Bzd6dG/CayJDfjNRG34YO8t299u6EoFXvz 10 | pcjAMGu0UKTrzMfcyOuzcMyjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG 11 | BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILHMNMPy0M+AeGj6OhoR 12 | h00gQTCEX9jus20uWUTXdnccMAoGCCqGSM49BAMCA0cAMEQCIF7Wl3A11zENr1Co 13 | qGyu3h4fCukktFVyG/WPJUylVXjIAiB9LjpXm9ERgJMfZsjDIzCj9M4aQuVN9XLk 14 | Xnx0uoKz7g== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/f84683030531deda35a8bcd1260c21f05b33c110be8e69943eba6a8db79c5292_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9q05wVgS9yaWAFk1 3 | E9ANck6YYlgmIM//Blv+6pM/u1ahRANCAATYDYBs2zMkAaXEW7kow68JWS4msf/+ 4 | LD+RuSAGycbrBkJi4aU0CRIr0Fk9NX+rFMudmo0g3y6+Dp47fNiuEi8T 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGTCCAb+gAwIBAgIQasN+oEYEWpzdwd5/XOoVNzAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcxLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2A2AbNszJAGlxFu5KMOvCVkuJrH//iw/ 9 | kbkgBsnG6wZCYuGlNAkSK9BZPTV/qxTLnZqNIN8uvg6eO3zYrhIvE6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4 11 | aPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDSAAwRQIhAPYzdEPT 12 | ek748A82YB4I6CC5K28k9IXjh0Ny4Z3UmiYEAiBLqwWDlJQMFoY7TOtrIHLMEpHz 13 | 8mclDuUg7Gtp1ktHgg== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAe+gAwIBAgIQQeN5VPrLlibQPtNOQthnbDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD 8 | VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D 9 | AQcDQgAE0k6QT0lmrIdJOdmFs+scMi5Th2J3VeA3EmvhwEnxUjk/Hz+2+xz4PsCP 10 | t8vyVtAv9GNnabMtgjhQKAIepqEB9KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud 11 | JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEkNmPHedLauZ 12 | vdBejAlBvo4xhOWp2+VxGreyMCZtcicwCgYIKoZIzj0EAwIDSAAwRQIhAKwetr9p 13 | Is+JTNel553pX5pi5ecfl+LPyvB/zWB23AGzAiAWj8egI/bieJCzFJw1lZvn9WzX 14 | 5p56JI3CN5Xobf4khQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICOzCCAeKgAwIBAgIRANKGy1+DYv1WeB1N32dPIRwwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNv 8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHvBdqZce5Xrovq21GffLn/5iASd 9 | 3Yl9+IzJsu0QiuzBG+M+T3XktgNVOuuqzfLiEWksMcYXRgN8dvhlmGPCyDyjbDBq 10 | MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw 11 | DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCASQ2Y8d50tq5m90F6MCUG+jjGE5anb 12 | 5XEat7IwJm1yJzAKBggqhkjOPQQDAgNHADBEAiBK7i2nm1kVc0Idk1oQTRQKH8Ns 13 | 55kBEdUGDN1rkGmtnQIgX15PbCGpfik83zYOYlNIDIM1ivAEQLX9A2dlpVxdkDQ= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1r0qIz6WRc5qWCW0 3 | d7nvoT0GB06hhiLL+n+ZihybNb6hRANCAAR7wXamXHuV66L6ttRn3y5/+YgEnd2J 4 | ffiMybLtEIrswRvjPk915LYDVTrrqs3y4hFpLDHGF0YDfHb4ZZhjwsg8 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/ca/b59bba37975dafcc4a93984aa01d3d29b64894617db9e0c9a2d486b5273cbd27_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiIO19U4lOO2eDfDV 3 | PE7kxj4egOJUfPfrqg93nWNWSB6hRANCAARfvWvmM81Vgv4Ko4fVZldjpu96lDIs 4 | VEQe1Sw65cV+OV6ukbCQ9Uk2KkNlSJ9NFLyKZ+P6zq3HmlEl3LxtYMhV 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQjCCAemgAwIBAgIQA51S5aV8OFKTDEkADa/B4TAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD 8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 9 | X71r5jPNVYL+CqOH1WZXY6bvepQyLFREHtUsOuXFfjlerpGwkPVJNipDZUifTRS8 10 | imfj+s6tx5pRJdy8bWDIVaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG 11 | BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgeyt2U8RRLWzpU144FAY1 12 | 9Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDRwAwRAIgcm/8AFvk79pZzHBu 13 | 7tEzYxpM99AjHnI7lQugayoD+2ACID6sgfNNzEgRm/5iZADeLAPioUiBJUqAIWYq 14 | HKaldZpb 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGjCCAcCgAwIBAgIRAIrZokP5xguxCqWjUeu0jnAwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ 8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGDqXVD4yOX65oU0eY3j5UtD8Gr8n/s+ 9 | eODjPP76wNeBoSqljQYM+D953dBtzZ87udrwQ2uvcpUI1R1mHTMuNmSjTTBLMA4G 10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIHsrdlPEUS1s 11 | 6VNeOBQGNfU5vYoTC+VKyU9+Ext1oPI+MAoGCCqGSM49BAMCA0gAMEUCIQCojuxd 12 | EqSDDDUUJstAmAqU65xkd1/Yf0BVpLdCe++WigIgLWC9rBPpUa+Yhe3yy00+BlqG 13 | xZ0h2eeiHaMuF6Qawy4= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQjCCAemgAwIBAgIQA51S5aV8OFKTDEkADa/B4TAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD 8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 9 | X71r5jPNVYL+CqOH1WZXY6bvepQyLFREHtUsOuXFfjlerpGwkPVJNipDZUifTRS8 10 | imfj+s6tx5pRJdy8bWDIVaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG 11 | BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgeyt2U8RRLWzpU144FAY1 12 | 9Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDRwAwRAIgcm/8AFvk79pZzHBu 13 | 7tEzYxpM99AjHnI7lQugayoD+2ACID6sgfNNzEgRm/5iZADeLAPioUiBJUqAIWYq 14 | HKaldZpb 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGjCCAcCgAwIBAgIRAIrZokP5xguxCqWjUeu0jnAwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ 8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGDqXVD4yOX65oU0eY3j5UtD8Gr8n/s+ 9 | eODjPP76wNeBoSqljQYM+D953dBtzZ87udrwQ2uvcpUI1R1mHTMuNmSjTTBLMA4G 10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIHsrdlPEUS1s 11 | 6VNeOBQGNfU5vYoTC+VKyU9+Ext1oPI+MAoGCCqGSM49BAMCA0gAMEUCIQCojuxd 12 | EqSDDDUUJstAmAqU65xkd1/Yf0BVpLdCe++WigIgLWC9rBPpUa+Yhe3yy00+BlqG 13 | xZ0h2eeiHaMuF6Qawy4= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQjCCAemgAwIBAgIQA51S5aV8OFKTDEkADa/B4TAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD 8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 9 | X71r5jPNVYL+CqOH1WZXY6bvepQyLFREHtUsOuXFfjlerpGwkPVJNipDZUifTRS8 10 | imfj+s6tx5pRJdy8bWDIVaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG 11 | BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgeyt2U8RRLWzpU144FAY1 12 | 9Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDRwAwRAIgcm/8AFvk79pZzHBu 13 | 7tEzYxpM99AjHnI7lQugayoD+2ACID6sgfNNzEgRm/5iZADeLAPioUiBJUqAIWYq 14 | HKaldZpb 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/5d14548de7149e4c62bcef9f8de62358238101620a7362e826b9af7ff33480ad_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgjnfZ4xXPz6BKKoKI 3 | mYXLxZ9uxUEPe3ZwayQRLtZ0wHGhRANCAARQTN4A1LP+DKfQ8hf7olEJEJNVL6pp 4 | grobgFyYHkwKG/7c77CxhkUu/HbLj1UhlUt6eL7bj4VATFSra57HII3p 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGTCCAcCgAwIBAgIRAKoFq36AGyh9tmw1qzjKp2YwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMi5leGFtcGxlLmNvbTBZ 8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABFBM3gDUs/4Mp9DyF/uiUQkQk1UvqmmC 9 | uhuAXJgeTAob/tzvsLGGRS78dsuPVSGVS3p4vtuPhUBMVKtrnscgjemjTTBLMA4G 10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIHsrdlPEUS1s 11 | 6VNeOBQGNfU5vYoTC+VKyU9+Ext1oPI+MAoGCCqGSM49BAMCA0cAMEQCIDbFc/hr 12 | 0RYfp0e9HqBW+tel9c9VCW7E+C7XO4e7ZYBJAiAVkjEFKpKadLUpA2cK0YHobNRH 13 | zxIaKjL+wLVfr2wTzQ== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICZzCCAg2gAwIBAgIQFR45GJqukf1860Wth7leuDAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcyLmV4YW1wbGUuY29t 8 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEG0jfYL8jEY+r+caurdhOUe59Rsk7 9 | QHqk0ujYhvXtF53iC5y/rLDz3NKjuuni3kYN5TMPZukTPqQC1QX7gV0uQKOBlzCB 10 | lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC 11 | MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgYQjM/AP3znikMgBMNbu0tLT2sDUe 12 | IgpKneOjbSCGikowKAYDVR0RBCEwH4IWcGVlcjAub3JnMi5leGFtcGxlLmNvbYIF 13 | cGVlcjAwCgYIKoZIzj0EAwIDSAAwRQIhAJYCXfTpsx5gAx8C95HV65S8TgXxfwW4 14 | hJq+y6Ud2yfQAiA5D6E7HfQOORvDora/A5hZ9t5IGQmMw3clR/TyYg/4Kw== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgj5m47xhWvmSsjBPh 3 | S1Y2yQ85ekUW05HobtQtznn2W72hRANCAAQbSN9gvyMRj6v5xq6t2E5R7n1GyTtA 4 | eqTS6NiG9e0XneILnL+ssPPc0qO66eLeRg3lMw9m6RM+pALVBfuBXS5A 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGjCCAcCgAwIBAgIRAIrZokP5xguxCqWjUeu0jnAwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ 8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGDqXVD4yOX65oU0eY3j5UtD8Gr8n/s+ 9 | eODjPP76wNeBoSqljQYM+D953dBtzZ87udrwQ2uvcpUI1R1mHTMuNmSjTTBLMA4G 10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIHsrdlPEUS1s 11 | 6VNeOBQGNfU5vYoTC+VKyU9+Ext1oPI+MAoGCCqGSM49BAMCA0gAMEUCIQCojuxd 12 | EqSDDDUUJstAmAqU65xkd1/Yf0BVpLdCe++WigIgLWC9rBPpUa+Yhe3yy00+BlqG 13 | xZ0h2eeiHaMuF6Qawy4= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQjCCAemgAwIBAgIQA51S5aV8OFKTDEkADa/B4TAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD 8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 9 | X71r5jPNVYL+CqOH1WZXY6bvepQyLFREHtUsOuXFfjlerpGwkPVJNipDZUifTRS8 10 | imfj+s6tx5pRJdy8bWDIVaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG 11 | BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgeyt2U8RRLWzpU144FAY1 12 | 9Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDRwAwRAIgcm/8AFvk79pZzHBu 13 | 7tEzYxpM99AjHnI7lQugayoD+2ACID6sgfNNzEgRm/5iZADeLAPioUiBJUqAIWYq 14 | HKaldZpb 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/keystore/2e38502a52ee50337182ba19ccbd0ef566316876b11685db999d59e5118666fb_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgbO0IUfs9aYggJxrJ 3 | UndE5olrRPW6fevvUj16jhhLBUyhRANCAAQg8dIZpdiiSTINPuGO/vFHup2v/i6d 4 | rLjqd7L5/5Jpff/4ZLbcRPPGN5ljKgpjL6cyNMZW0zHWT2b8ocdlRLg9 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGDCCAb+gAwIBAgIQKHCjvLJSTkKm5lsAG4StsTAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcyLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIPHSGaXYokkyDT7hjv7xR7qdr/4unay4 9 | 6ney+f+SaX3/+GS23ETzxjeZYyoKYy+nMjTGVtMx1k9m/KHHZUS4PaNNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgeyt2U8RRLWzp 11 | U144FAY19Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDRwAwRAIgRiUmbSDL 12 | ZT4ETQzsS57MpfinlBo+WM/3ChUtTOL8BlgCIB8jfwjtaP22vH4w+V52ztTgQCnq 13 | lCO/1jpx9z0ii78C 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICaDCCAg6gAwIBAgIRAMss2R//Se8axddSKg66s4QwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMi5leGFtcGxlLmNv 8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABC9LEXgLG+Oj+CUUtRqRrqMCYPSQ 9 | 9SL07T396JNuva/VLTSjefj0uUVzhbm4ns0Q/PGfr0VdsAF33YC7mqM7gpyjgZcw 10 | gZQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD 11 | AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIGEIzPwD9854pDIATDW7tLS09rA1 12 | HiIKSp3jo20ghopKMCgGA1UdEQQhMB+CFnBlZXIxLm9yZzIuZXhhbXBsZS5jb22C 13 | BXBlZXIxMAoGCCqGSM49BAMCA0gAMEUCIQCEV74/9zP+LalP3E3RaqzlbYpAf2yy 14 | JjIsi+7CS+Tz6QIgbkHG184R1G2jfQpZnVlLhliv1+Y1Z06zUOxihPlYsVg= 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgNawqDy1KjEQk2zeI 3 | LrAyiDkuAsZ0afH9e/i4d90cHPuhRANCAAQvSxF4Cxvjo/glFLUaka6jAmD0kPUi 4 | 9O09/eiTbr2v1S00o3n49LlFc4W5uJ7NEPzxn69FXbABd92Au5qjO4Kc 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/tlsca/6108ccfc03f7ce78a432004c35bbb4b4b4f6b0351e220a4a9de3a36d20868a4a_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgVOqUvvBWRSM40R9Y 3 | 4/9PkifPYBE8o0MClMNagRG4btihRANCAARMHgFur4fGzPTu4QlK1DWDPdUhaEXP 4 | ozWYoLuDNdQnzmXISMRdjiNQv5G+x54cnAndFzxG/QMbq3LxkibHryME 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGjCCAcCgAwIBAgIRAIrZokP5xguxCqWjUeu0jnAwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ 8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGDqXVD4yOX65oU0eY3j5UtD8Gr8n/s+ 9 | eODjPP76wNeBoSqljQYM+D953dBtzZ87udrwQ2uvcpUI1R1mHTMuNmSjTTBLMA4G 10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIHsrdlPEUS1s 11 | 6VNeOBQGNfU5vYoTC+VKyU9+Ext1oPI+MAoGCCqGSM49BAMCA0gAMEUCIQCojuxd 12 | EqSDDDUUJstAmAqU65xkd1/Yf0BVpLdCe++WigIgLWC9rBPpUa+Yhe3yy00+BlqG 13 | xZ0h2eeiHaMuF6Qawy4= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQjCCAemgAwIBAgIQA51S5aV8OFKTDEkADa/B4TAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD 8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 9 | X71r5jPNVYL+CqOH1WZXY6bvepQyLFREHtUsOuXFfjlerpGwkPVJNipDZUifTRS8 10 | imfj+s6tx5pRJdy8bWDIVaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG 11 | BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgeyt2U8RRLWzpU144FAY1 12 | 9Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDRwAwRAIgcm/8AFvk79pZzHBu 13 | 7tEzYxpM99AjHnI7lQugayoD+2ACID6sgfNNzEgRm/5iZADeLAPioUiBJUqAIWYq 14 | HKaldZpb 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/5fcbc56face045c33ad213f276293bbe3c54c2e69936045af5c9c46f38b4eddc_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgKaRg+xHOY/vT5n/v 3 | GC1p7z61WCHY8ExYQgMjSISlZWOhRANCAARg6l1Q+Mjl+uaFNHmN4+VLQ/Bq/J/7 4 | Pnjg4zz++sDXgaEqpY0GDPg/ed3Qbc2fO7na8ENrr3KVCNUdZh0zLjZk 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGjCCAcCgAwIBAgIRAIrZokP5xguxCqWjUeu0jnAwCgYIKoZIzj0EAwIwczEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh 5 | Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0MzI5 6 | WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN 7 | U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ 8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGDqXVD4yOX65oU0eY3j5UtD8Gr8n/s+ 9 | eODjPP76wNeBoSqljQYM+D953dBtzZ87udrwQ2uvcpUI1R1mHTMuNmSjTTBLMA4G 10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIHsrdlPEUS1s 11 | 6VNeOBQGNfU5vYoTC+VKyU9+Ext1oPI+MAoGCCqGSM49BAMCA0gAMEUCIQCojuxd 12 | EqSDDDUUJstAmAqU65xkd1/Yf0BVpLdCe++WigIgLWC9rBPpUa+Yhe3yy00+BlqG 13 | xZ0h2eeiHaMuF6Qawy4= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICOzCCAeGgAwIBAgIQZHOG56pgeuzzT/j9cEJrazAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcyLmV4YW1wbGUuY29t 8 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJFXMgo5Duf3i9dXAmjqpM1bKYlcm 9 | NOFhYnUAoeYbYNXmAUkHa1u65tyLNX/hYHzkSpiaY/X/SMdenlWE4hU/U6NsMGow 10 | DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM 11 | BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIGEIzPwD9854pDIATDW7tLS09rA1HiIK 12 | Sp3jo20ghopKMAoGCCqGSM49BAMCA0gAMEUCIQDH/hhYC4gyKqyzpAfFb1Uktj+5 13 | scDsFQuaAQjOG8TfRAIgV2RqJ1E/8Aeaqv/bDHl2REiJXo0HmkdJfPSrxxcbfjI= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiZCAQpMefALqdu3d 3 | Z9b7RY4a92mtncPdlltuzKevU/mhRANCAAQkVcyCjkO5/eL11cCaOqkzVspiVyY0 4 | 4WFidQCh5htg1eYBSQdrW7rm3Is1f+FgfORKmJpj9f9Ix16eVYTiFT9T 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/admincerts/User1@org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGTCCAb+gAwIBAgIQFJqmmjDZ8gJ7hXoqjrRd0jAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcyLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEicuHnLfV+9s/NEbMYhYQdAyDVctkJaG 9 | Ipx6mo1btMhVAdbSmVyUgW6GjydGRmuu0DKvJtWJ22VgsR1xBaNeU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgeyt2U8RRLWzp 11 | U144FAY19Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDSAAwRQIhAKJMRhcO 12 | n1Gw0V9X6L4XYIsUMIXgR98ePGI2zIc3BPucAiBGx02uiRzzZ+brBNpzFxZV3YGo 13 | wK0Fmhp/BHFD4fZeBw== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQjCCAemgAwIBAgIQA51S5aV8OFKTDEkADa/B4TAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD 8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 9 | X71r5jPNVYL+CqOH1WZXY6bvepQyLFREHtUsOuXFfjlerpGwkPVJNipDZUifTRS8 10 | imfj+s6tx5pRJdy8bWDIVaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG 11 | BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgeyt2U8RRLWzpU144FAY1 12 | 9Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDRwAwRAIgcm/8AFvk79pZzHBu 13 | 7tEzYxpM99AjHnI7lQugayoD+2ACID6sgfNNzEgRm/5iZADeLAPioUiBJUqAIWYq 14 | HKaldZpb 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/7f466d17e8f7540362bd3a7a93e0ed2f3c574b61b4f55bb21ff390b835920c5e_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgpUKNGLukmVlst3mX 3 | CPQVxgTiWDPBEBZvKo+5OyYjOf+hRANCAAQSJy4ect9X72z80RsxiFhB0DINVy2Q 4 | loYinHqajVu0yFUB1tKZXJSBboaPJ0ZGa67QMq8m1YnbZWCxHXEFo15T 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICGTCCAb+gAwIBAgIQFJqmmjDZ8gJ7hXoqjrRd0jAKBggqhkjOPQQDAjBzMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu 5 | b3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla 6 | MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T 7 | YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcyLmV4YW1wbGUuY29tMFkw 8 | EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEicuHnLfV+9s/NEbMYhYQdAyDVctkJaG 9 | Ipx6mo1btMhVAdbSmVyUgW6GjydGRmuu0DKvJtWJ22VgsR1xBaNeU6NNMEswDgYD 10 | VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgeyt2U8RRLWzp 11 | U144FAY19Tm9ihML5UrJT34TG3Wg8j4wCgYIKoZIzj0EAwIDSAAwRQIhAKJMRhcO 12 | n1Gw0V9X6L4XYIsUMIXgR98ePGI2zIc3BPucAiBGx02uiRzzZ+brBNpzFxZV3YGo 13 | wK0Fmhp/BHFD4fZeBw== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICSTCCAfCgAwIBAgIRAMIxzzbmc1T697ZrUXRDAoIwCgYIKoZIzj0EAwIwdjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs 5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwMjI1MTI0MzI5WhcNMjgwMjIzMTI0 6 | MzI5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE 7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G 8 | A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 9 | AwEHA0IABEweAW6vh8bM9O7hCUrUNYM91SFoRc+jNZigu4M11CfOZchIxF2OI1C/ 10 | kb7HnhycCd0XPEb9AxurcvGSJsevIwSjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV 11 | HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGEIzPwD9854 12 | pDIATDW7tLS09rA1HiIKSp3jo20ghopKMAoGCCqGSM49BAMCA0cAMEQCIAg687Oi 13 | EaCkk4nI4m6p8uoRG1mVz6TD0mtwUZ8p790pAiBPPrsSeswN0K/iVNglTEzSpzPS 14 | avmbUkIiY1w2jG1FTQ== 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICOzCCAeGgAwIBAgIQQIVU+xNtDYZ+dvxxfPHVfzAKBggqhkjOPQQDAjB2MQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz 5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQz 6 | MjlaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH 7 | Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcyLmV4YW1wbGUuY29t 8 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV945aDvzVuA1823A4FT769rukxLO 9 | wpoW30NU8YvLeTB89EmWtM6hMPL3GK0MaMTCyNfGwZrWlsoWNPEpptOVqaNsMGow 10 | DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM 11 | BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIGEIzPwD9854pDIATDW7tLS09rA1HiIK 12 | Sp3jo20ghopKMAoGCCqGSM49BAMCA0gAMEUCIQDxZ0vuvUiVJPQ/bGNL1JR2ruAg 13 | s+bPCtEzHm8q37Jf1wIgG+59wwjG459daFZlz+nxW45XshHc/v0UKmH/vnFPNzw= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrsNW0S20jzMadwhE 3 | 3+KDaOubeZkplLfvsc9RwswQU9uhRANCAARX3jloO/NW4DXzbcDgVPvr2u6TEs7C 4 | mhbfQ1Txi8t5MHz0SZa0zqEw8vcYrQxoxMLI18bBmtaWyhY08Smm05Wp 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org3.example.com/msp/IssuerPublicKey: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperledger-labs/hlf-connector/f718468a53f9e4ad189089634256203e624c9bf0/src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org3.example.com/msp/IssuerPublicKey -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org3.example.com/msp/RevocationPublicKey: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE0XVtlkfboJjs/FKRvArvnttxLH7+ZdzG 3 | pQWVWuog4f6/J2DxO8ZVR5bC2VRn2EaM96qsg569GkVTn27DFMBU8KgK5Ump6Yzt 4 | +4KoYs+V3mXDT7wEXABQ1V8aCCyTZFd3 5 | -----END PUBLIC KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org3.example.com/msp/keystore/IssuerSecretKey: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperledger-labs/hlf-connector/f718468a53f9e4ad189089634256203e624c9bf0/src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org3.example.com/msp/keystore/IssuerSecretKey -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org3.example.com/msp/keystore/RevocationSecretKey: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGkAgEBBDCqrCvKvCIVatViCVbVvkyP78ltjL0qYkcewohzy5fYUNHLWg1fuJgl 3 | Cpm3SAqrk9KgBwYFK4EEACKhZANiAATRdW2WR9ugmOz8UpG8Cu+e23Esfv5l3Mal 4 | BZVa6iDh/r8nYPE7xlVHlsLZVGfYRoz3qqyDnr0aRVOfbsMUwFTwqArlSanpjO37 5 | gqhiz5XeZcNPvARcAFDVXxoILJNkV3c= 6 | -----END PRIVATE KEY----- 7 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org4.example.com/msp/IssuerPublicKey: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperledger-labs/hlf-connector/f718468a53f9e4ad189089634256203e624c9bf0/src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org4.example.com/msp/IssuerPublicKey -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org4.example.com/msp/RevocationPublicKey: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEQvUnV6JMRcFAEf5L77qnH3IykKQBmYaY 3 | lZPDGddqrH+HRoInJDdb07KZdI32tCnXbS29IxTuo2UUMpglkl4iGrR/5DW7ElH7 4 | YfExtj0BKmQ/VsL9UtCDfoO75KCmGOrb 5 | -----END PUBLIC KEY----- 6 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org4.example.com/msp/keystore/IssuerSecretKey: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperledger-labs/hlf-connector/f718468a53f9e4ad189089634256203e624c9bf0/src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org4.example.com/msp/keystore/IssuerSecretKey -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org4.example.com/msp/keystore/RevocationSecretKey: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGkAgEBBDBvz9dpd8u9BN9+Kv2NZmOBmhYbb0+ZnJRhpvqsnQ7nHJH/1fF7h9y7 3 | yvqu4RmpNQWgBwYFK4EEACKhZANiAARC9SdXokxFwUAR/kvvuqcfcjKQpAGZhpiV 4 | k8MZ12qsf4dGgickN1vTspl0jfa0KddtLb0jFO6jZRQymCWSXiIatH/kNbsSUfth 5 | 8TG2PQEqZD9Wwv1S0IN+g7vkoKYY6ts= 6 | -----END PRIVATE KEY----- 7 | -------------------------------------------------------------------------------- /src/test/java/fabricSetup/e2e-2Orgs/v2.1/orderer.block: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperledger-labs/hlf-connector/f718468a53f9e4ad189089634256203e624c9bf0/src/test/java/fabricSetup/e2e-2Orgs/v2.1/orderer.block -------------------------------------------------------------------------------- /src/test/java/fabricSetup/peer-base/peer-base.yaml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | peer-base: 4 | image: hyperledger/fabric-peer 5 | environment: 6 | - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock 7 | # the following setting starts chaincode containers on the same 8 | # bridge network as the peers 9 | # https://docs.docker.com/compose/networking/ 10 | - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=sdkintegration_default 11 | # - CORE_LOGGING_LEVEL=ERROR 12 | # - FABRIC_LOGGING_SPEC=DEBUG 13 | - FABRIC_LOGGING_SPEC=DEBUG:lifecycle=DEBUG:gossip=INFO:msp.identity=INFO:leveldbhelper=INFO 14 | - CORE_PEER_ENDORSER_ENABLED=true 15 | - CORE_PEER_GOSSIP_USELEADERELECTION=true 16 | - CORE_PEER_GOSSIP_ORGLEADER=false 17 | - CORE_PEER_CHANNELSERVICE_ENABLED=true 18 | - CORE_CHAINCODE_STARTUPTIMEOUT=10m # only cause our vms are so slow! 19 | - CORE_CHAINCODE_EXECUTETIMEOUT=300s # Allow more time for chaincode container to build on install 20 | # The following setting skips the gossip handshake since we are 21 | # are not doing mutual TLS 22 | - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp 23 | - CORE_PEER_PROFILE_ENABLED=false 24 | - CORE_PEER_TLS_ENABLED=${ORG_HYPERLEDGER_FABRIC_SDKTEST_INTEGRATIONTESTS_TLS} 25 | - CORE_PEER_TLS_CLIENTAUTHREQUIRED=${ORG_HYPERLEDGER_FABRIC_SDKTEST_INTEGRATIONTESTS_CLIENT_AUTH_REQUIRED} 26 | - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt 27 | - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key 28 | - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt 29 | 30 | # NOTE BOTH below should never be used in production. 31 | - CORE_PEER_AUTHENTICATION_TIMEWINDOW=3600s 32 | - CORE_PEER_EVENTS_TIMEWINDOW=3600s 33 | 34 | - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv 35 | - CORE_CHAINCODE_GOLANG_RUNTIME=hyperledger/fabric-baseos 36 | - CORE_CHAINCODE_JAVA_RUNTIME=hyperledger/fabric-javaenv 37 | - CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv 38 | working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer 39 | command: peer node start 40 | -------------------------------------------------------------------------------- /src/test/java/hlf/java/rest/client/chaincode/src/main/java/org/example/MyAsset.java: -------------------------------------------------------------------------------- 1 | package main.java.org.example; 2 | 3 | import org.hyperledger.fabric.contract.annotation.DataType; 4 | import org.hyperledger.fabric.contract.annotation.Property; 5 | import org.json.JSONObject; 6 | 7 | @DataType() 8 | public class MyAsset { 9 | @Property() private String value; 10 | 11 | public MyAsset() {} 12 | 13 | public String getValue() { 14 | return value; 15 | } 16 | 17 | public void setValue(String value) { 18 | this.value = value; 19 | } 20 | 21 | public String toJSONString() { 22 | return new JSONObject(this).toString(); 23 | } 24 | 25 | public static MyAsset fromJSONString(String json) { 26 | String value = new JSONObject(json).getString("value"); 27 | MyAsset asset = new MyAsset(); 28 | asset.setValue(value); 29 | return asset; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/test/java/hlf/java/rest/client/chaincode/src/main/java/org/example/MyAssetContract.java: -------------------------------------------------------------------------------- 1 | package main.java.org.example; 2 | 3 | import static java.nio.charset.StandardCharsets.UTF_8; 4 | 5 | import org.hyperledger.fabric.contract.Context; 6 | import org.hyperledger.fabric.contract.ContractInterface; 7 | import org.hyperledger.fabric.contract.annotation.Contact; 8 | import org.hyperledger.fabric.contract.annotation.Contract; 9 | import org.hyperledger.fabric.contract.annotation.Default; 10 | import org.hyperledger.fabric.contract.annotation.Info; 11 | import org.hyperledger.fabric.contract.annotation.License; 12 | import org.hyperledger.fabric.contract.annotation.Transaction; 13 | 14 | @Contract( 15 | name = "MyAssetContract", 16 | info = 17 | @Info( 18 | title = "MyAsset contract", 19 | description = "Very basic Java Contract example", 20 | version = "0.0.1", 21 | license = @License(name = "SPDX-License-Identifier: Apache-2.0", url = ""), 22 | contact = 23 | @Contact( 24 | email = "MyAssetContract@example.com", 25 | name = "MyAssetContract", 26 | url = "http://MyAssetContract.me"))) 27 | @Default 28 | public class MyAssetContract implements ContractInterface { 29 | public MyAssetContract() {} 30 | 31 | @Transaction() 32 | public boolean myAssetExists(Context ctx, String myAssetId) { 33 | byte[] buffer = ctx.getStub().getState(myAssetId); 34 | return (buffer != null && buffer.length > 0); 35 | } 36 | 37 | @Transaction() 38 | public void createMyAsset(Context ctx, String myAssetId, String value) { 39 | boolean exists = myAssetExists(ctx, myAssetId); 40 | if (exists) { 41 | throw new RuntimeException("The asset " + myAssetId + " already exists"); 42 | } 43 | MyAsset asset = new MyAsset(); 44 | asset.setValue(value); 45 | ctx.getStub().putState(myAssetId, asset.toJSONString().getBytes(UTF_8)); 46 | } 47 | 48 | @Transaction() 49 | public MyAsset readMyAsset(Context ctx, String myAssetId) { 50 | boolean exists = myAssetExists(ctx, myAssetId); 51 | if (!exists) { 52 | throw new RuntimeException("The asset " + myAssetId + " does not exist"); 53 | } 54 | 55 | MyAsset newAsset = MyAsset.fromJSONString(new String(ctx.getStub().getState(myAssetId), UTF_8)); 56 | return newAsset; 57 | } 58 | 59 | @Transaction() 60 | public void updateMyAsset(Context ctx, String myAssetId, String newValue) { 61 | boolean exists = myAssetExists(ctx, myAssetId); 62 | if (!exists) { 63 | throw new RuntimeException("The asset " + myAssetId + " does not exist"); 64 | } 65 | MyAsset asset = new MyAsset(); 66 | asset.setValue(newValue); 67 | 68 | ctx.getStub().putState(myAssetId, asset.toJSONString().getBytes(UTF_8)); 69 | } 70 | 71 | @Transaction() 72 | public void deleteMyAsset(Context ctx, String myAssetId) { 73 | boolean exists = myAssetExists(ctx, myAssetId); 74 | if (!exists) { 75 | throw new RuntimeException("The asset " + myAssetId + " does not exist"); 76 | } 77 | ctx.getStub().delState(myAssetId); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/test/java/hlf/java/rest/client/controller/FabricClientControllerTest.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.controller; 2 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; 4 | 5 | import hlf.java.rest.client.exception.ErrorConstants; 6 | import hlf.java.rest.client.model.ClientResponseModel; 7 | import hlf.java.rest.client.service.TransactionFulfillment; 8 | import java.util.List; 9 | import java.util.Optional; 10 | import org.junit.jupiter.api.BeforeAll; 11 | import org.junit.jupiter.api.Test; 12 | import org.junit.jupiter.api.extension.ExtendWith; 13 | import org.mockito.ArgumentCaptor; 14 | import org.mockito.Captor; 15 | import org.mockito.InjectMocks; 16 | import org.mockito.Mock; 17 | import org.mockito.Mockito; 18 | import org.mockito.junit.jupiter.MockitoExtension; 19 | import org.springframework.http.HttpStatus; 20 | import org.springframework.http.ResponseEntity; 21 | import org.springframework.test.annotation.DirtiesContext; 22 | 23 | @ExtendWith(MockitoExtension.class) 24 | @DirtiesContext 25 | public class FabricClientControllerTest { 26 | 27 | @InjectMocks FabricClientController fabricClientController; 28 | 29 | @Mock TransactionFulfillment transactionFulfillment; 30 | 31 | private String testNetworkString = "some string"; 32 | private String testContractString = "some string"; 33 | private String testTransactionFunctionString = "some string"; 34 | private String[] testTransactionParamsArrary = {"test param", "test param 2"}; 35 | private String testTransactionIdString = "some string"; 36 | private String testTransactionCollection = "some string"; 37 | private String testTransactionTransientKey = "some string"; 38 | private static ResponseEntity response; 39 | 40 | @Captor private ArgumentCaptor>> peerNames; 41 | 42 | @BeforeAll 43 | public static void setup() { 44 | response = 45 | new ResponseEntity( 46 | new ClientResponseModel(ErrorConstants.NO_ERROR, ""), HttpStatus.OK); 47 | } 48 | 49 | @Test 50 | public void postTransactionTest() { 51 | Mockito.when( 52 | transactionFulfillment.writeTransactionToLedger( 53 | Mockito.anyString(), 54 | Mockito.anyString(), 55 | Mockito.anyString(), 56 | peerNames.capture(), 57 | Mockito.any())) 58 | .thenReturn(response); 59 | assertEquals( 60 | response, 61 | fabricClientController.postTransaction( 62 | testNetworkString, 63 | testContractString, 64 | testTransactionFunctionString, 65 | testTransactionParamsArrary)); 66 | } 67 | 68 | @Test 69 | public void getTransactionTest() { 70 | Mockito.when( 71 | transactionFulfillment.readTransactionFromPrivateLedger( 72 | Mockito.anyString(), 73 | Mockito.anyString(), 74 | Mockito.anyString(), 75 | Mockito.anyString(), 76 | Mockito.anyString(), 77 | Mockito.anyString())) 78 | .thenReturn(response); 79 | assertEquals( 80 | response, 81 | fabricClientController.getTransaction( 82 | testNetworkString, 83 | testContractString, 84 | testTransactionFunctionString, 85 | testTransactionCollection, 86 | testTransactionTransientKey, 87 | testTransactionIdString)); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/test/java/hlf/java/rest/client/controller/e2e/ConsumeFromEventKafka.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.controller.e2e; 2 | 3 | import java.nio.charset.Charset; 4 | import java.util.Arrays; 5 | import java.util.Properties; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.apache.kafka.clients.consumer.ConsumerRecord; 8 | import org.apache.kafka.clients.consumer.ConsumerRecords; 9 | import org.apache.kafka.clients.consumer.KafkaConsumer; 10 | import org.apache.kafka.common.header.Header; 11 | import org.apache.kafka.common.serialization.StringDeserializer; 12 | 13 | @Slf4j 14 | public class ConsumeFromEventKafka { 15 | public static void main(String[] args) { 16 | 17 | ConsumeFromEventKafka consumeFromEventKafka = new ConsumeFromEventKafka(); 18 | 19 | consumeFromEventKafka.showMessagesFromTopic("hlf-offchain-topic"); 20 | } 21 | 22 | public void showMessagesFromTopic(String topicName) { 23 | 24 | Properties props = new Properties(); 25 | 26 | props.put("bootstrap.servers", "localhost:9093"); 27 | 28 | props.put("group.id", "analytics2125"); 29 | props.put("auto.offset.reset", "earliest"); 30 | props.put("enable.auto.commit", "false"); 31 | props.put("auto.commit.interval.ms", "1000"); 32 | props.put("session.timeout.ms", "30000"); 33 | props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 34 | props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 35 | 36 | KafkaConsumer consumer = new KafkaConsumer(props); 37 | consumer.subscribe(Arrays.asList(topicName)); 38 | // KafkaConsumer subscribes list of topics here. 39 | log.info("Subscribed to topic " + topicName); 40 | 41 | int i = 0; 42 | 43 | while (i < 10) { 44 | 45 | ConsumerRecords records = consumer.poll(100); 46 | 47 | for (ConsumerRecord record : records) { 48 | 49 | Header[] headers = record.headers().toArray(); 50 | 51 | Charset charset = Charset.forName("UTF-8"); 52 | 53 | /* 54 | * String value = new String(headers[0].value(), charset); 55 | * 56 | * 57 | * log.info("Key: "+headers[0].key()+"\t Value: "+value); 58 | */ 59 | 60 | for (Header header : headers) { 61 | log.info("Keys : " + header.key()); 62 | // log.info("Value : "+String.valueOf(header.value())); 63 | StringDeserializer strDeserializer = new StringDeserializer(); 64 | 65 | log.info("Value : " + strDeserializer.deserialize(topicName, header.value())); 66 | } 67 | 68 | // print the offset,key and value for the consumer records. 69 | log.info("offset = " + record.offset() + " value = " + record.value().toString()); 70 | // log.info("Header: " + record.headers().toArray().length); 71 | 72 | // log.info(new Timestamp(record.timestamp()).toString()); 73 | 74 | } 75 | 76 | consumer.commitSync(); 77 | // consumer.close(); 78 | 79 | } 80 | consumer.close(); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/test/java/hlf/java/rest/client/controller/e2e/SendToIntgKafka.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.controller.e2e; 2 | 3 | import java.nio.charset.StandardCharsets; 4 | import java.nio.file.Files; 5 | import java.nio.file.Paths; 6 | import java.util.Properties; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.apache.kafka.clients.producer.KafkaProducer; 9 | import org.apache.kafka.clients.producer.Producer; 10 | import org.apache.kafka.clients.producer.ProducerRecord; 11 | import org.apache.kafka.common.header.internals.RecordHeader; 12 | 13 | @Slf4j 14 | public class SendToIntgKafka { 15 | public static void main(String[] args) { 16 | 17 | SendToIntgKafka sendToIntgKafka = new SendToIntgKafka(); 18 | sendToIntgKafka.putMessageOnTopic("hlf-integration-topic"); 19 | } 20 | 21 | public void putMessageOnTopic(String topicName) { 22 | Properties props = new Properties(); 23 | props.put("bootstrap.servers", "localhost:9093"); 24 | props.put("acks", "all"); 25 | props.put("retries", 0); 26 | props.put("batch.size", 16384); 27 | props.put("linger.ms", 1); 28 | props.put("buffer.memory", 33554432); 29 | props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 30 | props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 31 | log.info("Properties added"); 32 | System.out.println("Properties added"); 33 | try { 34 | Producer producer = new KafkaProducer(props); 35 | log.info("Got the Topic"); 36 | for (int i = 0; i < 1; i++) { 37 | String text = 38 | new String( 39 | Files.readAllBytes(Paths.get("./src/test/resources/car.json")), 40 | StandardCharsets.UTF_8); 41 | log.info("Sending message to Topic: " + text); 42 | System.out.println("Sending message to Topic: " + text); 43 | ProducerRecord producerRecord = 44 | new ProducerRecord(topicName, 0, String.valueOf(text.hashCode()), text); 45 | producerRecord.headers().add(new RecordHeader("channel-name", "supplychain".getBytes())); 46 | producerRecord 47 | .headers() 48 | .add(new RecordHeader("function-name", "createCarByJson".getBytes())); 49 | producerRecord.headers().add(new RecordHeader("chaincode-name", "fabcar".getBytes())); 50 | producer.send(producerRecord); 51 | } 52 | log.info("Message sent successfully"); 53 | producer.close(); 54 | 55 | } catch (Exception e) { 56 | log.error(e.getLocalizedMessage()); 57 | e.printStackTrace(); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/test/java/hlf/java/rest/client/util/EnrollAdmin.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.util; 2 | 3 | import java.nio.file.Paths; 4 | import java.util.Properties; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.hyperledger.fabric.gateway.Identities; 7 | import org.hyperledger.fabric.gateway.Identity; 8 | import org.hyperledger.fabric.gateway.Wallet; 9 | import org.hyperledger.fabric.gateway.Wallets; 10 | import org.hyperledger.fabric.sdk.Enrollment; 11 | import org.hyperledger.fabric.sdk.security.CryptoSuite; 12 | import org.hyperledger.fabric.sdk.security.CryptoSuiteFactory; 13 | import org.hyperledger.fabric_ca.sdk.EnrollmentRequest; 14 | import org.hyperledger.fabric_ca.sdk.HFCAClient; 15 | 16 | @Slf4j 17 | public class EnrollAdmin { 18 | 19 | static { 20 | System.setProperty("org.hyperledger.fabric.sdk.service_discovery.as_localhost", "true"); 21 | } 22 | 23 | public static void main(String[] args) { 24 | EnrollAdmin enrollAdmin = new EnrollAdmin(); 25 | try { 26 | String pemFilePath = 27 | "./fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem"; 28 | enrollAdmin.generateWallet(pemFilePath); 29 | } catch (Exception e) { 30 | 31 | e.printStackTrace(); 32 | } 33 | } 34 | 35 | public void generateWallet(String pemFilePath) throws Exception { 36 | 37 | // Create a CA client for interacting with the CA. 38 | Properties props = new Properties(); 39 | props.put("pemFile", pemFilePath); 40 | props.put("allowAllHostNames", "true"); 41 | HFCAClient caClient = HFCAClient.createNewInstance("https://localhost:7054", props); 42 | CryptoSuite cryptoSuite = CryptoSuiteFactory.getDefault().getCryptoSuite(); 43 | caClient.setCryptoSuite(cryptoSuite); 44 | 45 | // Create a wallet for managing identities 46 | Wallet wallet = Wallets.newFileSystemWallet(Paths.get("testwallet")); 47 | 48 | // Check to see if we've already enrolled the admin user. 49 | if (wallet.get("admin") != null) { 50 | log.info("An identity for the admin user \"admin\" already exists in the wallet"); 51 | return; 52 | } 53 | 54 | // Enroll the admin user, and import the new identity into the wallet. 55 | final EnrollmentRequest enrollmentRequestTLS = new EnrollmentRequest(); 56 | enrollmentRequestTLS.addHost("localhost"); 57 | enrollmentRequestTLS.setProfile("tls"); 58 | Enrollment enrollment = caClient.enroll("admin", "adminpw", enrollmentRequestTLS); 59 | Identity user = Identities.newX509Identity("Org1MSP", enrollment); 60 | wallet.put("admin", user); 61 | log.info("Successfully enrolled user \"admin\" and imported it into the wallet"); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/test/java/hlf/java/rest/client/util/TestingUtlitlies.java: -------------------------------------------------------------------------------- 1 | package hlf.java.rest.client.util; 2 | 3 | import com.google.protobuf.InvalidProtocolBufferException; 4 | import com.google.protobuf.util.JsonFormat; 5 | import java.util.Base64; 6 | import org.hyperledger.fabric.protos.common.Configuration; 7 | import org.junit.jupiter.api.Test; 8 | 9 | public class TestingUtlitlies { 10 | 11 | @Test 12 | public void encodeStringToABase64EncodedString() { 13 | String unencodedString = "*Hello There*"; 14 | String encodedString = new String(Base64.getEncoder().encode(unencodedString.getBytes())); 15 | System.out.println(encodedString); 16 | } 17 | 18 | @Test 19 | public void decodeABase64EncodedString() throws InvalidProtocolBufferException { 20 | String base64EncodedByteArrayString = "ChBTYW1wbGVDb25zb3J0aXVt"; 21 | byte[] byteArray = Base64.getDecoder().decode(base64EncodedByteArrayString); 22 | Configuration.Consortium consortium = 23 | org.hyperledger.fabric.protos.common.Configuration.Consortium.parseFrom(byteArray); 24 | String decodedString = JsonFormat.printer().print(consortium); 25 | System.out.println(decodedString); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/test/resources/application-default-consumer.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | devtools.add-properties: false 3 | fabric: 4 | localhostReportAddress: false 5 | wallet: 6 | path: src/test/resources/testwallet 7 | adminUser: 8 | name: admin 9 | clientUser: 10 | name: clientUser 11 | orgConnectionConfig: 12 | path: src/test/resources/testconfig 13 | filename: connection.yml 14 | events: 15 | enable: true 16 | chaincode: [] 17 | chaincodeDetails: [] 18 | blockDetails: [] 19 | client: 20 | rest: 21 | apikey: 6uoIAnR 22 | kafka: 23 | integration-points: 24 | - groupId: test-group-publisher 25 | brokerHost: localhost:9092 26 | topic: test-consumer-inbound-topic 27 | config-id: 892019 28 | ssl-enabled: false 29 | event-listeners: 30 | - ssl-enabled: false 31 | brokerHost: localhost:9092 32 | topic: test-publisher-event-topice 33 | enable-idempotence: true 34 | enable-at-most-once-semantics: true 35 | management: 36 | endpoints: 37 | web: 38 | exposure: 39 | include: "prometheus,metrics,health,refresh" 40 | endpoint: 41 | health: 42 | group: 43 | db: 44 | include: db 45 | show-components: always 46 | metrics: 47 | enable: 48 | tomcat: true 49 | jvm: true 50 | process: true 51 | hikaricp: true 52 | system: true 53 | jdbc: true 54 | logback: true 55 | distribution: 56 | percentiles-histogram: 57 | http.server.requests: true 58 | maximum-expected-value: 59 | http.server.requests: 1s 60 | custom: 61 | kafka: 62 | enabled: false 63 | server: 64 | config: 65 | location: /Users/n0p0328/work/hlf-connector/src/main/resources/config/ 66 | servlet: 67 | context-path: /hlf-rest-client 68 | port: 8282 69 | dedupe: 70 | enable: true -------------------------------------------------------------------------------- /src/test/resources/application-per-partition-consumer.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | devtools.add-properties: false 3 | fabric: 4 | localhostReportAddress: false 5 | wallet: 6 | path: src/test/resources/testwallet 7 | adminUser: 8 | name: admin 9 | clientUser: 10 | name: clientUser 11 | orgConnectionConfig: 12 | path: src/test/resources/testconfig 13 | filename: connection.yml 14 | events: 15 | enable: true 16 | chaincode: [] 17 | chaincodeDetails: [] 18 | blockDetails: [] 19 | client: 20 | rest: 21 | apikey: 6uoIAnR 22 | kafka: 23 | integration-points: 24 | - groupId: test-group-publisher 25 | brokerHost: localhost:9092 26 | topic: test-consumer-inbound-topic 27 | config-id: 892019 28 | ssl-enabled: false 29 | topicPartitions: 12 30 | event-listeners: 31 | - ssl-enabled: false 32 | brokerHost: localhost:9092 33 | topic: test-publisher-event-topic 34 | enable-idempotence: true 35 | failed-message-listener: 36 | brokerHost: localhost:9092 37 | topic: test-consumer-dlt 38 | ssl-enabled: false 39 | enable-idempotence: true 40 | enable-at-most-once-semantics: true 41 | management: 42 | endpoints: 43 | web: 44 | exposure: 45 | include: "prometheus,metrics,health,refresh" 46 | endpoint: 47 | health: 48 | group: 49 | db: 50 | include: db 51 | show-components: always 52 | metrics: 53 | enable: 54 | tomcat: true 55 | jvm: true 56 | process: true 57 | hikaricp: true 58 | system: true 59 | jdbc: true 60 | logback: true 61 | distribution: 62 | percentiles-histogram: 63 | http.server.requests: true 64 | maximum-expected-value: 65 | http.server.requests: 1s 66 | custom: 67 | kafka: 68 | enabled: false 69 | server: 70 | config: 71 | location: /Users/n0p0328/work/hlf-connector/src/main/resources/config/ 72 | servlet: 73 | context-path: /hlf-rest-client 74 | port: 8282 75 | dedupe: 76 | enable: true -------------------------------------------------------------------------------- /src/test/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | profiles.active: test 3 | 4 | management: 5 | health.db.enabled: false 6 | endpoints: 7 | web: 8 | exposure: 9 | include: refresh 10 | server: 11 | config: 12 | location: "src/test/resources/application.yml" 13 | --- 14 | springdoc: 15 | version: 1.0.0 16 | swagger-ui: 17 | url: /open-api.yml 18 | api-docs: 19 | enabled: false 20 | spring: 21 | profiles: test 22 | fabric: 23 | localhostReportAddress: true 24 | wallet: 25 | path: "src/test/resources/testwallet" 26 | adminUser: 27 | name: admin 28 | clientUser: 29 | name: clientUser 30 | orgConnectionConfig: 31 | path: "src/test/resources/testconfig" 32 | filename: fabric-connection.yml 33 | client: 34 | rest: 35 | apikey: ePVYHwAaQ0V1XOTX6U 36 | kafka: 37 | integration-points: 38 | - 39 | brokerHost: localhost:9093 40 | groupId: fabric-consumer 41 | topic: hlf-integration-topic1 42 | - 43 | brokerHost: localhost:9094 44 | groupId: fabric-consumer 45 | topic: hlf-integration-topic2 46 | event-listeners: 47 | - brokerHost: localhost:9093 48 | topic: hlf-offchain-topic 49 | enable-idempotence: true 50 | enable-at-most-once-semantics: true 51 | dedupe: 52 | enable: false 53 | --- 54 | spring: 55 | profiles: intg 56 | fabric: 57 | localhostReportAddress: true 58 | wallet: 59 | path: wallet 60 | adminUser: 61 | name: admin 62 | clientUser: 63 | name: clientUser 64 | orgConnectionConfig: 65 | path: config 66 | filename: connection.yaml 67 | events: 68 | enable: false 69 | chaincode: channel1 70 | blockDetails: 71 | - channelName: channel1 72 | listenerTopics: topic-1 73 | client: 74 | rest: 75 | apikey: abc 76 | -------------------------------------------------------------------------------- /src/test/resources/car.json: -------------------------------------------------------------------------------- 1 | { 2 | "make": "Audi", 3 | "model": "Q5", 4 | "color": "blue", 5 | "owner": "abanik" 6 | } -------------------------------------------------------------------------------- /src/test/resources/integration/sample-application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | profiles.active: test 3 | 4 | management: 5 | health.db.enabled: false 6 | endpoints: 7 | web: 8 | exposure: 9 | include: refresh 10 | 11 | server: 12 | config: 13 | location: "src/test/resources/application.yml" 14 | --- 15 | springdoc: 16 | version: 1.0.0 17 | swagger-ui: 18 | url: /open-api.yml 19 | api-docs: 20 | enabled: false 21 | spring: 22 | profiles: test 23 | fabric: 24 | localhostReportAddress: true 25 | wallet: 26 | path: "src/test/resources/testwallet" 27 | adminUser: 28 | name: admin 29 | clientUser: 30 | name: clientUser 31 | orgConnectionConfig: 32 | path: "src/test/resources/testconfig" 33 | filename: connection.yml 34 | client: 35 | rest: 36 | apikey: expected-key 37 | events: 38 | enable: true 39 | standardCCEventEnabled: false 40 | chaincode: chaincode12, chaincode2 41 | blockDetails: 42 | - channelName: block111 43 | listenerTopics: topic-1 44 | kafka: 45 | integration-points: 46 | - 47 | brokerHost: localhost:8087 48 | groupId: fabric-consumer1 49 | topic: hlf-integration-topic11 50 | - 51 | brokerHost: localhost:8087 52 | groupId: fabric-consumer1 53 | topic: hlf-integration-topic21 54 | event-listeners: 55 | - brokerHost: localhost:8087 56 | topic: hlf-offchain-topic1 57 | 58 | 59 | --- 60 | spring: 61 | profiles: intg 62 | fabric: 63 | localhostReportAddress: true 64 | wallet: 65 | path: wallet 66 | adminUser: 67 | name: admin 68 | clientUser: 69 | name: clientUser 70 | orgConnectionConfig: 71 | path: config 72 | filename: connection.yaml 73 | events: 74 | enable: false 75 | standardCCEventEnabled: false 76 | chaincode: channel1 77 | block: channel1 78 | client: 79 | rest: 80 | apikey: abc -------------------------------------------------------------------------------- /src/test/resources/testconfig/connection.yml: -------------------------------------------------------------------------------- 1 | name: fabric-network 2 | version: 1.0.0 3 | client: 4 | organization: TestOrg 5 | connection: 6 | timeout: 7 | peer: 8 | endorser: '300' 9 | organizations: 10 | TestOrg: 11 | mspid: peerMSP 12 | peers: 13 | - peer 14 | certificateAuthorities: 15 | - ca 16 | peers: 17 | peer: 18 | url: grpcs://peer-url:7051 19 | tlsCACerts: 20 | pem: | 21 | trust certificate 22 | certificateAuthorities: 23 | ca: 24 | url: https://ca-url:7054 25 | caName: caname 26 | tlsCACerts: 27 | pem: | 28 | trust certificate 29 | httpOptions: 30 | verify: true 31 | -------------------------------------------------------------------------------- /src/test/resources/testconfig/fabric-connection.yml: -------------------------------------------------------------------------------- 1 | name: fabric-network 2 | version: 1.0.0 3 | client: 4 | organization: Org1 5 | connection: 6 | timeout: 7 | peer: 8 | endorser: '300' 9 | organizations: 10 | Org1: 11 | mspid: Org1MSP 12 | peers: 13 | - peer0.org1.example.com 14 | certificateAuthorities: 15 | - ca-org1 16 | peers: 17 | peer0.org1.example.com: 18 | url: grpc://localhost:7051 19 | tlsCACerts: 20 | path: src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem 21 | 22 | certificateAuthorities: 23 | ca-org1: 24 | url: https://localhost:7054 25 | caName: ca0 26 | tlsCACerts: 27 | path: src/test/java/fabricSetup/e2e-2Orgs/v2.1/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem 28 | httpOptions: 29 | verify: true 30 | -------------------------------------------------------------------------------- /src/test/resources/testwallet/admin.id: -------------------------------------------------------------------------------- 1 | { 2 | "name": "admin", 3 | "credentials": { 4 | "certificate": "-----BEGIN CERTIFICATE-----\nMIICGDCCAb+gAwIBAgIQCTkaQxdPH5en+xQc80ZfTTAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla\nMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw\nEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXd2NGbWqiK4nyPdqTb5BZYA9q0mpzv2\nAq6jM5CRadTsmWRDkZKzboaPolBTSkZ4F71TmBM0QAux31pojMmq/6NNMEswDgYD\nVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4\naPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDRwAwRAIgEMqmOlsM\nPED00efu1YJzssn1KfPaln7wd5WMJFxTV9QCIHWjDY7WsNJRAxHTOeNsKpGzDR+8\nSQSHwVS1grlwr2IF\n-----END CERTIFICATE-----", 5 | "privateKey": "-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgpANnM2zJ/oz7c31B\nahODy1OSvibxUHpQ/1xiUleYvH+hRANCAAS1d3Y0ZtaqIrifI92pNvkFlgD2rSan\nO/YCrqMzkJFp1OyZZEORkrNuho+iUFNKRngXvVOYEzRAC7HfWmiMyar/\n-----END PRIVATE KEY-----" 6 | }, 7 | "mspId": "Org1MSP", 8 | "type": "X.509", 9 | "version": 1 10 | } 11 | -------------------------------------------------------------------------------- /src/test/resources/testwallet/clientUser.id: -------------------------------------------------------------------------------- 1 | { 2 | "name": "user", 3 | "credentials": { 4 | "certificate": "-----BEGIN CERTIFICATE-----\nMIICGDCCAb+gAwIBAgIQCTkaQxdPH5en+xQc80ZfTTAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xODAyMjUxMjQzMjlaFw0yODAyMjMxMjQzMjla\nMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw\nEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXd2NGbWqiK4nyPdqTb5BZYA9q0mpzv2\nAq6jM5CRadTsmWRDkZKzboaPolBTSkZ4F71TmBM0QAux31pojMmq/6NNMEswDgYD\nVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgscw0w/LQz4B4\naPo6GhGHTSBBMIRf2O6zbS5ZRNd2dxwwCgYIKoZIzj0EAwIDRwAwRAIgEMqmOlsM\nPED00efu1YJzssn1KfPaln7wd5WMJFxTV9QCIHWjDY7WsNJRAxHTOeNsKpGzDR+8\nSQSHwVS1grlwr2IF\n-----END CERTIFICATE-----", 5 | "privateKey": "-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgpANnM2zJ/oz7c31B\nahODy1OSvibxUHpQ/1xiUleYvH+hRANCAAS1d3Y0ZtaqIrifI92pNvkFlgD2rSan\nO/YCrqMzkJFp1OyZZEORkrNuho+iUFNKRngXvVOYEzRAC7HfWmiMyar/\n-----END PRIVATE KEY-----" 6 | }, 7 | "mspId": "Org1MSP", 8 | "type": "X.509", 9 | "version": 1 10 | } 11 | --------------------------------------------------------------------------------