aboutsummaryrefslogtreecommitdiffstats
path: root/bin/caservicecontainer/multithreadimport.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/caservicecontainer/multithreadimport.sh')
-rwxr-xr-xbin/caservicecontainer/multithreadimport.sh93
1 files changed, 93 insertions, 0 deletions
diff --git a/bin/caservicecontainer/multithreadimport.sh b/bin/caservicecontainer/multithreadimport.sh
new file mode 100755
index 0000000..9b092ff
--- /dev/null
+++ b/bin/caservicecontainer/multithreadimport.sh
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+# NOTE - This scripts expects the Init and the Duplicate tools to be already
+# run and the output files(listed in README) to be present at the
+# shared volume (input for Import tool)
+# It also requires the following ENVIRONMENT variables to be set
+# SECRETS_FOLDER - containing the srk_handl and prk_passwd files in base64
+# DATA_FOLDER - containing the files that are produced from the distcenter
+
+set -e
+
+#Primary Key Password used by TPM Plugin to load keys
+export TPM_PRK_PASSWORD="$(cat ${SECRETS_FOLDER}/prk_passwd | base64 -d)"
+#Handle to the aforementioned Primary Key
+SRK_HANDLE="$(cat ${SECRETS_FOLDER}/srk_handle | base64 -d)"
+#key_id is the parameter expected by SoftHSM
+key_id="8738"
+#Key_label is the parameter expected by SoftHSM
+key_label="ABC"
+#UserPin for the SoftHSM operations
+upin="123456789"
+#SoPin for the SoftHSM operations
+sopin="123456789"
+#Slot number for the SoftHSM operations. Initially it should be started with 0
+slot_no="0"
+#Name for creating the slot used by SoftHSM
+token_no="Token1"
+#cert_id is the input for the application which is hexadecimal equivalent of key_id
+cert_id=$(printf '%x' ${key_id})
+#Set working dir
+WORKDIR=$PWD
+#Process count for the Stress test
+count="15"
+
+# 1.Initialize the token/
+ softhsm2-util --init-token --slot ${slot_no} --label "${token_name}" \
+ --pin ${upin} --so-pin ${sopin}
+ softhsm2-util --show-slots | grep 'Slot ' | cut -d\ -f2 | head -1 >> slotinfo.txt
+ SoftHSMv2SlotID="$(cat slotinfo.txt)"
+ echo "The slot ID used is ${SoftHSMv2SlotID}"
+
+# 2.Plugin directory for the SoftHSM to load plugin and for further operations
+if [ -f ${DATA_FOLDER}/out_parent_public ]; then
+
+ # 2.a Copy the required input files for the Import tool
+ cp ${DATA_FOLDER}/dup* /tpm-util/bin/
+
+ # 2.b Run the Import Utility
+ cd /tpm-util/bin
+ ./ossl_tpm_import -H $SRK_HANDLE -dupPub dupPub -dupPriv dupPriv \
+ -dupSymSeed dupSymseed -dupEncKey dupEncKey -pub outPub -priv outPriv \
+ -password $TPM_PRK_PASSWORD
+
+ cd $WORKDIR
+ ./softhsmconfig.sh $SRK_HANDLE $key_id $key_label $upin $sopin $SoftHSMv2SlotID
+else
+
+# 3 SoftHSM mode implementation
+
+ echo "TPM hardware unavailable. Using SoftHSM implementation"
+
+ cd ${DATA_FOLDER}
+
+ # 3.a Extract the Private key using passphrase
+ cat passphrase | gpg --batch --yes --passphrase-fd 0 privkey.pem.gpg
+
+ # 3.b Convert the Private key pem into der format
+ openssl rsa -in ./privkey.pem -outform DER -out privatekey.der
+
+ # 3.c Load the Private key into SoftHSM
+ pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l --pin ${upin} \
+ --write-object ./privatekey.der --type privkey --id ${cert_id} --label ${key_label}
+
+fi
+
+# 3.a Application operation
+cd ${DATA_FOLDER}
+
+# 3.b Convert the crt to der format
+openssl x509 -in ca.cert -outform der -out ca.der
+cp ca.cert /testca/tests/multithread/
+
+# 3.c Add the ca certificate
+pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l --pin ${upin} \
+--write-object ./ca.der --type cert --id ${cert_id}
+
+# 4. Calling the functionalities of the sample application
+cd $WORKDIR
+./multithreadapplication.sh $key_label $SoftHSMv2SlotID $upin $cert_id
+
+# 5. Cleanup
+cd $WORKDIR
+rm -rf slotinfo.txt