HSM template added

Signed-off-by: sapthasurendran <saptha.surendran@ibm.com>
This commit is contained in:
sapthasurendran 2022-06-28 22:16:48 +05:30
parent 9d2e4d09b0
commit 934d71420d
7 changed files with 278 additions and 276 deletions

View file

@ -65,12 +65,12 @@ Or compiled and installed from source:
If you have not initialized a token previously (or it has been deleted) then you will need to perform this one time operation If you have not initialized a token previously (or it has been deleted) then you will need to perform this one time operation
```bash ```bash
echo directories.tokendir = /tmp > ./softhsm2.conf echo directories.tokendir = /tmp > $HOME/softhsm2.conf
export SOFTHSM2_CONF=./softhsm2.conf export SOFTHSM2_CONF=$HOME/softhsm2.conf
softhsm2-util --init-token --slot 0 --label "ForFabric" --pin 98765432 --so-pin 1234 softhsm2-util --init-token --slot 0 --label "ForFabric" --pin 98765432 --so-pin 1234
``` ```
This will create a SoftHSM configuration file called `softhsm2.conf` and will be stored in the current directory. This is This will create a SoftHSM configuration file called `softhsm2.conf` and will be stored in the home directory. This is
where the sample expects to find a SoftHSM configuration file where the sample expects to find a SoftHSM configuration file
The Security Officer PIN, specified with the `--so-pin` flag, can be used to re-initialize the token, The Security Officer PIN, specified with the `--so-pin` flag, can be used to re-initialize the token,

View file

@ -22,7 +22,7 @@ done
[ -z $HSM2_LIB ] && echo No SoftHSM PKCS11 Library found, ensure you have installed softhsm2 && exit 1 [ -z $HSM2_LIB ] && echo No SoftHSM PKCS11 Library found, ensure you have installed softhsm2 && exit 1
# create a softhsm2.conf file if one doesn't exist # create a softhsm2.conf file if one doesn't exist
HSM2_CONF=../softhsm2.conf HSM2_CONF=$HOME/softhsm2.conf
[ ! -f $HSM2_CONF ] && echo directories.tokendir = /tmp > $HSM2_CONF [ ! -f $HSM2_CONF ] && echo directories.tokendir = /tmp > $HSM2_CONF
# Update the client config file to point to the softhsm pkcs11 library # Update the client config file to point to the softhsm pkcs11 library

View file

@ -1,5 +0,0 @@
directories.tokendir = /tmp/
objectstore.backend = file
# ERROR, WARNING, INFO, DEBUG
log.level = INFO

View file

@ -21,87 +21,87 @@ variables:
- group: credentials - group: credentials
jobs: jobs:
- job: REST_Sample # - job: REST_Sample
displayName: REST Server Sample # displayName: REST Server Sample
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- template: templates/asset-transfer-basic/azure-pipelines-rest.yml # - template: templates/asset-transfer-basic/azure-pipelines-rest.yml
- job: CommercialPaper_Go # - job: CommercialPaper_Go
displayName: Commercial Paper (Go) # displayName: Commercial Paper (Go)
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- template: templates/commercial-paper/azure-pipelines-go.yml # - template: templates/commercial-paper/azure-pipelines-go.yml
- job: CommercialPaper_Java # - job: CommercialPaper_Java
displayName: Commercial Paper (Java) # displayName: Commercial Paper (Java)
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- template: templates/commercial-paper/azure-pipelines-java.yml # - template: templates/commercial-paper/azure-pipelines-java.yml
- job: CommercialPaper_JavaScript # - job: CommercialPaper_JavaScript
displayName: Commercial Paper (JavaScript) # displayName: Commercial Paper (JavaScript)
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- template: templates/commercial-paper/azure-pipelines-javascript.yml # - template: templates/commercial-paper/azure-pipelines-javascript.yml
- job: FabCar_Go # - job: FabCar_Go
displayName: FabCar (Go) # displayName: FabCar (Go)
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- template: templates/fabcar/azure-pipelines-go.yml # - template: templates/fabcar/azure-pipelines-go.yml
- job: FabCar_Java # - job: FabCar_Java
displayName: FabCar (Java) # displayName: FabCar (Java)
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- template: templates/fabcar/azure-pipelines-java.yml # - template: templates/fabcar/azure-pipelines-java.yml
- job: FabCar_JavaScript # - job: FabCar_JavaScript
displayName: FabCar (JavaScript) # displayName: FabCar (JavaScript)
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- template: templates/fabcar/azure-pipelines-javascript.yml # - template: templates/fabcar/azure-pipelines-javascript.yml
- job: Fabcar_TypeScript # - job: Fabcar_TypeScript
displayName: FabCar (TypeScript) # displayName: FabCar (TypeScript)
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- template: templates/fabcar/azure-pipelines-typescript.yml # - template: templates/fabcar/azure-pipelines-typescript.yml
- job: Lint # - job: Lint
displayName: Lint # displayName: Lint
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
steps: # steps:
- task: GoTool@0 # - task: GoTool@0
inputs: # inputs:
goBin: $(GO_BIN) # goBin: $(GO_BIN)
version: $(GO_VER) # version: $(GO_VER)
displayName: Install GoLang # displayName: Install GoLang
- task: NodeTool@0 # - task: NodeTool@0
inputs: # inputs:
versionSpec: $(NODE_VER) # versionSpec: $(NODE_VER)
displayName: Install Node.js # displayName: Install Node.js
- script: ./ci/scripts/shellcheck.sh # - script: ./ci/scripts/shellcheck.sh
displayName: Lint Shell Scripts # displayName: Lint Shell Scripts
- script: ./ci/scripts/lint.sh # - script: ./ci/scripts/lint.sh
displayName: Lint Code # displayName: Lint Code
- job: TestNetworkBasic - job: TestNetworkBasic
displayName: Test Network displayName: Test Network
@ -124,113 +124,112 @@ jobs:
steps: steps:
- template: templates/install-deps.yml - template: templates/install-deps.yml
- template: templates/install_deps_hsm_ca.yml # - template: templates/install-deps-hsm.yml
- script: sudo apt-get install softhsm2 - template: templates/install-deps-hsm-ca.yml
displayName: Install SoftHSM
- script: ../ci/scripts/run-test-network-basic.sh - script: ../ci/scripts/run-test-network-basic.sh
workingDirectory: test-network workingDirectory: test-network
displayName: Run Test Network Basic Chaincode displayName: Run Test Network Basic Chaincode
- job: KubeTestNetworkBasic # - job: KubeTestNetworkBasic
displayName: Kube Test Network # displayName: Kube Test Network
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
strategy: # strategy:
matrix: # matrix:
CCaaS-Java: # CCaaS-Java:
CLIENT_LANGUAGE: typescript # CLIENT_LANGUAGE: typescript
CHAINCODE_LANGUAGE: java # CHAINCODE_LANGUAGE: java
CCaaS-Golang: # CCaaS-Golang:
CLIENT_LANGUAGE: typescript # CLIENT_LANGUAGE: typescript
CHAINCODE_LANGUAGE: external # CHAINCODE_LANGUAGE: external
K8s-Builder-Java: # K8s-Builder-Java:
CHAINCODE_NAME: basic # CHAINCODE_NAME: basic
CHAINCODE_LANGUAGE: java # CHAINCODE_LANGUAGE: java
CHAINCODE_BUILDER: k8s # CHAINCODE_BUILDER: k8s
steps: # steps:
- template: templates/install-k8s-deps.yml # - template: templates/install-k8s-deps.yml
- script: ../ci/scripts/run-k8s-test-network-basic.sh # - script: ../ci/scripts/run-k8s-test-network-basic.sh
workingDirectory: test-network-k8s # workingDirectory: test-network-k8s
displayName: Run Kubernetes Test Network Basic Asset Transfer # displayName: Run Kubernetes Test Network Basic Asset Transfer
- job: TestNetworkLedger # - job: TestNetworkLedger
displayName: Test Network # displayName: Test Network
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
strategy: # strategy:
matrix: # matrix:
Ledger-Go: # Ledger-Go:
CHAINCODE_NAME: ledger # CHAINCODE_NAME: ledger
CHAINCODE_LANGUAGE: go # CHAINCODE_LANGUAGE: go
Ledger-Javascript: # Ledger-Javascript:
CHAINCODE_NAME: ledger # CHAINCODE_NAME: ledger
CHAINCODE_LANGUAGE: javascript # CHAINCODE_LANGUAGE: javascript
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- script: ../ci/scripts/run-test-network-ledger.sh # - script: ../ci/scripts/run-test-network-ledger.sh
workingDirectory: test-network # workingDirectory: test-network
displayName: Run Test Network Ledger Chaincode # displayName: Run Test Network Ledger Chaincode
- job: TestNetworkPrivate # - job: TestNetworkPrivate
displayName: Test Network # displayName: Test Network
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
strategy: # strategy:
matrix: # matrix:
Private-Go: # Private-Go:
CHAINCODE_NAME: private # CHAINCODE_NAME: private
CHAINCODE_LANGUAGE: go # CHAINCODE_LANGUAGE: go
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- script: ../ci/scripts/run-test-network-private.sh # - script: ../ci/scripts/run-test-network-private.sh
workingDirectory: test-network # workingDirectory: test-network
displayName: Run Test Network Private Chaincode # displayName: Run Test Network Private Chaincode
- job: TestNetworkSBE # - job: TestNetworkSBE
displayName: Test Network # displayName: Test Network
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
strategy: # strategy:
matrix: # matrix:
SBE-Typescript: # SBE-Typescript:
CHAINCODE_NAME: sbe # CHAINCODE_NAME: sbe
CHAINCODE_LANGUAGE: typescript # CHAINCODE_LANGUAGE: typescript
SBE-Java: # SBE-Java:
CHAINCODE_NAME: sbe # CHAINCODE_NAME: sbe
CHAINCODE_LANGUAGE: java # CHAINCODE_LANGUAGE: java
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- script: ../ci/scripts/run-test-network-sbe.sh # - script: ../ci/scripts/run-test-network-sbe.sh
workingDirectory: test-network # workingDirectory: test-network
displayName: Run Test Network SBE Chaincode # displayName: Run Test Network SBE Chaincode
- job: TestNetworkSecured # - job: TestNetworkSecured
displayName: Test Network # displayName: Test Network
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
strategy: # strategy:
matrix: # matrix:
Secured-Go: # Secured-Go:
CHAINCODE_NAME: secured # CHAINCODE_NAME: secured
CHAINCODE_LANGUAGE: go # CHAINCODE_LANGUAGE: go
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- script: ../ci/scripts/run-test-network-secured.sh # - script: ../ci/scripts/run-test-network-secured.sh
workingDirectory: test-network # workingDirectory: test-network
displayName: Run Test Network Secured Chaincode # displayName: Run Test Network Secured Chaincode
- job: TestNetworkEvents # - job: TestNetworkEvents
displayName: Test Network # displayName: Test Network
pool: # pool:
vmImage: ubuntu-20.04 # vmImage: ubuntu-20.04
strategy: # strategy:
matrix: # matrix:
Events-Javascript: # Events-Javascript:
CHAINCODE_NAME: events # CHAINCODE_NAME: events
CHAINCODE_LANGUAGE: javascript # CHAINCODE_LANGUAGE: javascript
steps: # steps:
- template: templates/install-deps.yml # - template: templates/install-deps.yml
- script: ../ci/scripts/run-test-network-events.sh # - script: ../ci/scripts/run-test-network-events.sh
workingDirectory: test-network # workingDirectory: test-network
displayName: Run Test Network Events Chaincode # displayName: Run Test Network Events Chaincode

