mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 15:35:09 +00:00
[FAB-4996] NodeSDK - move sample to fabric-samples
Move the Balance Transfer sample application from fabric-sdk-node to fabric-samples. This cr will add the files to the fabric-samples. There will another one to remove the files from fabric-sdk-node. Change-Id: I2344ee00bcd47793ae07f203070af93bc2ee69d6 Signed-off-by: Bret Harrison <beharrison@nc.rr.com>
This commit is contained in:
parent
6610584c19
commit
04c9eff110
123 changed files with 4177 additions and 0 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -6,6 +6,8 @@
|
|||
.*.sw*
|
||||
# installed platform-specific binaries
|
||||
/bin
|
||||
.DS_Store
|
||||
.project
|
||||
|
||||
first-network/channel-artifacts/*.tx
|
||||
first-network/channel-artifacts/*.block
|
||||
|
|
@ -17,3 +19,7 @@ chaincode-docker-devmode/chaincode/chaincode_example02/chaincode_example02
|
|||
|
||||
# fabric sdk node modules
|
||||
fabcar/node_modules/
|
||||
|
||||
# balance transfer sample
|
||||
balance-transfer/.DS_Store
|
||||
balance-transfer/node_modules/*
|
||||
|
|
|
|||
284
balance-transfer/README.md
Normal file
284
balance-transfer/README.md
Normal file
|
|
@ -0,0 +1,284 @@
|
|||
## Balance transfer
|
||||
|
||||
A sample Node.js app to demonstrate **__fabric-client__** & **__fabric-ca-client__** Node.js SDK APIs
|
||||
|
||||
### Prerequisites and setup:
|
||||
|
||||
* [Docker](https://www.docker.com/products/overview) - v1.12 or higher
|
||||
* [Docker Compose](https://docs.docker.com/compose/overview/) - v1.8 or higher
|
||||
* [Git client](https://git-scm.com/downloads) - needed for clone commands
|
||||
* **Node.js** v6.9.0 - 6.10.0 ( __Node v7+ is not supported__ )
|
||||
* Download docker images
|
||||
|
||||
```
|
||||
cd fabric-sdk-node/examples/balance-transfer/
|
||||
docker-compose -f artifacts/docker-compose.yaml pull
|
||||
```
|
||||
|
||||
Once you have completed the above setup, you will have provisioned a local network with the following docker container configuration:
|
||||
|
||||
* 2 CAs
|
||||
* A SOLO orderer
|
||||
* 4 peers (2 peers per Org)
|
||||
|
||||
#### Artifacts
|
||||
* Crypto material has been generated using the **cryptogen** tool from Hyperledger Fabric and mounted to all peers, the orderering node and CA containers. More details regarding the cryptogen tool are available [here](http://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#crypto-generator).
|
||||
* An Orderer genesis block (genesis.block) and channel configuration transaction (mychannel.tx) has been pre generated using the **configtxgen** tool from Hyperledger Fabric and placed within the artifacts folder. More details regarding the configtxgen tool are available [here](http://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#configuration-transaction-generator).
|
||||
|
||||
## Running the sample program
|
||||
|
||||
There are two options available for running the balance-transfer sample
|
||||
|
||||
### Option 1:
|
||||
|
||||
##### Terminal Window 1
|
||||
|
||||
* Launch the network using docker-compose
|
||||
|
||||
```
|
||||
docker-compose -f artifacts/docker-compose.yaml up
|
||||
```
|
||||
##### Terminal Window 2
|
||||
|
||||
* Execute the REST APIs from the section [Sample REST APIs Requests](https://github.com/hyperledger/fabric-sdk-node/tree/master/examples/balance-transfer#running-the-sample-program)
|
||||
|
||||
|
||||
### Option 2:
|
||||
|
||||
##### Terminal Window 1
|
||||
|
||||
```
|
||||
cd fabric-sdk-node/examples/balance-transfer
|
||||
|
||||
./runApp.sh
|
||||
|
||||
```
|
||||
|
||||
* This lauches the required network on your local machine
|
||||
* Installs the fabric-client and fabric-ca-client node modules
|
||||
* And, starts the node app on PORT 4000
|
||||
|
||||
##### Terminal Window 2
|
||||
|
||||
|
||||
In order for the following shell script to properly parse the JSON, you must install ``jq``:
|
||||
|
||||
instructions [https://stedolan.github.io/jq/](https://stedolan.github.io/jq/)
|
||||
|
||||
With the application started in terminal 1, next, test the APIs by executing the script - **testAPIs.sh**:
|
||||
```
|
||||
cd fabric-sdk-node/examples/balance-transfer
|
||||
|
||||
./testAPIs.sh
|
||||
|
||||
```
|
||||
|
||||
## Sample REST APIs Requests
|
||||
|
||||
### Login Request
|
||||
|
||||
* Register and enroll new users in Organization - **Org1**:
|
||||
|
||||
`curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=Jim&orgName=org1'`
|
||||
|
||||
**OUTPUT:**
|
||||
|
||||
```
|
||||
{
|
||||
"success": true,
|
||||
"secret": "RaxhMgevgJcm",
|
||||
"message": "Jim enrolled Successfully",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI"
|
||||
}
|
||||
```
|
||||
|
||||
The response contains the success/failure status, an **enrollment Secret** and a **JSON Web Token (JWT)** that is a required string in the Request Headers for subsequent requests.
|
||||
|
||||
### Create Channel request
|
||||
|
||||
```
|
||||
curl -s -X POST \
|
||||
http://localhost:4000/channels \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json" \
|
||||
-d '{
|
||||
"channelName":"mychannel",
|
||||
"channelConfigPath":"../artifacts/channel/mychannel.tx"
|
||||
}'
|
||||
```
|
||||
|
||||
Please note that the Header **authorization** must contain the JWT returned from the `POST /users` call
|
||||
|
||||
### Join Channel request
|
||||
|
||||
```
|
||||
curl -s -X POST \
|
||||
http://localhost:4000/channels/mychannel/peers \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json" \
|
||||
-d '{
|
||||
"peers": ["localhost:7051","localhost:7056"]
|
||||
}'
|
||||
```
|
||||
### Install chaincode
|
||||
|
||||
```
|
||||
curl -s -X POST \
|
||||
http://localhost:4000/chaincodes \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json" \
|
||||
-d '{
|
||||
"peers": ["localhost:7051","localhost:7056"],
|
||||
"chaincodeName":"mycc",
|
||||
"chaincodePath":"github.com/example_cc",
|
||||
"chaincodeVersion":"v0"
|
||||
}'
|
||||
```
|
||||
|
||||
### Instantiate chaincode
|
||||
|
||||
```
|
||||
curl -s -X POST \
|
||||
http://localhost:4000/channels/mychannel/chaincodes \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json" \
|
||||
-d '{
|
||||
"peers": ["localhost:7051"],
|
||||
"chaincodeName":"mycc",
|
||||
"chaincodeVersion":"v0",
|
||||
"functionName":"init",
|
||||
"args":["a","100","b","200"]
|
||||
}'
|
||||
```
|
||||
|
||||
### Invoke request
|
||||
|
||||
```
|
||||
curl -s -X POST \
|
||||
http://localhost:4000/channels/mychannel/chaincodes/mycc \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json" \
|
||||
-d '{
|
||||
"peers": ["localhost:7051", "localhost:7056"],
|
||||
"fcn":"move",
|
||||
"args":["a","b","10"]
|
||||
}'
|
||||
```
|
||||
**NOTE:** Ensure that you save the Transaction ID from the response in order to pass this string in the subsequent query transactions.
|
||||
|
||||
### Chaincode Query
|
||||
|
||||
```
|
||||
curl -s -X GET \
|
||||
"http://localhost:4000/channels/mychannel/chaincodes/mycc?peer=peer1&fcn=query&args=%5B%22a%22%5D" \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json"
|
||||
```
|
||||
|
||||
### Query Block by BlockNumber
|
||||
|
||||
```
|
||||
curl -s -X GET \
|
||||
"http://localhost:4000/channels/mychannel/blocks/1?peer=peer1" \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json"
|
||||
```
|
||||
|
||||
### Query Transaction by TransactionID
|
||||
|
||||
```
|
||||
curl -s -X GET http://localhost:4000/channels/mychannel/transactions/TRX_ID?peer=peer1 \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json"
|
||||
```
|
||||
**NOTE**: Here the TRX_ID can be from any previous invoke transaction
|
||||
|
||||
|
||||
### Query ChainInfo
|
||||
|
||||
```
|
||||
curl -s -X GET \
|
||||
"http://localhost:4000/channels/mychannel?peer=peer1" \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json"
|
||||
```
|
||||
|
||||
### Query Installed chaincodes
|
||||
|
||||
```
|
||||
curl -s -X GET \
|
||||
"http://localhost:4000/chaincodes?peer=peer1&type=installed" \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json"
|
||||
```
|
||||
|
||||
### Query Instantiated chaincodes
|
||||
|
||||
```
|
||||
curl -s -X GET \
|
||||
"http://localhost:4000/chaincodes?peer=peer1&type=instantiated" \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json"
|
||||
```
|
||||
|
||||
### Query Channels
|
||||
|
||||
```
|
||||
curl -s -X GET \
|
||||
"http://localhost:4000/channels?peer=peer1" \
|
||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
||||
-H "content-type: application/json"
|
||||
```
|
||||
|
||||
### Network configuration considerations
|
||||
|
||||
You have the ability to change configuration parameters by editing the network-config.json file.
|
||||
|
||||
#### IP Address** and PORT information
|
||||
|
||||
If you choose to customize your docker-compose yaml file by hardcoding IP Addresses and PORT information for your peers and orderer, then you MUST also add the identical values into the network-config.json file. The paths shown below will need to be adjusted to match your docker-compose yaml file.
|
||||
|
||||
```
|
||||
"orderer": {
|
||||
"url": "grpcs://x.x.x.x:7050",
|
||||
"server-hostname": "orderer0",
|
||||
"tls_cacerts": "../artifacts/tls/orderer/ca-cert.pem"
|
||||
},
|
||||
"org1": {
|
||||
"ca": "http://x.x.x.x:7054",
|
||||
"peer1": {
|
||||
"requests": "grpcs://x.x.x.x:7051",
|
||||
"events": "grpcs://x.x.x.x:7053",
|
||||
...
|
||||
},
|
||||
"peer2": {
|
||||
"requests": "grpcs://x.x.x.x:7056",
|
||||
"events": "grpcs://x.x.x.x:7058",
|
||||
...
|
||||
}
|
||||
},
|
||||
"org2": {
|
||||
"ca": "http://x.x.x.x:8054",
|
||||
"peer1": {
|
||||
"requests": "grpcs://x.x.x.x:8051",
|
||||
"events": "grpcs://x.x.x.x:8053",
|
||||
... },
|
||||
"peer2": {
|
||||
"requests": "grpcs://x.x.x.x:8056",
|
||||
"events": "grpcs://x.x.x.x:8058",
|
||||
...
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Discover IP Address
|
||||
|
||||
To retrieve the IP Address for one of your network entities, issue the following command:
|
||||
|
||||
```
|
||||
# this will return the IP Address for peer0
|
||||
docker inspect peer0 | grep IPAddress
|
||||
```
|
||||
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
|
||||
425
balance-transfer/app.js
Normal file
425
balance-transfer/app.js
Normal file
|
|
@ -0,0 +1,425 @@
|
|||
/**
|
||||
* Copyright 2017 IBM All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the 'License');
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an 'AS IS' BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
'use strict';
|
||||
var log4js = require('log4js');
|
||||
var logger = log4js.getLogger('SampleWebApp');
|
||||
var express = require('express');
|
||||
var session = require('express-session');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
var http = require('http');
|
||||
var util = require('util');
|
||||
var app = express();
|
||||
var expressJWT = require('express-jwt');
|
||||
var jwt = require('jsonwebtoken');
|
||||
var bearerToken = require('express-bearer-token');
|
||||
var cors = require('cors');
|
||||
var config = require('./config.json');
|
||||
var helper = require('./app/helper.js');
|
||||
var channels = require('./app/create-channel.js');
|
||||
var join = require('./app/join-channel.js');
|
||||
var install = require('./app/install-chaincode.js');
|
||||
var instantiate = require('./app/instantiate-chaincode.js');
|
||||
var invoke = require('./app/invoke-transaction.js');
|
||||
var query = require('./app/query.js');
|
||||
var host = process.env.HOST || config.host;
|
||||
var port = process.env.PORT || config.port;
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////// SET CONFIGURATONS ////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
app.options('*', cors());
|
||||
app.use(cors());
|
||||
//support parsing of application/json type post data
|
||||
app.use(bodyParser.json());
|
||||
//support parsing of application/x-www-form-urlencoded post data
|
||||
app.use(bodyParser.urlencoded({
|
||||
extended: false
|
||||
}));
|
||||
// set secret variable
|
||||
app.set('secret', 'thisismysecret');
|
||||
app.use(expressJWT({
|
||||
secret: 'thisismysecret'
|
||||
}).unless({
|
||||
path: ['/users']
|
||||
}));
|
||||
app.use(bearerToken());
|
||||
app.use(function(req, res, next) {
|
||||
if (req.originalUrl.indexOf('/users') >= 0) {
|
||||
return next();
|
||||
}
|
||||
|
||||
var token = req.token;
|
||||
jwt.verify(token, app.get('secret'), function(err, decoded) {
|
||||
if (err) {
|
||||
res.send({
|
||||
success: false,
|
||||
message: 'Failed to authenticate token. Make sure to include the ' +
|
||||
'token returned from /users call in the authorization header ' +
|
||||
' as a Bearer token'
|
||||
});
|
||||
return;
|
||||
} else {
|
||||
// add the decoded user name and org name to the request object
|
||||
// for the downstream code to use
|
||||
req.username = decoded.username;
|
||||
req.orgname = decoded.orgName;
|
||||
logger.debug(util.format('Decoded from JWT token: username - %s, orgname - %s', decoded.username, decoded.orgName));
|
||||
return next();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////// START SERVER /////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
var server = http.createServer(app).listen(port, function() {});
|
||||
logger.info('****************** SERVER STARTED ************************');
|
||||
logger.info('************** http://' + host + ':' + port +
|
||||
' ******************');
|
||||
server.timeout = 240000;
|
||||
|
||||
function getErrorMessage(field) {
|
||||
var response = {
|
||||
success: false,
|
||||
message: field + ' field is missing or Invalid in the request'
|
||||
};
|
||||
return response;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////// REST ENDPOINTS START HERE ///////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Register and enroll user
|
||||
app.post('/users', function(req, res) {
|
||||
var username = req.body.username;
|
||||
var orgName = req.body.orgName;
|
||||
logger.debug('End point : /users');
|
||||
logger.debug('User name : ' + username);
|
||||
logger.debug('Org name : ' + orgName);
|
||||
if (!username) {
|
||||
res.json(getErrorMessage('\'username\''));
|
||||
return;
|
||||
}
|
||||
if (!orgName) {
|
||||
res.json(getErrorMessage('\'orgName\''));
|
||||
return;
|
||||
}
|
||||
var token = jwt.sign({
|
||||
exp: Math.floor(Date.now() / 1000) + parseInt(config.jwt_expiretime),
|
||||
username: username,
|
||||
orgName: orgName
|
||||
}, app.get('secret'));
|
||||
helper.getRegisteredUsers(username, orgName, true).then(function(response) {
|
||||
if (response && typeof response !== 'string') {
|
||||
response.token = token;
|
||||
res.json(response);
|
||||
} else {
|
||||
res.json({
|
||||
success: false,
|
||||
message: response
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
// Create Channel
|
||||
app.post('/channels', function(req, res) {
|
||||
logger.info('<<<<<<<<<<<<<<<<< C R E A T E C H A N N E L >>>>>>>>>>>>>>>>>');
|
||||
logger.debug('End point : /channels');
|
||||
var channelName = req.body.channelName;
|
||||
var channelConfigPath = req.body.channelConfigPath;
|
||||
logger.debug('Channel name : ' + channelName);
|
||||
logger.debug('channelConfigPath : ' + channelConfigPath); //../artifacts/channel/mychannel.tx
|
||||
if (!channelName) {
|
||||
res.json(getErrorMessage('\'channelName\''));
|
||||
return;
|
||||
}
|
||||
if (!channelConfigPath) {
|
||||
res.json(getErrorMessage('\'channelConfigPath\''));
|
||||
return;
|
||||
}
|
||||
|
||||
channels.createChannel(channelName, channelConfigPath, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Join Channel
|
||||
app.post('/channels/:channelName/peers', function(req, res) {
|
||||
logger.info('<<<<<<<<<<<<<<<<< J O I N C H A N N E L >>>>>>>>>>>>>>>>>');
|
||||
var channelName = req.params.channelName;
|
||||
var peers = req.body.peers;
|
||||
logger.debug('channelName : ' + channelName);
|
||||
logger.debug('peers : ' + peers);
|
||||
if (!channelName) {
|
||||
res.json(getErrorMessage('\'channelName\''));
|
||||
return;
|
||||
}
|
||||
if (!peers || peers.length == 0) {
|
||||
res.json(getErrorMessage('\'peers\''));
|
||||
return;
|
||||
}
|
||||
|
||||
join.joinChannel(channelName, peers, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Install chaincode on target peers
|
||||
app.post('/chaincodes', function(req, res) {
|
||||
logger.debug('==================== INSTALL CHAINCODE ==================');
|
||||
var peers = req.body.peers;
|
||||
var chaincodeName = req.body.chaincodeName;
|
||||
var chaincodePath = req.body.chaincodePath;
|
||||
var chaincodeVersion = req.body.chaincodeVersion;
|
||||
logger.debug('peers : ' + peers); // target peers list
|
||||
logger.debug('chaincodeName : ' + chaincodeName);
|
||||
logger.debug('chaincodePath : ' + chaincodePath);
|
||||
logger.debug('chaincodeVersion : ' + chaincodeVersion);
|
||||
if (!peers || peers.length == 0) {
|
||||
res.json(getErrorMessage('\'peers\''));
|
||||
return;
|
||||
}
|
||||
if (!chaincodeName) {
|
||||
res.json(getErrorMessage('\'chaincodeName\''));
|
||||
return;
|
||||
}
|
||||
if (!chaincodePath) {
|
||||
res.json(getErrorMessage('\'chaincodePath\''));
|
||||
return;
|
||||
}
|
||||
if (!chaincodeVersion) {
|
||||
res.json(getErrorMessage('\'chaincodeVersion\''));
|
||||
return;
|
||||
}
|
||||
|
||||
install.installChaincode(peers, chaincodeName, chaincodePath, chaincodeVersion, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Instantiate chaincode on target peers
|
||||
app.post('/channels/:channelName/chaincodes', function(req, res) {
|
||||
logger.debug('==================== INSTANTIATE CHAINCODE ==================');
|
||||
var chaincodeName = req.body.chaincodeName;
|
||||
var chaincodeVersion = req.body.chaincodeVersion;
|
||||
var channelName = req.params.channelName;
|
||||
var functionName = req.body.functionName;
|
||||
var args = req.body.args;
|
||||
logger.debug('channelName : ' + channelName);
|
||||
logger.debug('chaincodeName : ' + chaincodeName);
|
||||
logger.debug('chaincodeVersion : ' + chaincodeVersion);
|
||||
logger.debug('functionName : ' + functionName);
|
||||
logger.debug('args : ' + args);
|
||||
if (!chaincodeName) {
|
||||
res.json(getErrorMessage('\'chaincodeName\''));
|
||||
return;
|
||||
}
|
||||
if (!chaincodeVersion) {
|
||||
res.json(getErrorMessage('\'chaincodeVersion\''));
|
||||
return;
|
||||
}
|
||||
if (!channelName) {
|
||||
res.json(getErrorMessage('\'channelName\''));
|
||||
return;
|
||||
}
|
||||
if (!functionName) {
|
||||
res.json(getErrorMessage('\'functionName\''));
|
||||
return;
|
||||
}
|
||||
if (!args) {
|
||||
res.json(getErrorMessage('\'args\''));
|
||||
return;
|
||||
}
|
||||
instantiate.instantiateChaincode(channelName, chaincodeName, chaincodeVersion, functionName, args, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Invoke transaction on chaincode on target peers
|
||||
app.post('/channels/:channelName/chaincodes/:chaincodeName', function(req, res) {
|
||||
logger.debug('==================== INVOKE ON CHAINCODE ==================');
|
||||
var peers = req.body.peers;
|
||||
var chaincodeName = req.params.chaincodeName;
|
||||
var channelName = req.params.channelName;
|
||||
var fcn = req.body.fcn;
|
||||
var args = req.body.args;
|
||||
logger.debug('channelName : ' + channelName);
|
||||
logger.debug('chaincodeName : ' + chaincodeName);
|
||||
logger.debug('fcn : ' + fcn);
|
||||
logger.debug('args : ' + args);
|
||||
if (!peers || peers.length == 0) {
|
||||
res.json(getErrorMessage('\'peers\''));
|
||||
return;
|
||||
}
|
||||
if (!chaincodeName) {
|
||||
res.json(getErrorMessage('\'chaincodeName\''));
|
||||
return;
|
||||
}
|
||||
if (!channelName) {
|
||||
res.json(getErrorMessage('\'channelName\''));
|
||||
return;
|
||||
}
|
||||
if (!fcn) {
|
||||
res.json(getErrorMessage('\'fcn\''));
|
||||
return;
|
||||
}
|
||||
if (!args) {
|
||||
res.json(getErrorMessage('\'args\''));
|
||||
return;
|
||||
}
|
||||
|
||||
invoke.invokeChaincode(peers, channelName, chaincodeName, fcn, args, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Query on chaincode on target peers
|
||||
app.get('/channels/:channelName/chaincodes/:chaincodeName', function(req, res) {
|
||||
logger.debug('==================== QUERY BY CHAINCODE ==================');
|
||||
var channelName = req.params.channelName;
|
||||
var chaincodeName = req.params.chaincodeName;
|
||||
let args = req.query.args;
|
||||
let fcn = req.query.fcn;
|
||||
let peer = req.query.peer;
|
||||
|
||||
logger.debug('channelName : ' + channelName);
|
||||
logger.debug('chaincodeName : ' + chaincodeName);
|
||||
logger.debug('fcn : ' + fcn);
|
||||
logger.debug('args : ' + args);
|
||||
|
||||
if (!chaincodeName) {
|
||||
res.json(getErrorMessage('\'chaincodeName\''));
|
||||
return;
|
||||
}
|
||||
if (!channelName) {
|
||||
res.json(getErrorMessage('\'channelName\''));
|
||||
return;
|
||||
}
|
||||
if (!fcn) {
|
||||
res.json(getErrorMessage('\'fcn\''));
|
||||
return;
|
||||
}
|
||||
if (!args) {
|
||||
res.json(getErrorMessage('\'args\''));
|
||||
return;
|
||||
}
|
||||
args = args.replace(/'/g, '"');
|
||||
args = JSON.parse(args);
|
||||
logger.debug(args);
|
||||
|
||||
query.queryChaincode(peer, channelName, chaincodeName, args, fcn, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Query Get Block by BlockNumber
|
||||
app.get('/channels/:channelName/blocks/:blockId', function(req, res) {
|
||||
logger.debug('==================== GET BLOCK BY NUMBER ==================');
|
||||
let blockId = req.params.blockId;
|
||||
let peer = req.query.peer;
|
||||
logger.debug('channelName : ' + req.params.channelName);
|
||||
logger.debug('BlockID : ' + blockId);
|
||||
logger.debug('Peer : ' + peer);
|
||||
if (!blockId) {
|
||||
res.json(getErrorMessage('\'blockId\''));
|
||||
return;
|
||||
}
|
||||
|
||||
query.getBlockByNumber(peer, blockId, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Query Get Transaction by Transaction ID
|
||||
app.get('/channels/:channelName/transactions/:trxnId', function(req, res) {
|
||||
logger.debug(
|
||||
'================ GET TRANSACTION BY TRANSACTION_ID ======================'
|
||||
);
|
||||
logger.debug('channelName : ' + req.params.channelName);
|
||||
let trxnId = req.params.trxnId;
|
||||
let peer = req.query.peer;
|
||||
if (!trxnId) {
|
||||
res.json(getErrorMessage('\'trxnId\''));
|
||||
return;
|
||||
}
|
||||
|
||||
query.getTransactionByID(peer, trxnId, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Query Get Block by Hash
|
||||
app.get('/channels/:channelName/blocks', function(req, res) {
|
||||
logger.debug('================ GET BLOCK BY HASH ======================');
|
||||
logger.debug('channelName : ' + req.params.channelName);
|
||||
let hash = req.query.hash;
|
||||
let peer = req.query.peer;
|
||||
if (!hash) {
|
||||
res.json(getErrorMessage('\'hash\''));
|
||||
return;
|
||||
}
|
||||
|
||||
query.getBlockByHash(peer, hash, req.username, req.orgname).then(
|
||||
function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
//Query for Channel Information
|
||||
app.get('/channels/:channelName', function(req, res) {
|
||||
logger.debug(
|
||||
'================ GET CHANNEL INFORMATION ======================');
|
||||
logger.debug('channelName : ' + req.params.channelName);
|
||||
let peer = req.query.peer;
|
||||
|
||||
query.getChainInfo(peer, req.username, req.orgname).then(
|
||||
function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Query to fetch all Installed/instantiated chaincodes
|
||||
app.get('/chaincodes', function(req, res) {
|
||||
var peer = req.query.peer;
|
||||
var installType = req.query.type;
|
||||
//TODO: add Constnats
|
||||
if (installType === 'installed') {
|
||||
logger.debug(
|
||||
'================ GET INSTALLED CHAINCODES ======================');
|
||||
} else {
|
||||
logger.debug(
|
||||
'================ GET INSTANTIATED CHAINCODES ======================');
|
||||
}
|
||||
|
||||
query.getInstalledChaincodes(peer, installType, req.username, req.orgname)
|
||||
.then(function(message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
// Query to fetch channels
|
||||
app.get('/channels', function(req, res) {
|
||||
logger.debug('================ GET CHANNELS ======================');
|
||||
logger.debug('peer: ' + req.query.peer);
|
||||
var peer = req.query.peer;
|
||||
if (!peer) {
|
||||
res.json(getErrorMessage('\'peer\''));
|
||||
return;
|
||||
}
|
||||
|
||||
query.getChannels(peer, req.username, req.orgname)
|
||||
.then(function(
|
||||
message) {
|
||||
res.send(message);
|
||||
});
|
||||
});
|
||||
74
balance-transfer/app/create-channel.js
Normal file
74
balance-transfer/app/create-channel.js
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
/**
|
||||
* Copyright 2017 IBM All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the 'License');
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an 'AS IS' BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
var util = require('util');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var config = require('../config.json');
|
||||
var helper = require('./helper.js');
|
||||
var logger = helper.getLogger('Create-Channel');
|
||||
//Attempt to send a request to the orderer with the sendCreateChain method
|
||||
var createChannel = function(channelName, channelConfigPath, username, orgName) {
|
||||
logger.debug('\n====== Creating Channel \'' + channelName + '\' ======\n');
|
||||
var client = helper.getClientForOrg(orgName);
|
||||
var channel = helper.getChannelForOrg(orgName);
|
||||
|
||||
// read in the envelope for the channel config raw bytes
|
||||
var envelope = fs.readFileSync(path.join(__dirname, channelConfigPath));
|
||||
// extract the channel config bytes from the envelope to be signed
|
||||
var channelConfig = client.extractChannelConfig(envelope);
|
||||
|
||||
//Acting as a client in the given organization provided with "orgName" param
|
||||
return helper.getOrgAdmin(orgName).then((admin) => {
|
||||
logger.debug(util.format('Successfully acquired admin user for the organization "%s"', orgName));
|
||||
// sign the channel config bytes as "endorsement", this is required by
|
||||
// the orderer's channel creation policy
|
||||
let signature = client.signChannelConfig(channelConfig);
|
||||
|
||||
let request = {
|
||||
config: channelConfig,
|
||||
signatures: [signature],
|
||||
name: channelName,
|
||||
orderer: channel.getOrderers()[0],
|
||||
txId: client.newTransactionID()
|
||||
};
|
||||
|
||||
// send to orderer
|
||||
return client.createChannel(request);
|
||||
}, (err) => {
|
||||
logger.error('Failed to enroll user \''+username+'\'. Error: ' + err);
|
||||
throw new Error('Failed to enroll user \''+username+'\'' + err);
|
||||
}).then((response) => {
|
||||
logger.debug(' response ::%j', response);
|
||||
if (response && response.status === 'SUCCESS') {
|
||||
logger.debug('Successfully created the channel.');
|
||||
let response = {
|
||||
success: true,
|
||||
message: 'Channel \'' + channelName + '\' created Successfully'
|
||||
};
|
||||
return response;
|
||||
} else {
|
||||
logger.error('\n!!!!!!!!! Failed to create the channel \'' + channelName +
|
||||
'\' !!!!!!!!!\n\n');
|
||||
throw new Error('Failed to create the channel \'' + channelName + '\'');
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to initialize the channel: ' + err.stack ? err.stack :
|
||||
err);
|
||||
throw new Error('Failed to initialize the channel: ' + err.stack ? err.stack : err);
|
||||
});
|
||||
};
|
||||
|
||||
exports.createChannel = createChannel;
|
||||
352
balance-transfer/app/helper.js
Normal file
352
balance-transfer/app/helper.js
Normal file
|
|
@ -0,0 +1,352 @@
|
|||
/**
|
||||
* Copyright 2017 IBM All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the 'License');
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an 'AS IS' BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
'use strict';
|
||||
var log4js = require('log4js');
|
||||
var logger = log4js.getLogger('Helper');
|
||||
logger.setLevel('DEBUG');
|
||||
|
||||
var path = require('path');
|
||||
var util = require('util');
|
||||
var fs = require('fs-extra');
|
||||
var User = require('fabric-client/lib/User.js');
|
||||
var crypto = require('crypto');
|
||||
var copService = require('fabric-ca-client');
|
||||
var config = require('../config.json');
|
||||
|
||||
var hfc = require('fabric-client');
|
||||
hfc.addConfigFile(path.join(__dirname, 'network-config.json'));
|
||||
hfc.setLogger(logger);
|
||||
var ORGS = hfc.getConfigSetting('network-config');
|
||||
|
||||
var clients = {};
|
||||
var channels = {};
|
||||
var caClients = {};
|
||||
|
||||
// set up the client and channel objects for each org
|
||||
for (let key in ORGS) {
|
||||
if (key.indexOf('org') === 0) {
|
||||
let client = new hfc();
|
||||
|
||||
let cryptoSuite = hfc.newCryptoSuite();
|
||||
cryptoSuite.setCryptoKeyStore(hfc.newCryptoKeyStore({path: getKeyStoreForOrg(ORGS[key].name)}));
|
||||
client.setCryptoSuite(cryptoSuite);
|
||||
|
||||
let channel = client.newChannel(config.channelName);
|
||||
channel.addOrderer(newOrderer(client));
|
||||
|
||||
clients[key] = client;
|
||||
channels[key] = channel;
|
||||
|
||||
setupPeers(channel, key, client);
|
||||
|
||||
let caUrl = ORGS[key].ca;
|
||||
caClients[key] = new copService(caUrl, null /*defautl TLS opts*/, '' /* default CA */, cryptoSuite);
|
||||
}
|
||||
}
|
||||
|
||||
function setupPeers(channel, org, client) {
|
||||
for (let key in ORGS[org]) {
|
||||
if (key.indexOf('peer') === 0) {
|
||||
let data = fs.readFileSync(path.join(__dirname, ORGS[org][key]['tls_cacerts']));
|
||||
let peer = client.newPeer(
|
||||
ORGS[org][key].requests,
|
||||
{
|
||||
pem: Buffer.from(data).toString(),
|
||||
'ssl-target-name-override': ORGS[org][key]['server-hostname']
|
||||
}
|
||||
);
|
||||
|
||||
channel.addPeer(peer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function newOrderer(client) {
|
||||
var caRootsPath = ORGS.orderer.tls_cacerts;
|
||||
let data = fs.readFileSync(path.join(__dirname, caRootsPath));
|
||||
let caroots = Buffer.from(data).toString();
|
||||
return client.newOrderer(config.orderer, {
|
||||
'pem': caroots,
|
||||
'ssl-target-name-override': ORGS.orderer['server-hostname']
|
||||
});
|
||||
}
|
||||
|
||||
function readAllFiles(dir) {
|
||||
var files = fs.readdirSync(dir);
|
||||
var certs = [];
|
||||
files.forEach((file_name) => {
|
||||
let file_path = path.join(dir,file_name);
|
||||
let data = fs.readFileSync(file_path);
|
||||
certs.push(data);
|
||||
});
|
||||
return certs;
|
||||
}
|
||||
|
||||
function getOrgName(org) {
|
||||
return ORGS[org].name;
|
||||
}
|
||||
|
||||
function getKeyStoreForOrg(org) {
|
||||
return config.keyValueStore + '_' + org;
|
||||
}
|
||||
|
||||
function newRemotes(urls, forPeers, userOrg) {
|
||||
var targets = [];
|
||||
// find the peer that match the urls
|
||||
outer:
|
||||
for (let index in urls) {
|
||||
let peerUrl = urls[index];
|
||||
|
||||
let found = false;
|
||||
for (let key in ORGS) {
|
||||
if (key.indexOf('org') === 0) {
|
||||
// if looking for event hubs, an app can only connect to
|
||||
// event hubs in its own org
|
||||
if (!forPeers && key !== userOrg) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let org = ORGS[key];
|
||||
let client = getClientForOrg(key);
|
||||
|
||||
for (let prop in org) {
|
||||
if (prop.indexOf('peer') === 0) {
|
||||
if (org[prop]['requests'].indexOf(peerUrl) >= 0) {
|
||||
// found a peer matching the subject url
|
||||
if (forPeers) {
|
||||
let data = fs.readFileSync(path.join(__dirname, org[prop]['tls_cacerts']));
|
||||
targets.push(client.newPeer('grpcs://' + peerUrl, {
|
||||
pem: Buffer.from(data).toString(),
|
||||
'ssl-target-name-override': org[prop]['server-hostname']
|
||||
}));
|
||||
|
||||
continue outer;
|
||||
} else {
|
||||
let eh = client.newEventHub();
|
||||
let data = fs.readFileSync(path.join(__dirname, org[prop]['tls_cacerts']));
|
||||
eh.setPeerAddr(org[prop]['events'], {
|
||||
pem: Buffer.from(data).toString(),
|
||||
'ssl-target-name-override': org[prop]['server-hostname']
|
||||
});
|
||||
targets.push(eh);
|
||||
|
||||
continue outer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
logger.error(util.format('Failed to find a peer matching the url %s', peerUrl));
|
||||
}
|
||||
}
|
||||
|
||||
return targets;
|
||||
}
|
||||
|
||||
//-------------------------------------//
|
||||
// APIs
|
||||
//-------------------------------------//
|
||||
var getChannelForOrg = function(org) {
|
||||
return channels[org];
|
||||
};
|
||||
|
||||
var getClientForOrg = function(org) {
|
||||
return clients[org];
|
||||
};
|
||||
|
||||
var newPeers = function(urls) {
|
||||
return newRemotes(urls, true);
|
||||
};
|
||||
|
||||
var newEventHubs = function(urls, org) {
|
||||
return newRemotes(urls, false, org);
|
||||
};
|
||||
|
||||
var getMspID = function(org) {
|
||||
logger.debug('Msp ID : ' + ORGS[org].mspid);
|
||||
return ORGS[org].mspid;
|
||||
};
|
||||
|
||||
var getAdminUser = function(userOrg) {
|
||||
var users = config.users;
|
||||
var username = users[0].username;
|
||||
var password = users[0].secret;
|
||||
var member;
|
||||
var client = getClientForOrg(userOrg);
|
||||
|
||||
return hfc.newDefaultKeyValueStore({
|
||||
path: getKeyStoreForOrg(getOrgName(userOrg))
|
||||
}).then((store) => {
|
||||
client.setStateStore(store);
|
||||
// clearing the user context before switching
|
||||
client._userContext = null;
|
||||
return client.getUserContext(username, true).then((user) => {
|
||||
if (user && user.isEnrolled()) {
|
||||
logger.info('Successfully loaded member from persistence');
|
||||
return user;
|
||||
} else {
|
||||
let caClient = caClients[userOrg];
|
||||
// need to enroll it with CA server
|
||||
return caClient.enroll({
|
||||
enrollmentID: username,
|
||||
enrollmentSecret: password
|
||||
}).then((enrollment) => {
|
||||
logger.info('Successfully enrolled user \'' + username + '\'');
|
||||
member = new User(username);
|
||||
member.setCryptoSuite(client.getCryptoSuite());
|
||||
return member.setEnrollment(enrollment.key, enrollment.certificate, getMspID(userOrg));
|
||||
}).then(() => {
|
||||
return client.setUserContext(member);
|
||||
}).then(() => {
|
||||
return member;
|
||||
}).catch((err) => {
|
||||
logger.error('Failed to enroll and persist user. Error: ' + err.stack ?
|
||||
err.stack : err);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var getRegisteredUsers = function(username, userOrg, isJson) {
|
||||
var member;
|
||||
var client = getClientForOrg(userOrg);
|
||||
var enrollmentSecret = null;
|
||||
return hfc.newDefaultKeyValueStore({
|
||||
path: getKeyStoreForOrg(getOrgName(userOrg))
|
||||
}).then((store) => {
|
||||
client.setStateStore(store);
|
||||
// clearing the user context before switching
|
||||
client._userContext = null;
|
||||
return client.getUserContext(username, true).then((user) => {
|
||||
if (user && user.isEnrolled()) {
|
||||
logger.info('Successfully loaded member from persistence');
|
||||
return user;
|
||||
} else {
|
||||
let caClient = caClients[userOrg];
|
||||
return getAdminUser(userOrg).then(function(adminUserObj) {
|
||||
member = adminUserObj;
|
||||
return caClient.register({
|
||||
enrollmentID: username,
|
||||
affiliation: userOrg + '.department1'
|
||||
}, member);
|
||||
}).then((secret) => {
|
||||
enrollmentSecret = secret;
|
||||
logger.debug(username + ' registered successfully');
|
||||
return caClient.enroll({
|
||||
enrollmentID: username,
|
||||
enrollmentSecret: secret
|
||||
});
|
||||
}, (err) => {
|
||||
logger.debug(username + ' failed to register');
|
||||
return '' + err;
|
||||
//return 'Failed to register '+username+'. Error: ' + err.stack ? err.stack : err;
|
||||
}).then((message) => {
|
||||
if (message && typeof message === 'string' && message.includes(
|
||||
'Error:')) {
|
||||
logger.error(username + ' enrollment failed');
|
||||
return message;
|
||||
}
|
||||
logger.debug(username + ' enrolled successfully');
|
||||
|
||||
member = new User(username);
|
||||
member._enrollmentSecret = enrollmentSecret;
|
||||
return member.setEnrollment(message.key, message.certificate, getMspID(userOrg));
|
||||
}).then(() => {
|
||||
client.setUserContext(member);
|
||||
return member;
|
||||
}, (err) => {
|
||||
logger.error(util.format('%s enroll failed: %s', username, err.stack ? err.stack : err));
|
||||
return '' + err;
|
||||
});;
|
||||
}
|
||||
});
|
||||
}).then((user) => {
|
||||
if (isJson && isJson === true) {
|
||||
var response = {
|
||||
success: true,
|
||||
secret: user._enrollmentSecret,
|
||||
message: username + ' enrolled Successfully',
|
||||
};
|
||||
return response;
|
||||
}
|
||||
return user;
|
||||
}, (err) => {
|
||||
logger.error(util.format('Failed to get registered user: %s, error: %s', username, err.stack ? err.stack : err));
|
||||
return '' + err;
|
||||
});
|
||||
};
|
||||
|
||||
var getOrgAdmin = function(userOrg) {
|
||||
var admin = ORGS[userOrg].admin;
|
||||
var keyPath = path.join(__dirname, admin.key);
|
||||
var keyPEM = Buffer.from(readAllFiles(keyPath)[0]).toString();
|
||||
var certPath = path.join(__dirname, admin.cert);
|
||||
var certPEM = readAllFiles(certPath)[0].toString();
|
||||
|
||||
var client = getClientForOrg(userOrg);
|
||||
var cryptoSuite = hfc.newCryptoSuite();
|
||||
if (userOrg) {
|
||||
cryptoSuite.setCryptoKeyStore(hfc.newCryptoKeyStore({path: getKeyStoreForOrg(getOrgName(userOrg))}));
|
||||
client.setCryptoSuite(cryptoSuite);
|
||||
}
|
||||
|
||||
return hfc.newDefaultKeyValueStore({
|
||||
path: getKeyStoreForOrg(getOrgName(userOrg))
|
||||
}).then((store) => {
|
||||
client.setStateStore(store);
|
||||
|
||||
return client.createUser({
|
||||
username: 'peer'+userOrg+'Admin',
|
||||
mspid: getMspID(userOrg),
|
||||
cryptoContent: {
|
||||
privateKeyPEM: keyPEM,
|
||||
signedCertPEM: certPEM
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var setupChaincodeDeploy = function() {
|
||||
process.env.GOPATH = path.join(__dirname, config.GOPATH);
|
||||
};
|
||||
|
||||
var getLogger = function(moduleName) {
|
||||
var logger = log4js.getLogger(moduleName);
|
||||
logger.setLevel('DEBUG');
|
||||
return logger;
|
||||
};
|
||||
|
||||
var getPeerAddressByName = function(org, peer) {
|
||||
var address = ORGS[org][peer].requests;
|
||||
return address.split('grpcs://')[1];
|
||||
};
|
||||
|
||||
exports.getChannelForOrg = getChannelForOrg;
|
||||
exports.getClientForOrg = getClientForOrg;
|
||||
exports.getLogger = getLogger;
|
||||
exports.setupChaincodeDeploy = setupChaincodeDeploy;
|
||||
exports.getMspID = getMspID;
|
||||
exports.ORGS = ORGS;
|
||||
exports.newPeers = newPeers;
|
||||
exports.newEventHubs = newEventHubs;
|
||||
exports.getPeerAddressByName = getPeerAddressByName;
|
||||
exports.getRegisteredUsers = getRegisteredUsers;
|
||||
exports.getOrgAdmin = getOrgAdmin;
|
||||
79
balance-transfer/app/install-chaincode.js
Normal file
79
balance-transfer/app/install-chaincode.js
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/**
|
||||
* Copyright 2017 IBM All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
'use strict';
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var util = require('util');
|
||||
var config = require('../config.json');
|
||||
var helper = require('./helper.js');
|
||||
var logger = helper.getLogger('install-chaincode');
|
||||
var tx_id = null;
|
||||
//function installChaincode(org) {
|
||||
var installChaincode = function(peers, chaincodeName, chaincodePath,
|
||||
chaincodeVersion, username, org) {
|
||||
logger.debug(
|
||||
'\n============ Install chaincode on organizations ============\n');
|
||||
helper.setupChaincodeDeploy();
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
var client = helper.getClientForOrg(org);
|
||||
|
||||
return helper.getOrgAdmin(org).then((user) => {
|
||||
var request = {
|
||||
targets: helper.newPeers(peers),
|
||||
chaincodePath: chaincodePath,
|
||||
chaincodeId: chaincodeName,
|
||||
chaincodeVersion: chaincodeVersion
|
||||
};
|
||||
return client.installChaincode(request);
|
||||
}, (err) => {
|
||||
logger.error('Failed to enroll user \'' + username + '\'. ' + err);
|
||||
throw new Error('Failed to enroll user \'' + username + '\'. ' + err);
|
||||
}).then((results) => {
|
||||
var proposalResponses = results[0];
|
||||
var proposal = results[1];
|
||||
var all_good = true;
|
||||
for (var i in proposalResponses) {
|
||||
let one_good = false;
|
||||
if (proposalResponses && proposalResponses[0].response &&
|
||||
proposalResponses[0].response.status === 200) {
|
||||
one_good = true;
|
||||
logger.info('install proposal was good');
|
||||
} else {
|
||||
logger.error('install proposal was bad');
|
||||
}
|
||||
all_good = all_good & one_good;
|
||||
}
|
||||
if (all_good) {
|
||||
logger.info(util.format(
|
||||
'Successfully sent install Proposal and received ProposalResponse: Status - %s',
|
||||
proposalResponses[0].response.status));
|
||||
logger.debug('\nSuccessfully Installed chaincode on organization ' + org +
|
||||
'\n');
|
||||
return 'Successfully Installed chaincode on organization ' + org;
|
||||
} else {
|
||||
logger.error(
|
||||
'Failed to send install Proposal or receive valid response. Response null or status is not 200. exiting...'
|
||||
);
|
||||
return 'Failed to send install Proposal or receive valid response. Response null or status is not 200. exiting...';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send install proposal due to error: ' + err.stack ?
|
||||
err.stack : err);
|
||||
throw new Error('Failed to send install proposal due to error: ' + err.stack ?
|
||||
err.stack : err);
|
||||
});
|
||||
};
|
||||
exports.installChaincode = installChaincode;
|
||||
160
balance-transfer/app/instantiate-chaincode.js
Normal file
160
balance-transfer/app/instantiate-chaincode.js
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
/**
|
||||
* Copyright 2017 IBM All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
'use strict';
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var util = require('util');
|
||||
var hfc = require('fabric-client');
|
||||
var Peer = require('fabric-client/lib/Peer.js');
|
||||
var EventHub = require('fabric-client/lib/EventHub.js');
|
||||
var config = require('../config.json');
|
||||
var helper = require('./helper.js');
|
||||
var logger = helper.getLogger('instantiate-chaincode');
|
||||
hfc.addConfigFile(path.join(__dirname, 'network-config.json'));
|
||||
var ORGS = hfc.getConfigSetting('network-config');
|
||||
var tx_id = null;
|
||||
var eh = null;
|
||||
|
||||
var instantiateChaincode = function(channelName, chaincodeName, chaincodeVersion, functionName, args, username, org) {
|
||||
logger.debug('\n============ Instantiate chaincode on organization ' + org +
|
||||
' ============\n');
|
||||
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
var client = helper.getClientForOrg(org);
|
||||
|
||||
return helper.getOrgAdmin(org).then((user) => {
|
||||
// read the config block from the orderer for the channel
|
||||
// and initialize the verify MSPs based on the participating
|
||||
// organizations
|
||||
return channel.initialize();
|
||||
}, (err) => {
|
||||
logger.error('Failed to enroll user \'' + username + '\'. ' + err);
|
||||
throw new Error('Failed to enroll user \'' + username + '\'. ' + err);
|
||||
}).then((success) => {
|
||||
tx_id = client.newTransactionID();
|
||||
// send proposal to endorser
|
||||
var request = {
|
||||
chaincodeId: chaincodeName,
|
||||
chaincodeVersion: chaincodeVersion,
|
||||
fcn: functionName,
|
||||
args: args,
|
||||
txId: tx_id
|
||||
};
|
||||
return channel.sendInstantiateProposal(request);
|
||||
}, (err) => {
|
||||
logger.error('Failed to initialize the channel');
|
||||
throw new Error('Failed to initialize the channel');
|
||||
}).then((results) => {
|
||||
var proposalResponses = results[0];
|
||||
var proposal = results[1];
|
||||
var all_good = true;
|
||||
for (var i in proposalResponses) {
|
||||
let one_good = false;
|
||||
if (proposalResponses && proposalResponses[0].response &&
|
||||
proposalResponses[0].response.status === 200) {
|
||||
one_good = true;
|
||||
logger.info('instantiate proposal was good');
|
||||
} else {
|
||||
logger.error('instantiate proposal was bad');
|
||||
}
|
||||
all_good = all_good & one_good;
|
||||
}
|
||||
if (all_good) {
|
||||
logger.info(util.format(
|
||||
'Successfully sent Proposal and received ProposalResponse: Status - %s, message - "%s", metadata - "%s", endorsement signature: %s',
|
||||
proposalResponses[0].response.status, proposalResponses[0].response.message,
|
||||
proposalResponses[0].response.payload, proposalResponses[0].endorsement
|
||||
.signature));
|
||||
var request = {
|
||||
proposalResponses: proposalResponses,
|
||||
proposal: proposal
|
||||
};
|
||||
// set the transaction listener and set a timeout of 30sec
|
||||
// if the transaction did not get committed within the timeout period,
|
||||
// fail the test
|
||||
var deployId = tx_id.getTransactionID();
|
||||
|
||||
eh = client.newEventHub();
|
||||
let data = fs.readFileSync(path.join(__dirname, ORGS[org]['peer1'][
|
||||
'tls_cacerts'
|
||||
]));
|
||||
eh.setPeerAddr(ORGS[org]['peer1']['events'], {
|
||||
pem: Buffer.from(data).toString(),
|
||||
'ssl-target-name-override': ORGS[org]['peer1']['server-hostname']
|
||||
});
|
||||
eh.connect();
|
||||
|
||||
let txPromise = new Promise((resolve, reject) => {
|
||||
let handle = setTimeout(() => {
|
||||
eh.disconnect();
|
||||
reject();
|
||||
}, 30000);
|
||||
|
||||
eh.registerTxEvent(deployId, (tx, code) => {
|
||||
logger.info(
|
||||
'The chaincode instantiate transaction has been committed on peer ' +
|
||||
eh._ep._endpoint.addr);
|
||||
clearTimeout(handle);
|
||||
eh.unregisterTxEvent(deployId);
|
||||
eh.disconnect();
|
||||
|
||||
if (code !== 'VALID') {
|
||||
logger.error('The chaincode instantiate transaction was invalid, code = ' + code);
|
||||
reject();
|
||||
} else {
|
||||
logger.info('The chaincode instantiate transaction was valid.');
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var sendPromise = channel.sendTransaction(request);
|
||||
return Promise.all([sendPromise].concat([txPromise])).then((results) => {
|
||||
logger.debug('Event promise all complete and testing complete');
|
||||
return results[0]; // the first returned value is from the 'sendPromise' which is from the 'sendTransaction()' call
|
||||
}).catch((err) => {
|
||||
logger.error(
|
||||
util.format('Failed to send instantiate transaction and get notifications within the timeout period. %s', err)
|
||||
);
|
||||
return 'Failed to send instantiate transaction and get notifications within the timeout period.';
|
||||
});
|
||||
} else {
|
||||
logger.error(
|
||||
'Failed to send instantiate Proposal or receive valid response. Response null or status is not 200. exiting...'
|
||||
);
|
||||
return 'Failed to send instantiate Proposal or receive valid response. Response null or status is not 200. exiting...';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send instantiate proposal due to error: ' + err.stack ?
|
||||
err.stack : err);
|
||||
return 'Failed to send instantiate proposal due to error: ' + err.stack ?
|
||||
err.stack : err;
|
||||
}).then((response) => {
|
||||
if (response.status === 'SUCCESS') {
|
||||
logger.info('Successfully sent transaction to the orderer.');
|
||||
return 'Chaincode Instantiateion is SUCCESS';
|
||||
} else {
|
||||
logger.error('Failed to order the transaction. Error code: ' + response.status);
|
||||
return 'Failed to order the transaction. Error code: ' + response.status;
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send instantiate due to error: ' + err.stack ? err
|
||||
.stack : err);
|
||||
return 'Failed to send instantiate due to error: ' + err.stack ? err.stack :
|
||||
err;
|
||||
});
|
||||
};
|
||||
exports.instantiateChaincode = instantiateChaincode;
|
||||
150
balance-transfer/app/invoke-transaction.js
Normal file
150
balance-transfer/app/invoke-transaction.js
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
/**
|
||||
* Copyright 2017 IBM All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
'use strict';
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var util = require('util');
|
||||
var hfc = require('fabric-client');
|
||||
var Peer = require('fabric-client/lib/Peer.js');
|
||||
var config = require('../config.json');
|
||||
var helper = require('./helper.js');
|
||||
var logger = helper.getLogger('invoke-chaincode');
|
||||
var EventHub = require('fabric-client/lib/EventHub.js');
|
||||
hfc.addConfigFile(path.join(__dirname, 'network-config.json'));
|
||||
var ORGS = hfc.getConfigSetting('network-config');
|
||||
|
||||
var invokeChaincode = function(peersUrls, channelName, chaincodeName, fcn, args, username, org) {
|
||||
logger.debug(util.format('\n============ invoke transaction on organization %s ============\n', org));
|
||||
var client = helper.getClientForOrg(org);
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
var targets = helper.newPeers(peersUrls);
|
||||
var tx_id = null;
|
||||
|
||||
return helper.getRegisteredUsers(username, org).then((user) => {
|
||||
tx_id = client.newTransactionID();
|
||||
logger.debug(util.format('Sending transaction "%j"', tx_id));
|
||||
// send proposal to endorser
|
||||
var request = {
|
||||
targets: targets,
|
||||
chaincodeId: chaincodeName,
|
||||
fcn: fcn,
|
||||
args: args,
|
||||
chainId: channelName,
|
||||
txId: tx_id
|
||||
};
|
||||
return channel.sendTransactionProposal(request);
|
||||
}, (err) => {
|
||||
logger.error('Failed to enroll user \'' + username + '\'. ' + err);
|
||||
throw new Error('Failed to enroll user \'' + username + '\'. ' + err);
|
||||
}).then((results) => {
|
||||
var proposalResponses = results[0];
|
||||
var proposal = results[1];
|
||||
var all_good = true;
|
||||
for (var i in proposalResponses) {
|
||||
let one_good = false;
|
||||
if (proposalResponses && proposalResponses[0].response &&
|
||||
proposalResponses[0].response.status === 200) {
|
||||
one_good = true;
|
||||
logger.info('transaction proposal was good');
|
||||
} else {
|
||||
logger.error('transaction proposal was bad');
|
||||
}
|
||||
all_good = all_good & one_good;
|
||||
}
|
||||
if (all_good) {
|
||||
logger.debug(util.format(
|
||||
'Successfully sent Proposal and received ProposalResponse: Status - %s, message - "%s", metadata - "%s", endorsement signature: %s',
|
||||
proposalResponses[0].response.status, proposalResponses[0].response.message,
|
||||
proposalResponses[0].response.payload, proposalResponses[0].endorsement
|
||||
.signature));
|
||||
var request = {
|
||||
proposalResponses: proposalResponses,
|
||||
proposal: proposal
|
||||
};
|
||||
// set the transaction listener and set a timeout of 30sec
|
||||
// if the transaction did not get committed within the timeout period,
|
||||
// fail the test
|
||||
var transactionID = tx_id.getTransactionID();
|
||||
var eventPromises = [];
|
||||
|
||||
var eventhubs = helper.newEventHubs(peersUrls, org);
|
||||
for (let key in eventhubs) {
|
||||
let eh = eventhubs[key];
|
||||
eh.connect();
|
||||
|
||||
let txPromise = new Promise((resolve, reject) => {
|
||||
let handle = setTimeout(() => {
|
||||
eh.disconnect();
|
||||
reject();
|
||||
}, 30000);
|
||||
|
||||
eh.registerTxEvent(transactionID, (tx, code) => {
|
||||
clearTimeout(handle);
|
||||
eh.unregisterTxEvent(transactionID);
|
||||
eh.disconnect();
|
||||
|
||||
if (code !== 'VALID') {
|
||||
logger.error(
|
||||
'The balance transfer transaction was invalid, code = ' + code);
|
||||
reject();
|
||||
} else {
|
||||
logger.info(
|
||||
'The balance transfer transaction has been committed on peer ' +
|
||||
eh._ep._endpoint.addr);
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
eventPromises.push(txPromise);
|
||||
};
|
||||
var sendPromise = channel.sendTransaction(request);
|
||||
return Promise.all([sendPromise].concat(eventPromises)).then((results) => {
|
||||
logger.debug(' event promise all complete and testing complete');
|
||||
return results[0]; // the first returned value is from the 'sendPromise' which is from the 'sendTransaction()' call
|
||||
}).catch((err) => {
|
||||
logger.error(
|
||||
'Failed to send transaction and get notifications within the timeout period.'
|
||||
);
|
||||
return 'Failed to send transaction and get notifications within the timeout period.';
|
||||
});
|
||||
} else {
|
||||
logger.error(
|
||||
'Failed to send Proposal or receive valid response. Response null or status is not 200. exiting...'
|
||||
);
|
||||
return 'Failed to send Proposal or receive valid response. Response null or status is not 200. exiting...';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send proposal due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to send proposal due to error: ' + err.stack ? err.stack :
|
||||
err;
|
||||
}).then((response) => {
|
||||
if (response.status === 'SUCCESS') {
|
||||
logger.info('Successfully sent transaction to the orderer.');
|
||||
return tx_id.getTransactionID();
|
||||
} else {
|
||||
logger.error('Failed to order the transaction. Error code: ' + response.status);
|
||||
return 'Failed to order the transaction. Error code: ' + response.status;
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send transaction due to error: ' + err.stack ? err
|
||||
.stack : err);
|
||||
return 'Failed to send transaction due to error: ' + err.stack ? err.stack :
|
||||
err;
|
||||
});
|
||||
};
|
||||
|
||||
exports.invokeChaincode = invokeChaincode;
|
||||
150
balance-transfer/app/join-channel.js
Normal file
150
balance-transfer/app/join-channel.js
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
/**
|
||||
* Copyright 2017 IBM All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the 'License');
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an 'AS IS' BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
var util = require('util');
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
|
||||
var Peer = require('fabric-client/lib/Peer.js');
|
||||
var EventHub = require('fabric-client/lib/EventHub.js');
|
||||
var tx_id = null;
|
||||
var nonce = null;
|
||||
var config = require('../config.json');
|
||||
var helper = require('./helper.js');
|
||||
var logger = helper.getLogger('Join-Channel');
|
||||
//helper.hfc.addConfigFile(path.join(__dirname, 'network-config.json'));
|
||||
var ORGS = helper.ORGS;
|
||||
var allEventhubs = [];
|
||||
|
||||
//
|
||||
//Attempt to send a request to the orderer with the sendCreateChain method
|
||||
//
|
||||
var joinChannel = function(channelName, peers, username, org) {
|
||||
// on process exit, always disconnect the event hub
|
||||
var closeConnections = function(isSuccess) {
|
||||
if (isSuccess) {
|
||||
logger.debug('\n============ Join Channel is SUCCESS ============\n');
|
||||
} else {
|
||||
logger.debug('\n!!!!!!!! ERROR: Join Channel FAILED !!!!!!!!\n');
|
||||
}
|
||||
logger.debug('');
|
||||
for (var key in allEventhubs) {
|
||||
var eventhub = allEventhubs[key];
|
||||
if (eventhub && eventhub.isconnected()) {
|
||||
//logger.debug('Disconnecting the event hub');
|
||||
eventhub.disconnect();
|
||||
}
|
||||
}
|
||||
};
|
||||
//logger.debug('\n============ Join Channel ============\n')
|
||||
logger.info(util.format(
|
||||
'Calling peers in organization "%s" to join the channel', org));
|
||||
|
||||
var client = helper.getClientForOrg(org);
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
var eventhubs = [];
|
||||
|
||||
return helper.getOrgAdmin(org).then((admin) => {
|
||||
logger.info(util.format('received member object for admin of the organization "%s": ', org));
|
||||
tx_id = client.newTransactionID();
|
||||
let request = {
|
||||
txId : tx_id
|
||||
};
|
||||
|
||||
return channel.getGenesisBlock(request);
|
||||
}).then((genesis_block) => {
|
||||
tx_id = client.newTransactionID();
|
||||
var request = {
|
||||
targets: helper.newPeers(peers),
|
||||
txId: tx_id,
|
||||
block: genesis_block
|
||||
};
|
||||
|
||||
for (let key in ORGS[org]) {
|
||||
if (ORGS[org].hasOwnProperty(key)) {
|
||||
if (key.indexOf('peer') === 0) {
|
||||
let data = fs.readFileSync(path.join(__dirname, ORGS[org][key][
|
||||
'tls_cacerts'
|
||||
]));
|
||||
let eh = client.newEventHub();
|
||||
eh.setPeerAddr(ORGS[org][key].events, {
|
||||
pem: Buffer.from(data).toString(),
|
||||
'ssl-target-name-override': ORGS[org][key]['server-hostname']
|
||||
});
|
||||
eh.connect();
|
||||
eventhubs.push(eh);
|
||||
allEventhubs.push(eh);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var eventPromises = [];
|
||||
eventhubs.forEach((eh) => {
|
||||
let txPromise = new Promise((resolve, reject) => {
|
||||
let handle = setTimeout(reject, parseInt(config.eventWaitTime));
|
||||
eh.registerBlockEvent((block) => {
|
||||
clearTimeout(handle);
|
||||
// in real-world situations, a peer may have more than one channels so
|
||||
// we must check that this block came from the channel we asked the peer to join
|
||||
if (block.data.data.length === 1) {
|
||||
// Config block must only contain one transaction
|
||||
var channel_header = block.data.data[0].payload.header.channel_header;
|
||||
if (channel_header.channel_id === channelName) {
|
||||
resolve();
|
||||
}
|
||||
else {
|
||||
reject();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
eventPromises.push(txPromise);
|
||||
});
|
||||
let sendPromise = channel.joinChannel(request);
|
||||
return Promise.all([sendPromise].concat(eventPromises));
|
||||
}, (err) => {
|
||||
logger.error('Failed to enroll user \'' + username + '\' due to error: ' +
|
||||
err.stack ? err.stack : err);
|
||||
throw new Error('Failed to enroll user \'' + username +
|
||||
'\' due to error: ' + err.stack ? err.stack : err);
|
||||
}).then((results) => {
|
||||
logger.debug(util.format('Join Channel R E S P O N S E : %j', results));
|
||||
if (results[0] && results[0][0] && results[0][0].response && results[0][0]
|
||||
.response.status == 200) {
|
||||
logger.info(util.format(
|
||||
'Successfully joined peers in organization %s to the channel \'%s\'',
|
||||
org, channelName));
|
||||
closeConnections(true);
|
||||
let response = {
|
||||
success: true,
|
||||
message: util.format(
|
||||
'Successfully joined peers in organization %s to the channel \'%s\'',
|
||||
org, channelName)
|
||||
};
|
||||
return response;
|
||||
} else {
|
||||
logger.error(' Failed to join channel');
|
||||
closeConnections();
|
||||
throw new Error('Failed to join channel');
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to join channel due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
closeConnections();
|
||||
throw new Error('Failed to join channel due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
});
|
||||
};
|
||||
exports.joinChannel = joinChannel;
|
||||
51
balance-transfer/app/network-config.json
Normal file
51
balance-transfer/app/network-config.json
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"network-config": {
|
||||
"orderer": {
|
||||
"url": "grpcs://localhost:7050",
|
||||
"server-hostname": "orderer.example.com",
|
||||
"tls_cacerts": "../artifacts/channel/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt"
|
||||
},
|
||||
"org1": {
|
||||
"name": "peerOrg1",
|
||||
"mspid": "Org1MSP",
|
||||
"ca": "https://localhost:7054",
|
||||
"peer1": {
|
||||
"requests": "grpcs://localhost:7051",
|
||||
"events": "grpcs://localhost:7053",
|
||||
"server-hostname": "peer0.org1.example.com",
|
||||
"tls_cacerts": "../artifacts/channel/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
|
||||
},
|
||||
"peer2": {
|
||||
"requests": "grpcs://localhost:7056",
|
||||
"events": "grpcs://localhost:7058",
|
||||
"server-hostname": "peer1.org1.example.com",
|
||||
"tls_cacerts": "../artifacts/channel/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt"
|
||||
},
|
||||
"admin": {
|
||||
"key": "../artifacts/channel/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore",
|
||||
"cert": "../artifacts/channel/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts"
|
||||
}
|
||||
},
|
||||
"org2": {
|
||||
"name": "peerOrg2",
|
||||
"mspid": "Org2MSP",
|
||||
"ca": "https://localhost:8054",
|
||||
"peer1": {
|
||||
"requests": "grpcs://localhost:8051",
|
||||
"events": "grpcs://localhost:8053",
|
||||
"server-hostname": "peer0.org2.example.com",
|
||||
"tls_cacerts": "../artifacts/channel/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt"
|
||||
},
|
||||
"peer2": {
|
||||
"requests": "grpcs://localhost:8056",
|
||||
"events": "grpcs://localhost:8058",
|
||||
"server-hostname": "peer1.org2.example.com",
|
||||
"tls_cacerts": "../artifacts/channel/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt"
|
||||
},
|
||||
"admin": {
|
||||
"key": "../artifacts/channel/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore",
|
||||
"cert": "../artifacts/channel/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
277
balance-transfer/app/query.js
Normal file
277
balance-transfer/app/query.js
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
/**
|
||||
* Copyright 2017 IBM All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var util = require('util');
|
||||
var hfc = require('fabric-client');
|
||||
var Peer = require('fabric-client/lib/Peer.js');
|
||||
var EventHub = require('fabric-client/lib/EventHub.js');
|
||||
var config = require('../config.json');
|
||||
var helper = require('./helper.js');
|
||||
var logger = helper.getLogger('Query');
|
||||
|
||||
var queryChaincode = function(peer, channelName, chaincodeName, args, fcn, username, org) {
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
var client = helper.getClientForOrg(org);
|
||||
var target = buildTarget(peer, org);
|
||||
return helper.getRegisteredUsers(username, org).then((user) => {
|
||||
tx_id = client.newTransactionID();
|
||||
// send query
|
||||
var request = {
|
||||
chaincodeId: chaincodeName,
|
||||
txId: tx_id,
|
||||
fcn: fcn,
|
||||
args: args
|
||||
};
|
||||
return channel.queryByChaincode(request, target);
|
||||
}, (err) => {
|
||||
logger.info('Failed to get submitter \''+username+'\'');
|
||||
return 'Failed to get submitter \''+username+'\'. Error: ' + err.stack ? err.stack :
|
||||
err;
|
||||
}).then((response_payloads) => {
|
||||
if (response_payloads) {
|
||||
for (let i = 0; i < response_payloads.length; i++) {
|
||||
logger.info(args[0]+' now has ' + response_payloads[i].toString('utf8') +
|
||||
' after the move');
|
||||
return args[0]+' now has ' + response_payloads[i].toString('utf8') +
|
||||
' after the move';
|
||||
}
|
||||
} else {
|
||||
logger.error('response_payloads is null');
|
||||
return 'response_payloads is null';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send query due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to send query due to error: ' + err.stack ? err.stack : err;
|
||||
}).catch((err) => {
|
||||
logger.error('Failed to end to end test with error:' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to end to end test with error:' + err.stack ? err.stack :
|
||||
err;
|
||||
});
|
||||
};
|
||||
var getBlockByNumber = function(peer, blockNumber, username, org) {
|
||||
var target = buildTarget(peer, org);
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
|
||||
return helper.getRegisteredUsers(username, org).then((member) => {
|
||||
return channel.queryBlock(parseInt(blockNumber), target);
|
||||
}, (err) => {
|
||||
logger.info('Failed to get submitter "' + username + '"');
|
||||
return 'Failed to get submitter "' + username + '". Error: ' + err.stack ?
|
||||
err.stack : err;
|
||||
}).then((response_payloads) => {
|
||||
if (response_payloads) {
|
||||
//logger.debug(response_payloads);
|
||||
logger.debug(response_payloads);
|
||||
return response_payloads; //response_payloads.data.data[0].buffer;
|
||||
} else {
|
||||
logger.error('response_payloads is null');
|
||||
return 'response_payloads is null';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send query due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to send query due to error: ' + err.stack ? err.stack : err;
|
||||
}).catch((err) => {
|
||||
logger.error('Failed to query with error:' + err.stack ? err.stack : err);
|
||||
return 'Failed to query with error:' + err.stack ? err.stack : err;
|
||||
});
|
||||
};
|
||||
var getTransactionByID = function(peer, trxnID, username, org) {
|
||||
var target = buildTarget(peer, org);
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
|
||||
return helper.getRegisteredUsers(username, org).then((member) => {
|
||||
return channel.queryTransaction(trxnID, target);
|
||||
}, (err) => {
|
||||
logger.info('Failed to get submitter "' + username + '"');
|
||||
return 'Failed to get submitter "' + username + '". Error: ' + err.stack ?
|
||||
err.stack : err;
|
||||
}).then((response_payloads) => {
|
||||
if (response_payloads) {
|
||||
logger.debug(response_payloads);
|
||||
return response_payloads;
|
||||
} else {
|
||||
logger.error('response_payloads is null');
|
||||
return 'response_payloads is null';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send query due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to send query due to error: ' + err.stack ? err.stack : err;
|
||||
}).catch((err) => {
|
||||
logger.error('Failed to query with error:' + err.stack ? err.stack : err);
|
||||
return 'Failed to query with error:' + err.stack ? err.stack : err;
|
||||
});
|
||||
};
|
||||
var getBlockByHash = function(peer, hash, username, org) {
|
||||
var target = buildTarget(peer, org);
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
|
||||
return helper.getRegisteredUsers(username, org).then((member) => {
|
||||
return channel.queryBlockByHash(Buffer.from(hash), target);
|
||||
}, (err) => {
|
||||
logger.info('Failed to get submitter "' + username + '"');
|
||||
return 'Failed to get submitter "' + username + '". Error: ' + err.stack ?
|
||||
err.stack : err;
|
||||
}).then((response_payloads) => {
|
||||
if (response_payloads) {
|
||||
logger.debug(response_payloads);
|
||||
return response_payloads;
|
||||
} else {
|
||||
logger.error('response_payloads is null');
|
||||
return 'response_payloads is null';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send query due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to send query due to error: ' + err.stack ? err.stack : err;
|
||||
}).catch((err) => {
|
||||
logger.error('Failed to query with error:' + err.stack ? err.stack : err);
|
||||
return 'Failed to query with error:' + err.stack ? err.stack : err;
|
||||
});
|
||||
};
|
||||
var getChainInfo = function(peer, username, org) {
|
||||
var target = buildTarget(peer, org);
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
|
||||
return helper.getRegisteredUsers(username, org).then((member) => {
|
||||
return channel.queryInfo(target);
|
||||
}, (err) => {
|
||||
logger.info('Failed to get submitter "' + username + '"');
|
||||
return 'Failed to get submitter "' + username + '". Error: ' + err.stack ?
|
||||
err.stack : err;
|
||||
}).then((blockchainInfo) => {
|
||||
if (blockchainInfo) {
|
||||
// FIXME: Save this for testing 'getBlockByHash' ?
|
||||
logger.debug('===========================================');
|
||||
logger.debug(blockchainInfo.currentBlockHash);
|
||||
logger.debug('===========================================');
|
||||
//logger.debug(blockchainInfo);
|
||||
return blockchainInfo;
|
||||
} else {
|
||||
logger.error('response_payloads is null');
|
||||
return 'response_payloads is null';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send query due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to send query due to error: ' + err.stack ? err.stack : err;
|
||||
}).catch((err) => {
|
||||
logger.error('Failed to query with error:' + err.stack ? err.stack : err);
|
||||
return 'Failed to query with error:' + err.stack ? err.stack : err;
|
||||
});
|
||||
};
|
||||
//getInstalledChaincodes
|
||||
var getInstalledChaincodes = function(peer, type, username, org) {
|
||||
var target = buildTarget(peer, org);
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
var client = helper.getClientForOrg(org);
|
||||
|
||||
return helper.getOrgAdmin(org).then((member) => {
|
||||
if (type === 'installed') {
|
||||
return client.queryInstalledChaincodes(target);
|
||||
} else {
|
||||
return channel.queryInstantiatedChaincodes(target);
|
||||
}
|
||||
}, (err) => {
|
||||
logger.info('Failed to get submitter "' + username + '"');
|
||||
return 'Failed to get submitter "' + username + '". Error: ' + err.stack ?
|
||||
err.stack : err;
|
||||
}).then((response) => {
|
||||
if (response) {
|
||||
if (type === 'installed') {
|
||||
logger.debug('<<< Installed Chaincodes >>>');
|
||||
} else {
|
||||
logger.debug('<<< Instantiated Chaincodes >>>');
|
||||
}
|
||||
var details = [];
|
||||
for (let i = 0; i < response.chaincodes.length; i++) {
|
||||
logger.debug('name: ' + response.chaincodes[i].name + ', version: ' +
|
||||
response.chaincodes[i].version + ', path: ' + response.chaincodes[i].path
|
||||
);
|
||||
details.push('name: ' + response.chaincodes[i].name + ', version: ' +
|
||||
response.chaincodes[i].version + ', path: ' + response.chaincodes[i].path
|
||||
);
|
||||
}
|
||||
return details;
|
||||
} else {
|
||||
logger.error('response is null');
|
||||
return 'response is null';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send query due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to send query due to error: ' + err.stack ? err.stack : err;
|
||||
}).catch((err) => {
|
||||
logger.error('Failed to query with error:' + err.stack ? err.stack : err);
|
||||
return 'Failed to query with error:' + err.stack ? err.stack : err;
|
||||
});
|
||||
};
|
||||
var getChannels = function(peer, username, org) {
|
||||
var target = buildTarget(peer, org);
|
||||
var channel = helper.getChannelForOrg(org);
|
||||
var client = helper.getClientForOrg(org);
|
||||
|
||||
return helper.getRegisteredUsers(username, org).then((member) => {
|
||||
//channel.setPrimaryPeer(targets[0]);
|
||||
return client.queryChannels(target);
|
||||
}, (err) => {
|
||||
logger.info('Failed to get submitter "' + username + '"');
|
||||
return 'Failed to get submitter "' + username + '". Error: ' + err.stack ?
|
||||
err.stack : err;
|
||||
}).then((response) => {
|
||||
if (response) {
|
||||
logger.debug('<<< channels >>>');
|
||||
var channelNames = [];
|
||||
for (let i = 0; i < response.channels.length; i++) {
|
||||
channelNames.push('channel id: ' + response.channels[i].channel_id);
|
||||
}
|
||||
logger.debug(channelNames);
|
||||
return response;
|
||||
} else {
|
||||
logger.error('response_payloads is null');
|
||||
return 'response_payloads is null';
|
||||
}
|
||||
}, (err) => {
|
||||
logger.error('Failed to send query due to error: ' + err.stack ? err.stack :
|
||||
err);
|
||||
return 'Failed to send query due to error: ' + err.stack ? err.stack : err;
|
||||
}).catch((err) => {
|
||||
logger.error('Failed to query with error:' + err.stack ? err.stack : err);
|
||||
return 'Failed to query with error:' + err.stack ? err.stack : err;
|
||||
});
|
||||
};
|
||||
|
||||
function buildTarget(peer, org) {
|
||||
var target = null;
|
||||
if (typeof peer !== 'undefined') {
|
||||
let targets = helper.newPeers([helper.getPeerAddressByName(org, peer)]);
|
||||
if (targets && targets.length > 0) target = targets[0];
|
||||
}
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
exports.queryChaincode = queryChaincode;
|
||||
exports.getBlockByNumber = getBlockByNumber;
|
||||
exports.getTransactionByID = getTransactionByID;
|
||||
exports.getBlockByHash = getBlockByHash;
|
||||
exports.getChainInfo = getChainInfo;
|
||||
exports.getInstalledChaincodes = getInstalledChaincodes;
|
||||
exports.getChannels = getChannels;
|
||||
30
balance-transfer/artifacts/base.yaml
Normal file
30
balance-transfer/artifacts/base.yaml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Copyright IBM Corp. All Rights Reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
version: '2'
|
||||
services:
|
||||
peer-base:
|
||||
image: hyperledger/fabric-peer:x86_64-1.0.0-rc1
|
||||
environment:
|
||||
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
|
||||
# the following setting starts chaincode containers on the same
|
||||
# bridge network as the peers
|
||||
# https://docs.docker.com/compose/networking/
|
||||
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=artifacts_default
|
||||
- CORE_LOGGING_LEVEL=DEBUG
|
||||
- CORE_PEER_GOSSIP_USELEADERELECTION=true
|
||||
- CORE_PEER_GOSSIP_ORGLEADER=false
|
||||
# The following setting skips the gossip handshake since we are
|
||||
# are not doing mutual TLS
|
||||
- CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
|
||||
- CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/crypto/peer/msp
|
||||
- CORE_PEER_TLS_ENABLED=true
|
||||
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/crypto/peer/tls/server.key
|
||||
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/crypto/peer/tls/server.crt
|
||||
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/crypto/peer/tls/ca.crt
|
||||
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
|
||||
command: peer node start
|
||||
volumes:
|
||||
- /var/run/:/host/var/run/
|
||||
149
balance-transfer/artifacts/channel/configtx.yaml
Normal file
149
balance-transfer/artifacts/channel/configtx.yaml
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
# Copyright IBM Corp. All Rights Reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
---
|
||||
################################################################################
|
||||
#
|
||||
# Profile
|
||||
#
|
||||
# - Different configuration profiles may be encoded here to be specified
|
||||
# as parameters to the configtxgen tool
|
||||
#
|
||||
################################################################################
|
||||
Profiles:
|
||||
|
||||
TwoOrgsOrdererGenesis:
|
||||
Orderer:
|
||||
<<: *OrdererDefaults
|
||||
Organizations:
|
||||
- *OrdererOrg
|
||||
Consortiums:
|
||||
SampleConsortium:
|
||||
Organizations:
|
||||
- *Org1
|
||||
- *Org2
|
||||
TwoOrgsChannel:
|
||||
Consortium: SampleConsortium
|
||||
Application:
|
||||
<<: *ApplicationDefaults
|
||||
Organizations:
|
||||
- *Org1
|
||||
- *Org2
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Section: Organizations
|
||||
#
|
||||
# - This section defines the different organizational identities which will
|
||||
# be referenced later in the configuration.
|
||||
#
|
||||
################################################################################
|
||||
Organizations:
|
||||
|
||||
# SampleOrg defines an MSP using the sampleconfig. It should never be used
|
||||
# in production but may be used as a template for other definitions
|
||||
- &OrdererOrg
|
||||
# DefaultOrg defines the organization which is used in the sampleconfig
|
||||
# of the fabric.git development environment
|
||||
Name: OrdererMSP
|
||||
|
||||
# ID to load the MSP definition as
|
||||
ID: OrdererMSP
|
||||
|
||||
# MSPDir is the filesystem path which contains the MSP configuration
|
||||
MSPDir: crypto-config/ordererOrganizations/example.com/msp
|
||||
|
||||
- &Org1
|
||||
# DefaultOrg defines the organization which is used in the sampleconfig
|
||||
# of the fabric.git development environment
|
||||
Name: Org1MSP
|
||||
|
||||
# ID to load the MSP definition as
|
||||
ID: Org1MSP
|
||||
|
||||
MSPDir: crypto-config/peerOrganizations/org1.example.com/msp
|
||||
|
||||
AnchorPeers:
|
||||
# AnchorPeers defines the location of peers which can be used
|
||||
# for cross org gossip communication. Note, this value is only
|
||||
# encoded in the genesis block in the Application section context
|
||||
- Host: peer0.org1.example.com
|
||||
Port: 7051
|
||||
|
||||
- &Org2
|
||||
# DefaultOrg defines the organization which is used in the sampleconfig
|
||||
# of the fabric.git development environment
|
||||
Name: Org2MSP
|
||||
|
||||
# ID to load the MSP definition as
|
||||
ID: Org2MSP
|
||||
|
||||
MSPDir: crypto-config/peerOrganizations/org2.example.com/msp
|
||||
|
||||
AnchorPeers:
|
||||
# AnchorPeers defines the location of peers which can be used
|
||||
# for cross org gossip communication. Note, this value is only
|
||||
# encoded in the genesis block in the Application section context
|
||||
- Host: peer0.org2.example.com
|
||||
Port: 7051
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# SECTION: Orderer
|
||||
#
|
||||
# - This section defines the values to encode into a config transaction or
|
||||
# genesis block for orderer related parameters
|
||||
#
|
||||
################################################################################
|
||||
Orderer: &OrdererDefaults
|
||||
|
||||
# Orderer Type: The orderer implementation to start
|
||||
# Available types are "solo" and "kafka"
|
||||
OrdererType: solo
|
||||
|
||||
Addresses:
|
||||
- orderer.example.com:7050
|
||||
|
||||
# Batch Timeout: The amount of time to wait before creating a batch
|
||||
BatchTimeout: 2s
|
||||
|
||||
# Batch Size: Controls the number of messages batched into a block
|
||||
BatchSize:
|
||||
|
||||
# Max Message Count: The maximum number of messages to permit in a batch
|
||||
MaxMessageCount: 10
|
||||
|
||||
# Absolute Max Bytes: The absolute maximum number of bytes allowed for
|
||||
# the serialized messages in a batch.
|
||||
AbsoluteMaxBytes: 98 MB
|
||||
|
||||
# Preferred Max Bytes: The preferred maximum number of bytes allowed for
|
||||
# the serialized messages in a batch. A message larger than the preferred
|
||||
# max bytes will result in a batch larger than preferred max bytes.
|
||||
PreferredMaxBytes: 512 KB
|
||||
|
||||
Kafka:
|
||||
# Brokers: A list of Kafka brokers to which the orderer connects
|
||||
# NOTE: Use IP:port notation
|
||||
Brokers:
|
||||
- 127.0.0.1:9092
|
||||
|
||||
# Organizations is the list of orgs which are defined as participants on
|
||||
# the orderer side of the network
|
||||
Organizations:
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# SECTION: Application
|
||||
#
|
||||
# - This section defines the values to encode into a config transaction or
|
||||
# genesis block for application related parameters
|
||||
#
|
||||
################################################################################
|
||||
Application: &ApplicationDefaults
|
||||
|
||||
# Organizations is the list of orgs which are defined as participants on
|
||||
# the application side of the network
|
||||
Organizations:
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9pRJ4Y87tn+vE1fU
|
||||
uAGVg5OOGwHYlqBuvAOvy0Z+mEChRANCAAQyw4A26b4ouKj0TxbF3mM4I51vDLZ2
|
||||
clA+fdrYJwZcI9F/lLmpu+oEd/XXdQn/ELzEsgeCi9xdThVYmeXJ/53K
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICLjCCAdWgAwIBAgIQCeSxIA/5bBc/893OreC2kzAKBggqhkjOPQQDAjBpMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
|
||||
bGUuY29tMB4XDTE3MDYyMzEyMzMxOVoXDTI3MDYyMTEyMzMxOVowaTELMAkGA1UE
|
||||
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
|
||||
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
|
||||
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDLDgDbpvii4qPRPFsXeYzgjnW8M
|
||||
tnZyUD592tgnBlwj0X+Uuam76gR39dd1Cf8QvMSyB4KL3F1OFViZ5cn/ncqjXzBd
|
||||
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
|
||||
Af8wKQYDVR0OBCIEIA1GzPDpQ2wbw7biv4DNsgLElDYE+Vxy7g/4OdPsMAcZMAoG
|
||||
CCqGSM49BAMCA0cAMEQCICXp7cNAHK6RQOFxE8Gpqy1B/FuLbmtYNqqBo5e1Pgly
|
||||
AiAWH23pmnXngcjLHg3nGwa3oUlCyPD64ilFoCMdN9TRVg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICCjCCAbGgAwIBAgIRANPhTyHWZkTenKfX4eBv0ZUwCgYIKoZIzj0EAwIwaTEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
|
||||
cGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMFYxCzAJBgNV
|
||||
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
|
||||
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
|
||||
SM49AwEHA0IABKAyu7N4S2ZPQSzsAVF/mwwCewuu++MtfcMmUdeoIPFRBj1JMCnf
|
||||
f88M0wj13gQSJQ6GfnUrT76G/L5fGxCUifWjTTBLMA4GA1UdDwEB/wQEAwIHgDAM
|
||||
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIA1GzPDpQ2wbw7biv4DNsgLElDYE+Vxy
|
||||
7g/4OdPsMAcZMAoGCCqGSM49BAMCA0cAMEQCIEdiGFLzeGMvVNubuZ3iuvRp/Pp6
|
||||
im3FmABwIbnMarabAiBIHWzz8Yxh9K5ZNkVNZX3fLZ4LlzsKBinbWH9J2wblDg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICLjCCAdWgAwIBAgIQCeSxIA/5bBc/893OreC2kzAKBggqhkjOPQQDAjBpMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
|
||||
bGUuY29tMB4XDTE3MDYyMzEyMzMxOVoXDTI3MDYyMTEyMzMxOVowaTELMAkGA1UE
|
||||
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
|
||||
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
|
||||
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDLDgDbpvii4qPRPFsXeYzgjnW8M
|
||||
tnZyUD592tgnBlwj0X+Uuam76gR39dd1Cf8QvMSyB4KL3F1OFViZ5cn/ncqjXzBd
|
||||
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
|
||||
Af8wKQYDVR0OBCIEIA1GzPDpQ2wbw7biv4DNsgLElDYE+Vxy7g/4OdPsMAcZMAoG
|
||||
CCqGSM49BAMCA0cAMEQCICXp7cNAHK6RQOFxE8Gpqy1B/FuLbmtYNqqBo5e1Pgly
|
||||
AiAWH23pmnXngcjLHg3nGwa3oUlCyPD64ilFoCMdN9TRVg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICNTCCAdygAwIBAgIRAN1F77OjzDmyWCzGuLyXHI8wCgYIKoZIzj0EAwIwbDEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
|
||||
eGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMGwxCzAJ
|
||||
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
|
||||
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
|
||||
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQkmbjr/9EK0m/4CpR6
|
||||
DiM+Eyke3vxPX+IhL+utTRt/qYz2q0UT9wem0xgRVqyWp4vN35ur7aSI+dALKBFT
|
||||
RWPwo18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB
|
||||
Af8EBTADAQH/MCkGA1UdDgQiBCBqIR7RiIC02zhngxyXeAmQJxO44yGlq1XswQTa
|
||||
/C7sSTAKBggqhkjOPQQDAgNHADBEAiBSxokO+9hHG+FpYikoNpcma4AK6N1KI2B6
|
||||
WqI5xNyF4gIgIQx8Q6p6ynDfUGDJ43uTHPzwlt+o8gQ3A5w07L70ml0=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICCjCCAbGgAwIBAgIRANPhTyHWZkTenKfX4eBv0ZUwCgYIKoZIzj0EAwIwaTEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
|
||||
cGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMFYxCzAJBgNV
|
||||
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
|
||||
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
|
||||
SM49AwEHA0IABKAyu7N4S2ZPQSzsAVF/mwwCewuu++MtfcMmUdeoIPFRBj1JMCnf
|
||||
f88M0wj13gQSJQ6GfnUrT76G/L5fGxCUifWjTTBLMA4GA1UdDwEB/wQEAwIHgDAM
|
||||
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIA1GzPDpQ2wbw7biv4DNsgLElDYE+Vxy
|
||||
7g/4OdPsMAcZMAoGCCqGSM49BAMCA0cAMEQCIEdiGFLzeGMvVNubuZ3iuvRp/Pp6
|
||||
im3FmABwIbnMarabAiBIHWzz8Yxh9K5ZNkVNZX3fLZ4LlzsKBinbWH9J2wblDg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICLjCCAdWgAwIBAgIQCeSxIA/5bBc/893OreC2kzAKBggqhkjOPQQDAjBpMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
|
||||
bGUuY29tMB4XDTE3MDYyMzEyMzMxOVoXDTI3MDYyMTEyMzMxOVowaTELMAkGA1UE
|
||||
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
|
||||
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
|
||||
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDLDgDbpvii4qPRPFsXeYzgjnW8M
|
||||
tnZyUD592tgnBlwj0X+Uuam76gR39dd1Cf8QvMSyB4KL3F1OFViZ5cn/ncqjXzBd
|
||||
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
|
||||
Af8wKQYDVR0OBCIEIA1GzPDpQ2wbw7biv4DNsgLElDYE+Vxy7g/4OdPsMAcZMAoG
|
||||
CCqGSM49BAMCA0cAMEQCICXp7cNAHK6RQOFxE8Gpqy1B/FuLbmtYNqqBo5e1Pgly
|
||||
AiAWH23pmnXngcjLHg3nGwa3oUlCyPD64ilFoCMdN9TRVg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgc4TjL7yNIkRpowuC
|
||||
Y0uEEkzJraTtTM380wlyrRoVs96hRANCAARi2C4soUEstzRVLDI8ccc17vocfvWg
|
||||
5crrC6fxj/m+0xrA9n9ZOb+8FVRZ182XNz14DbxpfHrMEAHyJGbXoR5T
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICDTCCAbOgAwIBAgIRALFafJiTFN/47AvAGfvj1ZEwCgYIKoZIzj0EAwIwaTEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
|
||||
cGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMFgxCzAJBgNV
|
||||
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
|
||||
c2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
|
||||
KoZIzj0DAQcDQgAEYtguLKFBLLc0VSwyPHHHNe76HH71oOXK6wun8Y/5vtMawPZ/
|
||||
WTm/vBVUWdfNlzc9eA28aXx6zBAB8iRm16EeU6NNMEswDgYDVR0PAQH/BAQDAgeA
|
||||
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgDUbM8OlDbBvDtuK/gM2yAsSUNgT5
|
||||
XHLuD/g50+wwBxkwCgYIKoZIzj0EAwIDSAAwRQIhANJuEGHBftrtlWgie9zgc60J
|
||||
/XVytPN/D0rPlkMV17n7AiBBbStggGBfFYcQ2LhDhcKut8nScJ2OFrt+dJSdJbod
|
||||
7A==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICNTCCAdygAwIBAgIRAN1F77OjzDmyWCzGuLyXHI8wCgYIKoZIzj0EAwIwbDEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
|
||||
eGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMGwxCzAJ
|
||||
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
|
||||
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
|
||||
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQkmbjr/9EK0m/4CpR6
|
||||
DiM+Eyke3vxPX+IhL+utTRt/qYz2q0UT9wem0xgRVqyWp4vN35ur7aSI+dALKBFT
|
||||
RWPwo18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB
|
||||
Af8EBTADAQH/MCkGA1UdDgQiBCBqIR7RiIC02zhngxyXeAmQJxO44yGlq1XswQTa
|
||||
/C7sSTAKBggqhkjOPQQDAgNHADBEAiBSxokO+9hHG+FpYikoNpcma4AK6N1KI2B6
|
||||
WqI5xNyF4gIgIQx8Q6p6ynDfUGDJ43uTHPzwlt+o8gQ3A5w07L70ml0=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICNTCCAdygAwIBAgIRAN1F77OjzDmyWCzGuLyXHI8wCgYIKoZIzj0EAwIwbDEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
|
||||
eGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMGwxCzAJ
|
||||
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
|
||||
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
|
||||
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQkmbjr/9EK0m/4CpR6
|
||||
DiM+Eyke3vxPX+IhL+utTRt/qYz2q0UT9wem0xgRVqyWp4vN35ur7aSI+dALKBFT
|
||||
RWPwo18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB
|
||||
Af8EBTADAQH/MCkGA1UdDgQiBCBqIR7RiIC02zhngxyXeAmQJxO44yGlq1XswQTa
|
||||
/C7sSTAKBggqhkjOPQQDAgNHADBEAiBSxokO+9hHG+FpYikoNpcma4AK6N1KI2B6
|
||||
WqI5xNyF4gIgIQx8Q6p6ynDfUGDJ43uTHPzwlt+o8gQ3A5w07L70ml0=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICWjCCAgCgAwIBAgIRAKk85zOKA4NKFQe/AmGxK7EwCgYIKoZIzj0EAwIwbDEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
|
||||
eGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMFgxCzAJ
|
||||
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
|
||||
bmNpc2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C
|
||||
AQYIKoZIzj0DAQcDQgAE3Nve7G2pybxbA+S3bvKlP8BAR4kJG96Yd2k9UFc7+Mmd
|
||||
XM5/7TeVCbaidnYpODYr2pNlzo8HijwoyvYxnN7U3aOBljCBkzAOBgNVHQ8BAf8E
|
||||
BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC
|
||||
MAAwKwYDVR0jBCQwIoAgaiEe0YiAtNs4Z4Mcl3gJkCcTuOMhpatV7MEE2vwu7Ekw
|
||||
JwYDVR0RBCAwHoITb3JkZXJlci5leGFtcGxlLmNvbYIHb3JkZXJlcjAKBggqhkjO
|
||||
PQQDAgNIADBFAiEAtW6SunJ0GXR2gZY2yOg4CAOLPqb3YB07/9byOSFYZygCIA77
|
||||
iitG1Mkvlc7fyNFcgYKDUpbXQBS5iTmAuo/cISDx
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgUsf4CUpdmdIaax7T
|
||||
qjCJaQLCsSU1/xaoETdgCCZ8fDihRANCAATc297sbanJvFsD5Ldu8qU/wEBHiQkb
|
||||
3ph3aT1QVzv4yZ1czn/tN5UJtqJ2dik4Nivak2XOjweKPCjK9jGc3tTd
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghjZ40AvUeupMV603
|
||||
i9pA9S8uNLz5i6TePeBgJZhrY/ihRANCAAQkmbjr/9EK0m/4CpR6DiM+Eyke3vxP
|
||||
X+IhL+utTRt/qYz2q0UT9wem0xgRVqyWp4vN35ur7aSI+dALKBFTRWPw
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICNTCCAdygAwIBAgIRAN1F77OjzDmyWCzGuLyXHI8wCgYIKoZIzj0EAwIwbDEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
|
||||
eGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMGwxCzAJ
|
||||
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
|
||||
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
|
||||
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQkmbjr/9EK0m/4CpR6
|
||||
DiM+Eyke3vxPX+IhL+utTRt/qYz2q0UT9wem0xgRVqyWp4vN35ur7aSI+dALKBFT
|
||||
RWPwo18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB
|
||||
Af8EBTADAQH/MCkGA1UdDgQiBCBqIR7RiIC02zhngxyXeAmQJxO44yGlq1XswQTa
|
||||
/C7sSTAKBggqhkjOPQQDAgNHADBEAiBSxokO+9hHG+FpYikoNpcma4AK6N1KI2B6
|
||||
WqI5xNyF4gIgIQx8Q6p6ynDfUGDJ43uTHPzwlt+o8gQ3A5w07L70ml0=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICCjCCAbGgAwIBAgIRANPhTyHWZkTenKfX4eBv0ZUwCgYIKoZIzj0EAwIwaTEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
|
||||
cGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMFYxCzAJBgNV
|
||||
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
|
||||
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
|
||||
SM49AwEHA0IABKAyu7N4S2ZPQSzsAVF/mwwCewuu++MtfcMmUdeoIPFRBj1JMCnf
|
||||
f88M0wj13gQSJQ6GfnUrT76G/L5fGxCUifWjTTBLMA4GA1UdDwEB/wQEAwIHgDAM
|
||||
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIA1GzPDpQ2wbw7biv4DNsgLElDYE+Vxy
|
||||
7g/4OdPsMAcZMAoGCCqGSM49BAMCA0cAMEQCIEdiGFLzeGMvVNubuZ3iuvRp/Pp6
|
||||
im3FmABwIbnMarabAiBIHWzz8Yxh9K5ZNkVNZX3fLZ4LlzsKBinbWH9J2wblDg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICLjCCAdWgAwIBAgIQCeSxIA/5bBc/893OreC2kzAKBggqhkjOPQQDAjBpMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
|
||||
bGUuY29tMB4XDTE3MDYyMzEyMzMxOVoXDTI3MDYyMTEyMzMxOVowaTELMAkGA1UE
|
||||
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
|
||||
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
|
||||
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDLDgDbpvii4qPRPFsXeYzgjnW8M
|
||||
tnZyUD592tgnBlwj0X+Uuam76gR39dd1Cf8QvMSyB4KL3F1OFViZ5cn/ncqjXzBd
|
||||
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
|
||||
Af8wKQYDVR0OBCIEIA1GzPDpQ2wbw7biv4DNsgLElDYE+Vxy7g/4OdPsMAcZMAoG
|
||||
CCqGSM49BAMCA0cAMEQCICXp7cNAHK6RQOFxE8Gpqy1B/FuLbmtYNqqBo5e1Pgly
|
||||
AiAWH23pmnXngcjLHg3nGwa3oUlCyPD64ilFoCMdN9TRVg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg33NMbWc5E80ueSIA
|
||||
iWqRlyC2M+1ce4shkkP/CVKOp4uhRANCAASgMruzeEtmT0Es7AFRf5sMAnsLrvvj
|
||||
LX3DJlHXqCDxUQY9STAp33/PDNMI9d4EEiUOhn51K0++hvy+XxsQlIn1
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICCjCCAbGgAwIBAgIRANPhTyHWZkTenKfX4eBv0ZUwCgYIKoZIzj0EAwIwaTEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
|
||||
cGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMFYxCzAJBgNV
|
||||
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
|
||||
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
|
||||
SM49AwEHA0IABKAyu7N4S2ZPQSzsAVF/mwwCewuu++MtfcMmUdeoIPFRBj1JMCnf
|
||||
f88M0wj13gQSJQ6GfnUrT76G/L5fGxCUifWjTTBLMA4GA1UdDwEB/wQEAwIHgDAM
|
||||
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIA1GzPDpQ2wbw7biv4DNsgLElDYE+Vxy
|
||||
7g/4OdPsMAcZMAoGCCqGSM49BAMCA0cAMEQCIEdiGFLzeGMvVNubuZ3iuvRp/Pp6
|
||||
im3FmABwIbnMarabAiBIHWzz8Yxh9K5ZNkVNZX3fLZ4LlzsKBinbWH9J2wblDg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICNTCCAdygAwIBAgIRAN1F77OjzDmyWCzGuLyXHI8wCgYIKoZIzj0EAwIwbDEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
|
||||
eGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMGwxCzAJ
|
||||
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
|
||||
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
|
||||
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQkmbjr/9EK0m/4CpR6
|
||||
DiM+Eyke3vxPX+IhL+utTRt/qYz2q0UT9wem0xgRVqyWp4vN35ur7aSI+dALKBFT
|
||||
RWPwo18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB
|
||||
Af8EBTADAQH/MCkGA1UdDgQiBCBqIR7RiIC02zhngxyXeAmQJxO44yGlq1XswQTa
|
||||
/C7sSTAKBggqhkjOPQQDAgNHADBEAiBSxokO+9hHG+FpYikoNpcma4AK6N1KI2B6
|
||||
WqI5xNyF4gIgIQx8Q6p6ynDfUGDJ43uTHPzwlt+o8gQ3A5w07L70ml0=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICNTCCAdygAwIBAgIRAN1F77OjzDmyWCzGuLyXHI8wCgYIKoZIzj0EAwIwbDEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
|
||||
eGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTlaMGwxCzAJ
|
||||
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
|
||||
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
|
||||
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQkmbjr/9EK0m/4CpR6
|
||||
DiM+Eyke3vxPX+IhL+utTRt/qYz2q0UT9wem0xgRVqyWp4vN35ur7aSI+dALKBFT
|
||||
RWPwo18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB
|
||||
Af8EBTADAQH/MCkGA1UdDgQiBCBqIR7RiIC02zhngxyXeAmQJxO44yGlq1XswQTa
|
||||
/C7sSTAKBggqhkjOPQQDAgNHADBEAiBSxokO+9hHG+FpYikoNpcma4AK6N1KI2B6
|
||||
WqI5xNyF4gIgIQx8Q6p6ynDfUGDJ43uTHPzwlt+o8gQ3A5w07L70ml0=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICKzCCAdKgAwIBAgIQF7ZJRSdZJSb9HEWyJaxQuDAKBggqhkjOPQQDAjBsMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
|
||||
YW1wbGUuY29tMB4XDTE3MDYyMzEyMzMxOVoXDTI3MDYyMTEyMzMxOVowVjELMAkG
|
||||
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
|
||||
Y2lzY28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
|
||||
KoZIzj0DAQcDQgAE+9xJbd39hXJw8Y49mtzzO1P/KaLjzkEAQGG7cnujbytJHRLL
|
||||
+kHW2E02+ob8hAucwsjR/Sxg0J2yufaDxKWtSqNsMGowDgYDVR0PAQH/BAQDAgWg
|
||||
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCsG
|
||||
A1UdIwQkMCKAIGohHtGIgLTbOGeDHJd4CZAnE7jjIaWrVezBBNr8LuxJMAoGCCqG
|
||||
SM49BAMCA0cAMEQCIA5f8O7WfymKaLrJ71f77GGb/6z72Jh7g5svHDZBgKkBAiAg
|
||||
fkCIypxeGnU1Vbo3vYauhqU6lQYO6VcVBhk3182wyQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgixJReeen2sIgyqT6
|
||||
F0z2Y9iYIu++FVOGg7ha4FR6G2WhRANCAAT73Elt3f2FcnDxjj2a3PM7U/8pouPO
|
||||
QQBAYbtye6NvK0kdEsv6QdbYTTb6hvyEC5zCyNH9LGDQnbK59oPEpa1K
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgp4Y9v/Cx/ee3K2mP
|
||||
N62ttbG2y1NkppMN6MlycYpqtT2hRANCAAQohXCFPMmsvPN+QiP874DXwHXyTZxI
|
||||
oRZ1Jt9ZkikUlJv3LDxCgSxu2TjCP0kkP/A5JrV4MP+lCit6MKbbkKYF
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQjCCAemgAwIBAgIQIR2LR9fa8xs5unnJJ9PFSzAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
|
||||
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
|
||||
KIVwhTzJrLzzfkIj/O+A18B18k2cSKEWdSbfWZIpFJSb9yw8QoEsbtk4wj9JJD/w
|
||||
OSa1eDD/pQorejCm25CmBaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
|
||||
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgDnKSJOiz8xeEyKk8W472
|
||||
9MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDRwAwRAIgMIO+yK3Fbwv1EXMc
|
||||
tQam42i6ROxSanaAHrbY2oVC1fICICsMpdSS2kbdntUDayi09v4/WRtC59ExCrHl
|
||||
rg/GXwkv
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGTCCAb+gAwIBAgIQKKKdQSzsDoUYn/LPAuRWGTAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
|
||||
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmbzUDozIrLKjp3OAzItSG7m7Flw76rT
|
||||
8VO8E6otlCwxKtBRkPpZL7norC3NsjyE339J5O4pXCqhIApQyRRsRqNNMEswDgYD
|
||||
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgDnKSJOiz8xeE
|
||||
yKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDSAAwRQIhALT02pc/
|
||||
yfE/4wUJfUBQ32GifUEh8JktAXzL/73S0rjYAiACNSp6zAQBX9SBxTOGMk4cGGAy
|
||||
CKqf8052NVUs2CvPzA==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQjCCAemgAwIBAgIQIR2LR9fa8xs5unnJJ9PFSzAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
|
||||
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
|
||||
KIVwhTzJrLzzfkIj/O+A18B18k2cSKEWdSbfWZIpFJSb9yw8QoEsbtk4wj9JJD/w
|
||||
OSa1eDD/pQorejCm25CmBaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
|
||||
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgDnKSJOiz8xeEyKk8W472
|
||||
9MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDRwAwRAIgMIO+yK3Fbwv1EXMc
|
||||
tQam42i6ROxSanaAHrbY2oVC1fICICsMpdSS2kbdntUDayi09v4/WRtC59ExCrHl
|
||||
rg/GXwkv
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGTCCAb+gAwIBAgIQKKKdQSzsDoUYn/LPAuRWGTAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
|
||||
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmbzUDozIrLKjp3OAzItSG7m7Flw76rT
|
||||
8VO8E6otlCwxKtBRkPpZL7norC3NsjyE339J5O4pXCqhIApQyRRsRqNNMEswDgYD
|
||||
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgDnKSJOiz8xeE
|
||||
yKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDSAAwRQIhALT02pc/
|
||||
yfE/4wUJfUBQ32GifUEh8JktAXzL/73S0rjYAiACNSp6zAQBX9SBxTOGMk4cGGAy
|
||||
CKqf8052NVUs2CvPzA==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQjCCAemgAwIBAgIQIR2LR9fa8xs5unnJJ9PFSzAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
|
||||
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
|
||||
KIVwhTzJrLzzfkIj/O+A18B18k2cSKEWdSbfWZIpFJSb9yw8QoEsbtk4wj9JJD/w
|
||||
OSa1eDD/pQorejCm25CmBaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
|
||||
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgDnKSJOiz8xeEyKk8W472
|
||||
9MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDRwAwRAIgMIO+yK3Fbwv1EXMc
|
||||
tQam42i6ROxSanaAHrbY2oVC1fICICsMpdSS2kbdntUDayi09v4/WRtC59ExCrHl
|
||||
rg/GXwkv
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgTEPwtCyJ1jFk2qQs
|
||||
oFgHzMo3/MEXG1XJHiTgoRYvnPahRANCAATNL2TaAIodxq3xaPhPacHW7ILxHbOD
|
||||
e6bF1MvueaAVanS7IIJtBDEP9VL7xH/cM28QWS/OFyNz01T+dGoyKuku
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGDCCAb+gAwIBAgIQPcMFFEB/vq6mEL6vXV7aUTAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29tMFkw
|
||||
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzS9k2gCKHcat8Wj4T2nB1uyC8R2zg3um
|
||||
xdTL7nmgFWp0uyCCbQQxD/VS+8R/3DNvEFkvzhcjc9NU/nRqMirpLqNNMEswDgYD
|
||||
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgDnKSJOiz8xeE
|
||||
yKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDRwAwRAIgHBdxbHUG
|
||||
rFUzKPX9UmmN3SwigWcRUREUy/GTb3hDIAsCIEF1BxTqv8ilQYE8ql0wJL4mTber
|
||||
HE6DFYvvBCUnicUh
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICczCCAhmgAwIBAgIRAIKTnLyvyRImVvGtyrD0wH4wCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNv
|
||||
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCZF1/1UYwnRJk2d+3zB0cW9oi8H
|
||||
h7g6CaBw6aEI1WwgtKZ+/s28oQVUYBVJsdT3RAGgRRRt12QrqO/xa7/i1UejgaIw
|
||||
gZ8wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
|
||||
AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJRQktk29YOMWm9khNuXTYV5M3Bn
|
||||
N9ANBL9l9045dvn4MDMGA1UdEQQsMCqCFnBlZXIwLm9yZzEuZXhhbXBsZS5jb22C
|
||||
BXBlZXIwgglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSAAwRQIhAPs/YOkkkh2835Vb
|
||||
pXtUuQNCi/PlhPhTiFlEdeE56vmmAiBadeHDYBIHkEA10wzr33wS1FpELg18eC5N
|
||||
5gtmHzQUBA==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgCRU1ZAMLxDAlcr5d
|
||||
D6ZSprL4Lf0+TkWwN6rCFVWmjDuhRANCAAQmRdf9VGMJ0SZNnft8wdHFvaIvB4e4
|
||||
OgmgcOmhCNVsILSmfv7NvKEFVGAVSbHU90QBoEUUbddkK6jv8Wu/4tVH
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGTCCAb+gAwIBAgIQKKKdQSzsDoUYn/LPAuRWGTAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
|
||||
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmbzUDozIrLKjp3OAzItSG7m7Flw76rT
|
||||
8VO8E6otlCwxKtBRkPpZL7norC3NsjyE339J5O4pXCqhIApQyRRsRqNNMEswDgYD
|
||||
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgDnKSJOiz8xeE
|
||||
yKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDSAAwRQIhALT02pc/
|
||||
yfE/4wUJfUBQ32GifUEh8JktAXzL/73S0rjYAiACNSp6zAQBX9SBxTOGMk4cGGAy
|
||||
CKqf8052NVUs2CvPzA==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQjCCAemgAwIBAgIQIR2LR9fa8xs5unnJJ9PFSzAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
|
||||
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
|
||||
KIVwhTzJrLzzfkIj/O+A18B18k2cSKEWdSbfWZIpFJSb9yw8QoEsbtk4wj9JJD/w
|
||||
OSa1eDD/pQorejCm25CmBaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
|
||||
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgDnKSJOiz8xeEyKk8W472
|
||||
9MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDRwAwRAIgMIO+yK3Fbwv1EXMc
|
||||
tQam42i6ROxSanaAHrbY2oVC1fICICsMpdSS2kbdntUDayi09v4/WRtC59ExCrHl
|
||||
rg/GXwkv
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgtzNlo4v/qB1j5dJ6
|
||||
CRLQb9UAfUMMevXdnbuXUux2K2GhRANCAAQp09OJbb47IImVbghi7EWMxIgkyWZW
|
||||
cIdx0/9u9wdzZFgO8K5ciuxXwGpyMnsbkdVCPZuPmCjahRunIGJ3/DLH
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGjCCAcCgAwIBAgIRAI+BBtEBvpOqhfRZZH7eV/YwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMS5leGFtcGxlLmNvbTBZ
|
||||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABCnT04ltvjsgiZVuCGLsRYzEiCTJZlZw
|
||||
h3HT/273B3NkWA7wrlyK7FfAanIyexuR1UI9m4+YKNqFG6cgYnf8MsejTTBLMA4G
|
||||
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIA5ykiTos/MX
|
||||
hMipPFuO9vTByR2ebld8RcMxY2Cf5AARMAoGCCqGSM49BAMCA0gAMEUCIQCSRdWm
|
||||
i4IgVUajvzWVxyE/wi7n617pVqS4+nJ7gbTRjQIgefzBwS+bkNhPc3/rktySFLRC
|
||||
WMnq87KyqMLc6iRaJx0=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICczCCAhmgAwIBAgIRALZ2km4W6KjPQb9rM12Ewb4wCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMS5leGFtcGxlLmNv
|
||||
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKpNWa4jf/Rk5bpSZqFYteLESkd7
|
||||
KbrSOoiqLJmYSvM+KjDRPt+/pjLBNKM60tvknTUslU6Jne/7CVx1FpiHjRGjgaIw
|
||||
gZ8wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
|
||||
AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJRQktk29YOMWm9khNuXTYV5M3Bn
|
||||
N9ANBL9l9045dvn4MDMGA1UdEQQsMCqCFnBlZXIxLm9yZzEuZXhhbXBsZS5jb22C
|
||||
BXBlZXIxgglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSAAwRQIhAKjhWT8ZdaYR2Hvx
|
||||
hPUl3t6gDJmkVuhy2Mxin04XxrUUAiBmBN83NmGoluPHQnvtGQ1BQP/JpY+UCkMR
|
||||
O0xeuEChjA==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgi4EN3aLIYYJMpLwD
|
||||
r3yCKO+EBzcCcTA5QbNZ1SvDFa+hRANCAASqTVmuI3/0ZOW6UmahWLXixEpHeym6
|
||||
0jqIqiyZmErzPiow0T7fv6YywTSjOtLb5J01LJVOiZ3v+wlcdRaYh40R
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/I1tIO3Xr1ZlsJUm
|
||||
FDoUo/CNIJXLPlpUxtB7/LjcNzahRANCAASrgcdhvIXc7eJf5u3u0BM2B2tZboZh
|
||||
dZ8oomOyuIEyG1ivnL+xOO+DrixnnXs3H9A2PbrIot1n29IFQaEBR951
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGTCCAb+gAwIBAgIQKKKdQSzsDoUYn/LPAuRWGTAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
|
||||
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmbzUDozIrLKjp3OAzItSG7m7Flw76rT
|
||||
8VO8E6otlCwxKtBRkPpZL7norC3NsjyE339J5O4pXCqhIApQyRRsRqNNMEswDgYD
|
||||
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgDnKSJOiz8xeE
|
||||
yKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDSAAwRQIhALT02pc/
|
||||
yfE/4wUJfUBQ32GifUEh8JktAXzL/73S0rjYAiACNSp6zAQBX9SBxTOGMk4cGGAy
|
||||
CKqf8052NVUs2CvPzA==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQjCCAemgAwIBAgIQIR2LR9fa8xs5unnJJ9PFSzAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
|
||||
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
|
||||
KIVwhTzJrLzzfkIj/O+A18B18k2cSKEWdSbfWZIpFJSb9yw8QoEsbtk4wj9JJD/w
|
||||
OSa1eDD/pQorejCm25CmBaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
|
||||
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgDnKSJOiz8xeEyKk8W472
|
||||
9MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDRwAwRAIgMIO+yK3Fbwv1EXMc
|
||||
tQam42i6ROxSanaAHrbY2oVC1fICICsMpdSS2kbdntUDayi09v4/WRtC59ExCrHl
|
||||
rg/GXwkv
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgNmsvQQm4nwrxOKFX
|
||||
UNfLPgjNm+FtYu3vb6OZ9q/5GbChRANCAAQKZvNQOjMissqOnc4DMi1IbubsWXDv
|
||||
qtPxU7wTqi2ULDEq0FGQ+lkvueisLc2yPITff0nk7ilcKqEgClDJFGxG
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGTCCAb+gAwIBAgIQKKKdQSzsDoUYn/LPAuRWGTAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
|
||||
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmbzUDozIrLKjp3OAzItSG7m7Flw76rT
|
||||
8VO8E6otlCwxKtBRkPpZL7norC3NsjyE339J5O4pXCqhIApQyRRsRqNNMEswDgYD
|
||||
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgDnKSJOiz8xeE
|
||||
yKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDSAAwRQIhALT02pc/
|
||||
yfE/4wUJfUBQ32GifUEh8JktAXzL/73S0rjYAiACNSp6zAQBX9SBxTOGMk4cGGAy
|
||||
CKqf8052NVUs2CvPzA==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICOzCCAeKgAwIBAgIRALvUEE81tMguFRFvx00HyREwCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNv
|
||||
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCk0mXNbPIzN+YOJvx/0XnOVdb6G
|
||||
RxNetOOuuWq+QBWLJhdlRKrhtI+NTiHKjq7UMmBNdIfBPC1YXHIGdeD2u+CjbDBq
|
||||
MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
|
||||
DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCCUUJLZNvWDjFpvZITbl02FeTNwZzfQ
|
||||
DQS/ZfdOOXb5+DAKBggqhkjOPQQDAgNHADBEAiAp9+XFJ2igUvUlvkFVLeH7sWHf
|
||||
+Q4m47hVT/81vedY1gIgTSz5CufvmWnI5AgwCuw4D0w0eDPFAc1HkO1rlVo5icY=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgfVrs13ZtxgKp8l5T
|
||||
WAq2IXqgd+zF1V6sTh7rbQ104rShRANCAAQpNJlzWzyMzfmDib8f9F5zlXW+hkcT
|
||||
XrTjrrlqvkAViyYXZUSq4bSPjU4hyo6u1DJgTXSHwTwtWFxyBnXg9rvg
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGjCCAcCgAwIBAgIRANfNECvok9C6hT58XJZ/lJAwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZ
|
||||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABHV6X/kWuQK6xhXe9OenQZKDI7/zax7Y
|
||||
jYlRvUlHgCoqKIy8fFAat3glGbVX1oo2oZ7cMJVlFnbuiPdrg4vkyjejTTBLMA4G
|
||||
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIA5ykiTos/MX
|
||||
hMipPFuO9vTByR2ebld8RcMxY2Cf5AARMAoGCCqGSM49BAMCA0gAMEUCIQDbCDrW
|
||||
eqZ4yw7vcEhnNExiRZTv0xcVbRF8JgGozLz6qwIgZoXcqxvkJaBdZpwzg4f0RvVQ
|
||||
QrjJMURXXchQ1Mnd5+o=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQjCCAemgAwIBAgIQIR2LR9fa8xs5unnJJ9PFSzAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
|
||||
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
|
||||
KIVwhTzJrLzzfkIj/O+A18B18k2cSKEWdSbfWZIpFJSb9yw8QoEsbtk4wj9JJD/w
|
||||
OSa1eDD/pQorejCm25CmBaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
|
||||
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgDnKSJOiz8xeEyKk8W472
|
||||
9MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDRwAwRAIgMIO+yK3Fbwv1EXMc
|
||||
tQam42i6ROxSanaAHrbY2oVC1fICICsMpdSS2kbdntUDayi09v4/WRtC59ExCrHl
|
||||
rg/GXwkv
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgaYlbFIz6yVz0SYqh
|
||||
nrhdTCb797PBwSwtCw9HtOkbqQGhRANCAAR1el/5FrkCusYV3vTnp0GSgyO/82se
|
||||
2I2JUb1JR4AqKiiMvHxQGrd4JRm1V9aKNqGe3DCVZRZ27oj3a4OL5Mo3
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGjCCAcCgAwIBAgIRANfNECvok9C6hT58XJZ/lJAwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZ
|
||||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABHV6X/kWuQK6xhXe9OenQZKDI7/zax7Y
|
||||
jYlRvUlHgCoqKIy8fFAat3glGbVX1oo2oZ7cMJVlFnbuiPdrg4vkyjejTTBLMA4G
|
||||
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIA5ykiTos/MX
|
||||
hMipPFuO9vTByR2ebld8RcMxY2Cf5AARMAoGCCqGSM49BAMCA0gAMEUCIQDbCDrW
|
||||
eqZ4yw7vcEhnNExiRZTv0xcVbRF8JgGozLz6qwIgZoXcqxvkJaBdZpwzg4f0RvVQ
|
||||
QrjJMURXXchQ1Mnd5+o=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAe+gAwIBAgIQZrCrf6SF3Z/w7z3PwCNaaTAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
|
||||
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEq4HHYbyF3O3iX+bt7tATNgdrWW6GYXWfKKJjsriBMhtYr5y/sTjvg64s
|
||||
Z517Nx/QNj26yKLdZ9vSBUGhAUfedaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
|
||||
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQglFCS2Tb1g4xa
|
||||
b2SE25dNhXkzcGc30A0Ev2X3Tjl2+fgwCgYIKoZIzj0EAwIDSAAwRQIhANDFPsDw
|
||||
14ftcZgQtMQ0yuMg8cCHj246rhsrnjwar7aAAiBwLG+4sKnTOOa+ceK6p+PpKu6F
|
||||
qwkrkz69kT1ZsL7SXw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICOjCCAeGgAwIBAgIQSEKNVPcBOB7Kgrrzf05rJjAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcxLmV4YW1wbGUuY29t
|
||||
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyHrGhNgy26huH3hNap1UMtQRBVIx
|
||||
xTX0NqIbUMKcBSw9DRF0ndZHd5KQUVrj5t2/QY+YSpqK6ufDk68fWSAZ7KNsMGow
|
||||
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
|
||||
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJRQktk29YOMWm9khNuXTYV5M3BnN9AN
|
||||
BL9l9045dvn4MAoGCCqGSM49BAMCA0cAMEQCIE6HCTr9in2CqF6S+m/aGCVQrZwK
|
||||
/o3oyXdcymDc/PbDAiAHIRDkIw1mU31KNhvPd6f8c/sReVDr3PQLydWh/HJpTQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgOXZUBNCAmIwJR3bt
|
||||
GfoOwtmo3QunwcBnBBUPjot4frihRANCAATIesaE2DLbqG4feE1qnVQy1BEFUjHF
|
||||
NfQ2ohtQwpwFLD0NEXSd1kd3kpBRWuPm3b9Bj5hKmorq58OTrx9ZIBns
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgUgMy/PQKxjfxITFM
|
||||
mVPTu4ZwQlhYIh1vJkn3dkjqDBShRANCAARVtStps/F2HsCLFIdah6iJhTW6Vvro
|
||||
DQ/HOkGAfPZjzjB4cYpfaRNX19I/9fPnuLqIWxSjj/FEwdeXNX/5hUhH
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQzCCAeqgAwIBAgIRAJEAD5YytxsnFjw+liBjOQkwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
|
||||
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
|
||||
BFW1K2mz8XYewIsUh1qHqImFNbpW+ugND8c6QYB89mPOMHhxil9pE1fX0j/18+e4
|
||||
uohbFKOP8UTB15c1f/mFSEejXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
|
||||
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKfUfvpGproHcwyFD+0s
|
||||
E3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0cAMEQCIGrkModOvz6mcUDA
|
||||
Zql4YPXU/3ZUbMLw8VuSNHh47lg7AiAPLSKy/v8y8mhebGRCNTYwdkidQCQFrh+2
|
||||
BIirBFsT0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGjCCAcCgAwIBAgIRAIUbkOONvaq2DLJr9qZbDKwwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ
|
||||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABMLKHXm1xN7Tk4YzaWg4GYhLoyNjrjs5
|
||||
302o37m12U8LorR7IL5fdFgYILeL4XUPjC/QG4E2o6hPl3uZPUVErbajTTBLMA4G
|
||||
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKfUfvpGproH
|
||||
cwyFD+0sE3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0gAMEUCIQDa1k6R
|
||||
+luypvng6JMSKIyibptkwICToEAZlDqLeD+k1gIgGFXm1+p1QqxViOa+c1dUvjl0
|
||||
m1UCqGDwNTHDm5mO+es=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQzCCAeqgAwIBAgIRAJEAD5YytxsnFjw+liBjOQkwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
|
||||
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
|
||||
BFW1K2mz8XYewIsUh1qHqImFNbpW+ugND8c6QYB89mPOMHhxil9pE1fX0j/18+e4
|
||||
uohbFKOP8UTB15c1f/mFSEejXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
|
||||
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKfUfvpGproHcwyFD+0s
|
||||
E3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0cAMEQCIGrkModOvz6mcUDA
|
||||
Zql4YPXU/3ZUbMLw8VuSNHh47lg7AiAPLSKy/v8y8mhebGRCNTYwdkidQCQFrh+2
|
||||
BIirBFsT0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAfCgAwIBAgIRANX86HJQn/543CANoioLOegwCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
|
||||
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABBp+58H8VypXHB9Hf/1ExZTmNdcBlTUgAmHH5sb9DizHXwljo6zdyXfZ
|
||||
cLvTCpoLybJ/rnp4PKJ7NKUDmrQymLWjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
|
||||
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIHu4uj/xHTyM
|
||||
9ZK9QyYGLnfQasSWPHt65FkoTfvT61qsMAoGCCqGSM49BAMCA0cAMEQCIBJ9N4PD
|
||||
mB+2gAPeDWYteAZ5Q2KR/E0zMQ13pDSunHNcAiBwWRzwscXxCPOJp1sjBMVp5Z1a
|
||||
nfIdbwvBbsl1XV/j0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGjCCAcCgAwIBAgIRAIUbkOONvaq2DLJr9qZbDKwwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ
|
||||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABMLKHXm1xN7Tk4YzaWg4GYhLoyNjrjs5
|
||||
302o37m12U8LorR7IL5fdFgYILeL4XUPjC/QG4E2o6hPl3uZPUVErbajTTBLMA4G
|
||||
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKfUfvpGproH
|
||||
cwyFD+0sE3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0gAMEUCIQDa1k6R
|
||||
+luypvng6JMSKIyibptkwICToEAZlDqLeD+k1gIgGFXm1+p1QqxViOa+c1dUvjl0
|
||||
m1UCqGDwNTHDm5mO+es=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQzCCAeqgAwIBAgIRAJEAD5YytxsnFjw+liBjOQkwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
|
||||
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
|
||||
BFW1K2mz8XYewIsUh1qHqImFNbpW+ugND8c6QYB89mPOMHhxil9pE1fX0j/18+e4
|
||||
uohbFKOP8UTB15c1f/mFSEejXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
|
||||
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKfUfvpGproHcwyFD+0s
|
||||
E3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0cAMEQCIGrkModOvz6mcUDA
|
||||
Zql4YPXU/3ZUbMLw8VuSNHh47lg7AiAPLSKy/v8y8mhebGRCNTYwdkidQCQFrh+2
|
||||
BIirBFsT0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgNYZ86CFF4Iz0K+sE
|
||||
HMg3lSS+mo5lRIFFLUOGrfseqhOhRANCAAT/Dd/SwXAdKicm97/WPViD32Bzn1j5
|
||||
2k/FslsxorK2Lx1Rfhi3wyxa40LNLjfED7E7KmJZ1w7PzI7+7WWhPTbq
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGjCCAcCgAwIBAgIRANDlqX1daKI2aN0Qm7vrfKAwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMi5leGFtcGxlLmNvbTBZ
|
||||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABP8N39LBcB0qJyb3v9Y9WIPfYHOfWPna
|
||||
T8WyWzGisrYvHVF+GLfDLFrjQs0uN8QPsTsqYlnXDs/Mjv7tZaE9NuqjTTBLMA4G
|
||||
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKfUfvpGproH
|
||||
cwyFD+0sE3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0gAMEUCIQDa1gKe
|
||||
PRVRN/i8hUptACw02V7V9Yeo7kKlbQ6vWU5fqAIgXg2xAQ4TjwXOHlKbIyYZ7fox
|
||||
cekBJ+E8yAFm8XQrfy0=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAfCgAwIBAgIRANX86HJQn/543CANoioLOegwCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
|
||||
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABBp+58H8VypXHB9Hf/1ExZTmNdcBlTUgAmHH5sb9DizHXwljo6zdyXfZ
|
||||
cLvTCpoLybJ/rnp4PKJ7NKUDmrQymLWjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
|
||||
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIHu4uj/xHTyM
|
||||
9ZK9QyYGLnfQasSWPHt65FkoTfvT61qsMAoGCCqGSM49BAMCA0cAMEQCIBJ9N4PD
|
||||
mB+2gAPeDWYteAZ5Q2KR/E0zMQ13pDSunHNcAiBwWRzwscXxCPOJp1sjBMVp5Z1a
|
||||
nfIdbwvBbsl1XV/j0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAfCgAwIBAgIRANX86HJQn/543CANoioLOegwCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
|
||||
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABBp+58H8VypXHB9Hf/1ExZTmNdcBlTUgAmHH5sb9DizHXwljo6zdyXfZ
|
||||
cLvTCpoLybJ/rnp4PKJ7NKUDmrQymLWjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
|
||||
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIHu4uj/xHTyM
|
||||
9ZK9QyYGLnfQasSWPHt65FkoTfvT61qsMAoGCCqGSM49BAMCA0cAMEQCIBJ9N4PD
|
||||
mB+2gAPeDWYteAZ5Q2KR/E0zMQ13pDSunHNcAiBwWRzwscXxCPOJp1sjBMVp5Z1a
|
||||
nfIdbwvBbsl1XV/j0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICcjCCAhmgAwIBAgIRAKTjFkKbLMrbEP10dpOEqz4wCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMi5leGFtcGxlLmNv
|
||||
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMDiCfhksPZRhxpGyowvLu8lQjC6
|
||||
H4y/SiQuTbhG+ZXK99VRyDDoKzkyzDpUxMco1xvD3gafSDvrXrKlZObN9bOjgaIw
|
||||
gZ8wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
|
||||
AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIHu4uj/xHTyM9ZK9QyYGLnfQasSW
|
||||
PHt65FkoTfvT61qsMDMGA1UdEQQsMCqCFnBlZXIwLm9yZzIuZXhhbXBsZS5jb22C
|
||||
BXBlZXIwgglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDRwAwRAIgf1MZC8BVgrxO76J+
|
||||
aCGntiQsicgU1DPMt5l45jXiEeECIAHHYsIZcV8GW7iyKQevvdXSQ3JC7XgyuPrm
|
||||
eDhWmPcO
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgVlcwZfAKBQZ+W/JX
|
||||
w64rHF3JiaddhBcUfxk7WuyZxrChRANCAATA4gn4ZLD2UYcaRsqMLy7vJUIwuh+M
|
||||
v0okLk24RvmVyvfVUcgw6Cs5Msw6VMTHKNcbw94Gn0g7616ypWTmzfWz
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGjCCAcCgAwIBAgIRAIUbkOONvaq2DLJr9qZbDKwwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ
|
||||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABMLKHXm1xN7Tk4YzaWg4GYhLoyNjrjs5
|
||||
302o37m12U8LorR7IL5fdFgYILeL4XUPjC/QG4E2o6hPl3uZPUVErbajTTBLMA4G
|
||||
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKfUfvpGproH
|
||||
cwyFD+0sE3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0gAMEUCIQDa1k6R
|
||||
+luypvng6JMSKIyibptkwICToEAZlDqLeD+k1gIgGFXm1+p1QqxViOa+c1dUvjl0
|
||||
m1UCqGDwNTHDm5mO+es=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQzCCAeqgAwIBAgIRAJEAD5YytxsnFjw+liBjOQkwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
|
||||
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
|
||||
BFW1K2mz8XYewIsUh1qHqImFNbpW+ugND8c6QYB89mPOMHhxil9pE1fX0j/18+e4
|
||||
uohbFKOP8UTB15c1f/mFSEejXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
|
||||
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKfUfvpGproHcwyFD+0s
|
||||
E3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0cAMEQCIGrkModOvz6mcUDA
|
||||
Zql4YPXU/3ZUbMLw8VuSNHh47lg7AiAPLSKy/v8y8mhebGRCNTYwdkidQCQFrh+2
|
||||
BIirBFsT0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgtRT9fcsCMexhHlCO
|
||||
dfzBqkDIfC88UFE51dYxRHDSrMShRANCAAS4r7MB6WDw96YKpJIzOvqhXs1dQ3XQ
|
||||
5QMMX4aOwVLT1vZHOkPghRr2wMhJeQs1vVY+5RcnOWy6OyB/oYCCIPka
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGTCCAb+gAwIBAgIQKeRyEPaHSUPvshfEtmg9tzAKBggqhkjOPQQDAjBzMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
|
||||
b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla
|
||||
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
|
||||
YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcyLmV4YW1wbGUuY29tMFkw
|
||||
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuK+zAelg8PemCqSSMzr6oV7NXUN10OUD
|
||||
DF+GjsFS09b2RzpD4IUa9sDISXkLNb1WPuUXJzlsujsgf6GAgiD5GqNNMEswDgYD
|
||||
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgp9R++kamugdz
|
||||
DIUP7SwTdd8nNg1yJ/SM3C+A5QVngAUwCgYIKoZIzj0EAwIDSAAwRQIhAMIQLWEv
|
||||
wpaNibkXEGJlT0IzSIBsCjMJD7VaqZLKm5h9AiAlYmNBB8siyLLxFawvEB/4F26x
|
||||
e1jgyza7Yg+ardDzlw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAfCgAwIBAgIRANX86HJQn/543CANoioLOegwCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
|
||||
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABBp+58H8VypXHB9Hf/1ExZTmNdcBlTUgAmHH5sb9DizHXwljo6zdyXfZ
|
||||
cLvTCpoLybJ/rnp4PKJ7NKUDmrQymLWjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
|
||||
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIHu4uj/xHTyM
|
||||
9ZK9QyYGLnfQasSWPHt65FkoTfvT61qsMAoGCCqGSM49BAMCA0cAMEQCIBJ9N4PD
|
||||
mB+2gAPeDWYteAZ5Q2KR/E0zMQ13pDSunHNcAiBwWRzwscXxCPOJp1sjBMVp5Z1a
|
||||
nfIdbwvBbsl1XV/j0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAfCgAwIBAgIRANX86HJQn/543CANoioLOegwCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
|
||||
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABBp+58H8VypXHB9Hf/1ExZTmNdcBlTUgAmHH5sb9DizHXwljo6zdyXfZ
|
||||
cLvTCpoLybJ/rnp4PKJ7NKUDmrQymLWjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
|
||||
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIHu4uj/xHTyM
|
||||
9ZK9QyYGLnfQasSWPHt65FkoTfvT61qsMAoGCCqGSM49BAMCA0cAMEQCIBJ9N4PD
|
||||
mB+2gAPeDWYteAZ5Q2KR/E0zMQ13pDSunHNcAiBwWRzwscXxCPOJp1sjBMVp5Z1a
|
||||
nfIdbwvBbsl1XV/j0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICcjCCAhigAwIBAgIQEV3hkn7yJpdb29dDQvTKWDAKBggqhkjOPQQDAjB2MQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
||||
YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMz
|
||||
MTlaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcyLmV4YW1wbGUuY29t
|
||||
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpXRG2CwqI+F0UoMSImo3In9R7lze
|
||||
S+DuL1pLOjF5s05kVAcH604/9FRI61ujvWp4mYXornB+R1pcQwtolYNzPKOBojCB
|
||||
nzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
||||
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAge7i6P/EdPIz1kr1DJgYud9BqxJY8
|
||||
e3rkWShN+9PrWqwwMwYDVR0RBCwwKoIWcGVlcjEub3JnMi5leGFtcGxlLmNvbYIF
|
||||
cGVlcjGCCWxvY2FsaG9zdDAKBggqhkjOPQQDAgNIADBFAiEAmzFD5Dd4yR5lKy44
|
||||
Jdz4hy5AtRLQAmhlmLhli46z0r8CIDXFZJ7EwiD3F/jBT6906IFizjr9CD/DtOC9
|
||||
bxT5JhIN
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgxFdgRfevcXrABROv
|
||||
sV6HvrpoN5PHW6qXIFj71CAwtzyhRANCAASldEbYLCoj4XRSgxIiajcif1HuXN5L
|
||||
4O4vWks6MXmzTmRUBwfrTj/0VEjrW6O9aniZheiucH5HWlxDC2iVg3M8
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgXu7VBLhnEUi4mu4d
|
||||
tU1nT4lcMR9aoG29s5hLPmIKH/mhRANCAAQafufB/FcqVxwfR3/9RMWU5jXXAZU1
|
||||
IAJhx+bG/Q4sx18JY6Os3cl32XC70wqaC8myf656eDyiezSlA5q0Mpi1
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICSTCCAfCgAwIBAgIRANX86HJQn/543CANoioLOegwCgYIKoZIzj0EAwIwdjEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
|
||||
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIz
|
||||
MzE5WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
|
||||
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
|
||||
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABBp+58H8VypXHB9Hf/1ExZTmNdcBlTUgAmHH5sb9DizHXwljo6zdyXfZ
|
||||
cLvTCpoLybJ/rnp4PKJ7NKUDmrQymLWjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
|
||||
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIHu4uj/xHTyM
|
||||
9ZK9QyYGLnfQasSWPHt65FkoTfvT61qsMAoGCCqGSM49BAMCA0cAMEQCIBJ9N4PD
|
||||
mB+2gAPeDWYteAZ5Q2KR/E0zMQ13pDSunHNcAiBwWRzwscXxCPOJp1sjBMVp5Z1a
|
||||
nfIdbwvBbsl1XV/j0g==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICGjCCAcCgAwIBAgIRAIUbkOONvaq2DLJr9qZbDKwwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ
|
||||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABMLKHXm1xN7Tk4YzaWg4GYhLoyNjrjs5
|
||||
302o37m12U8LorR7IL5fdFgYILeL4XUPjC/QG4E2o6hPl3uZPUVErbajTTBLMA4G
|
||||
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKfUfvpGproH
|
||||
cwyFD+0sE3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0gAMEUCIQDa1k6R
|
||||
+luypvng6JMSKIyibptkwICToEAZlDqLeD+k1gIgGFXm1+p1QqxViOa+c1dUvjl0
|
||||
m1UCqGDwNTHDm5mO+es=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICQzCCAeqgAwIBAgIRAJEAD5YytxsnFjw+liBjOQkwCgYIKoZIzj0EAwIwczEL
|
||||
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
|
||||
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
|
||||
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5
|
||||
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
||||
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
|
||||
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
|
||||
BFW1K2mz8XYewIsUh1qHqImFNbpW+ugND8c6QYB89mPOMHhxil9pE1fX0j/18+e4
|
||||
uohbFKOP8UTB15c1f/mFSEejXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
|
||||
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKfUfvpGproHcwyFD+0s
|
||||
E3XfJzYNcif0jNwvgOUFZ4AFMAoGCCqGSM49BAMCA0cAMEQCIGrkModOvz6mcUDA
|
||||
Zql4YPXU/3ZUbMLw8VuSNHh47lg7AiAPLSKy/v8y8mhebGRCNTYwdkidQCQFrh+2
|
||||
BIirBFsT0g==
|
||||
-----END CERTIFICATE-----
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue