echo ""
echo "Primary key - CreatePrimary"
echo ""

echo "Create a primary storage key"
${PREFIX}createprimary -hi p -pwdk sto > run.out
checkSuccess $?

echo "Read the public part"
${PREFIX}readpublic -ho 80000001 > run.out
checkSuccess $?

echo "Create a storage key under the primary key"
${PREFIX}create -hp 80000001 -st -kt f -kt p -opr tmppriv.bin -opu tmppub.bin -pwdp sto -pwdk sto > run.out
checkSuccess $?

echo "Load the storage key under the primary key"
${PREFIX}load -hp 80000001 -ipr tmppriv.bin -ipu tmppub.bin -pwdp sto > run.out
checkSuccess $?

echo "Flush the storage key"
${PREFIX}flushcontext -ha 80000002 > run.out
checkSuccess $?

echo "Flush the primary storage key"
${PREFIX}flushcontext -ha 80000001 > run.out
checkSuccess $?

echo "Load the storage key under the primary key - should fail"
${PREFIX}load -hp 80000001 -ipr tmppriv.bin -ipu tmppub.bin -pwdp sto > run.out
checkFailure $?

echo ""
echo "Primary key - CreatePrimary with no unique field"
echo ""

# no unique 

echo "Create a primary storage key with no unique field"
${PREFIX}createprimary -hi p -pwdk sto > run.out
checkSuccess $?

echo "Create a storage key under the primary key"
${PREFIX}create -hp 80000001 -st -kt f -kt p -opr tmppriv.bin -opu tmppub.bin -pwdp sto -pwdk sto > run.out
checkSuccess $?

echo "Load the storage key under the primary key"
${PREFIX}load -hp 80000001 -ipr tmppriv.bin -ipu tmppub.bin -pwdp sto > run.out
checkSuccess $?

echo "Flush the storage key"
${PREFIX}flushcontext -ha 80000002 > run.out
checkSuccess $?

echo "Flush the primary storage key"
${PREFIX}flushcontext -ha 80000001 > run.out
checkSuccess $?

# empty unique

echo "Create a primary storage key with empty unique field"
touch empty.bin
${PREFIX}createprimary -hi p -pwdk sto -iu empty.bin > run.out
checkSuccess $?

echo "Load the original storage key under the primary key with empty unique field"
${PREFIX}load -hp 80000001 -ipr tmppriv.bin -ipu tmppub.bin -pwdp sto > run.out
checkSuccess $?

echo "Flush the storage key"
${PREFIX}flushcontext -ha 80000002 > run.out
checkSuccess $?

echo "Flush the primary storage key"
${PREFIX}flushcontext -ha 80000001 > run.out
checkSuccess $?

echo ""
echo "Primary key - CreatePrimary with unique field"
echo ""

# unique

echo "Create a primary storage key with unique field"
touch empty.bin
${PREFIX}createprimary -hi p -pwdk sto -iu policies/aaa > run.out
checkSuccess $?

echo "Load the original storage key under the primary key - should fail"
${PREFIX}load -hp 80000001 -ipr tmppriv.bin -ipu tmppub.bin -pwdp sto > run.out
checkFailure $?

echo "Create a storage key under the primary key"
${PREFIX}create -hp 80000001 -st -kt f -kt p -opr tmppriv.bin -opu tmppub.bin -pwdp sto -pwdk sto > run.out
checkSuccess $?

echo "Load the storage key under the primary key"
${PREFIX}load -hp 80000001 -ipr tmppriv.bin -ipu tmppub.bin -pwdp sto > run.out
checkSuccess $?

echo "Flush the storage key"
${PREFIX}flushcontext -ha 80000002 > run.out
checkSuccess $?

echo "Flush the primary storage key"
${PREFIX}flushcontext -ha 80000001 > run.out
checkSuccess $?

# same unique

echo "Create a primary storage key with same unique field"
${PREFIX}createprimary -hi p -pwdk sto -iu policies/aaa > run.out
checkSuccess $?

echo "Load the previous storage key under the primary key"
${PREFIX}load -hp 80000001 -ipr tmppriv.bin -ipu tmppub.bin -pwdp sto > run.out
checkSuccess $?

echo "Flush the storage key"
${PREFIX}flushcontext -ha 80000002 > run.out
checkSuccess $?

echo "Flush the primary storage key"
${PREFIX}flushcontext -ha 80000001 > run.out
checkSuccess $?

# cleanup

rm -f empty.bin

# ${PREFIX}getcapability  -cap 1 -pr 80000000