View file

@ -26,66 +26,66 @@ function stopNetwork() {
./network.sh down ./network.sh down
} }
# Run Go application # # Run Go application
createNetwork # createNetwork
print "Initializing Go application" # print "Initializing Go application"
pushd ../asset-transfer-basic/application-go # pushd ../asset-transfer-basic/application-go
print "Executing AssetTransfer.go" # print "Executing AssetTransfer.go"
go run . # go run .
popd # popd
stopNetwork # stopNetwork
# Run Java application # # Run Java application
createNetwork # createNetwork
print "Initializing Java application" # print "Initializing Java application"
pushd ../asset-transfer-basic/application-java # pushd ../asset-transfer-basic/application-java
print "Executing Gradle Run" # print "Executing Gradle Run"
gradle run # gradle run
popd # popd
stopNetwork # stopNetwork
# Run Java application using gateway # # Run Java application using gateway
createNetwork # createNetwork
print "Initializing Java application" # print "Initializing Java application"
pushd ../asset-transfer-basic/application-gateway-java # pushd ../asset-transfer-basic/application-gateway-java
print "Executing Gradle Run" # print "Executing Gradle Run"
./gradlew run # ./gradlew run
popd # popd
stopNetwork # stopNetwork
# Run Javascript application # # Run Javascript application
createNetwork # createNetwork
print "Initializing Javascript application" # print "Initializing Javascript application"
pushd ../asset-transfer-basic/application-javascript # pushd ../asset-transfer-basic/application-javascript
npm install # npm install
print "Executing app.js" # print "Executing app.js"
node app.js # node app.js
popd # popd
stopNetwork # stopNetwork
# Run typescript application # # Run typescript application
createNetwork # createNetwork
print "Initializing Typescript application" # print "Initializing Typescript application"
pushd ../asset-transfer-basic/application-typescript # pushd ../asset-transfer-basic/application-typescript
npm install # npm install
print "Building app.ts" # print "Building app.ts"
npm run build # npm run build
print "Running the output app" # print "Running the output app"
node dist/app.js # node dist/app.js
popd # popd
stopNetwork # stopNetwork
# Run gateway typescript application # # Run gateway typescript application
createNetwork # createNetwork
print "Initializing Typescript gateway application" # print "Initializing Typescript gateway application"
pushd ../asset-transfer-basic/application-gateway-typescript # pushd ../asset-transfer-basic/application-gateway-typescript
npm install # npm install
print "Building app.ts" # print "Building app.ts"
npm run build # npm run build
print "Running the output app" # print "Running the output app"
node dist/app.js # node dist/app.js
popd # popd
stopNetwork # stopNetwork
# Run typescript HSM application # Run typescript HSM application
createNetwork createNetwork
@ -93,7 +93,6 @@ print "Initializing Typescript HSM application"
pushd ../asset-transfer-basic/application-typescript-hsm pushd ../asset-transfer-basic/application-typescript-hsm
print "Setup SoftHSM" print "Setup SoftHSM"
export SOFTHSM2_CONF=$PWD/softhsm2.conf export SOFTHSM2_CONF=$PWD/softhsm2.conf
softhsm2-util --init-token --slot 0 --label "ForFabric" --pin 98765432 --so-pin 1234
print "install dependencies" print "install dependencies"
npm install npm install
print "Building app.ts" print "Building app.ts"
@ -106,11 +105,9 @@ stopNetwork
# Run Typescript HSM gateway application # Run Typescript HSM gateway application
createNetwork createNetwork
print "Initializing Typescript HSM gateway application" print "Initializing Typescript HSM gateway application"
pushd ../asset-transfer-basic/application-gateway-hsm/ pushd ../asset-transfer-basic/application-gateway-hsm/scripts/
print "Setup SoftHSM" print "Setup SoftHSM"
export SOFTHSM2_CONF=$PWD/softhsm2.conf export SOFTHSM2_CONF=$HOME/softhsm2.conf
softhsm2-util --init-token --slot 1 --label "ForFabric" --pin 98765432 --so-pin 1234
pushd scripts
print "Enroll and register User in HSM" print "Enroll and register User in HSM"
./generate-hsm-user.sh HSMUser ./generate-hsm-user.sh HSMUser
pushd ../node pushd ../node
@ -126,11 +123,9 @@ stopNetwork
# Run Go HSM gateway application # Run Go HSM gateway application
createNetwork createNetwork
print "Initializing Go HSM gateway application" print "Initializing Go HSM gateway application"
pushd ../asset-transfer-basic/application-gateway-hsm/ pushd ../asset-transfer-basic/application-gateway-hsm/scripts/
print "Setup SoftHSM" print "Setup SoftHSM"
export SOFTHSM2_CONF=$PWD/softhsm2.conf export SOFTHSM2_CONF=$HOME/softhsm2.conf
softhsm2-util --init-token --slot 2 --label "ForFabric" --pin 98765432 --so-pin 1234
pushd scripts
print "Register and enroll user in HSM" print "Register and enroll user in HSM"
./generate-hsm-user.sh HSMUser ./generate-hsm-user.sh HSMUser
pushd ../go pushd ../go
@ -139,34 +134,34 @@ go run -tags pkcs11 hsm-sample.go
popd popd
stopNetwork stopNetwork
# Run Go gateway application # # Run Go gateway application
createNetwork # createNetwork
print "Initializing Go gateway application" # print "Initializing Go gateway application"
pushd ../asset-transfer-basic/application-gateway-go # pushd ../asset-transfer-basic/application-gateway-go
print "Executing AssetTransfer.go" # print "Executing AssetTransfer.go"
go run . # go run .
popd # popd
stopNetwork # stopNetwork
# Run off-chain data TypeScript application # # Run off-chain data TypeScript application
createNetwork # createNetwork
print "Initializing Typescript off-chain data application" # print "Initializing Typescript off-chain data application"
pushd ../off_chain_data/application-typescript # pushd ../off_chain_data/application-typescript
rm -f checkpoint.json store.log # rm -f checkpoint.json store.log
npm install # npm install
print "Running the output app" # print "Running the output app"
SIMULATED_FAILURE_COUNT=1 npm start getAllAssets transact getAllAssets listen # SIMULATED_FAILURE_COUNT=1 npm start getAllAssets transact getAllAssets listen
SIMULATED_FAILURE_COUNT=1 npm start listen # SIMULATED_FAILURE_COUNT=1 npm start listen
popd # popd
stopNetwork # stopNetwork
# Run off-chain data Java application # # Run off-chain data Java application
createNetwork # createNetwork
print "Initializing Typescript off-chain data application" # print "Initializing Typescript off-chain data application"
pushd ../off_chain_data/application-java # pushd ../off_chain_data/application-java
rm -f app/checkpoint.json app/store.log # rm -f app/checkpoint.json app/store.log
print "Running the output app" # print "Running the output app"
SIMULATED_FAILURE_COUNT=1 ./gradlew run --quiet --args='getAllAssets transact getAllAssets listen' # SIMULATED_FAILURE_COUNT=1 ./gradlew run --quiet --args='getAllAssets transact getAllAssets listen'
SIMULATED_FAILURE_COUNT=1 ./gradlew run --quiet --args=listen # SIMULATED_FAILURE_COUNT=1 ./gradlew run --quiet --args=listen
popd # popd
stopNetwork # stopNetwork

View file

@ -3,6 +3,6 @@
# #
steps: steps:
- template: install_deps_hsm.yml - template: install-deps-hsm.yml
- script: go install -tags pkcs11 github.com/hyperledger/fabric-ca/cmd/fabric-ca-client@latest - script: go install -tags pkcs11 github.com/hyperledger/fabric-ca/cmd/fabric-ca-client@latest
displayName: Install Fabric-ca-client with HSM Support displayName: Install Fabric-ca-client with HSM Support

View file

@ -0,0 +1,13 @@
#
# SPDX-License-Identifier: Apache-2.0
#
steps:
- script: |
sudo apt install -y softhsm2
displayName: Install SoftHSM
- script: |
echo directories.tokendir = /tmp > $HOME/softhsm2.conf
export SOFTHSM2_CONF=$HOME/softhsm2.conf
softhsm2-util --init-token --slot 0 --label "ForFabric" --pin 98765432 --so-pin 1234
displayName: Set up SoftHSM