123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- # set -e
- source helpers.sh
- start_up
- CRYPTO_PROFILE="ECC"
- setup_fapi $CRYPTO_PROFILE
- function cleanup {
- tss2 delete --path=/
- shut_down
- }
- trap cleanup EXIT
- # openssl ecparam -name secp256r1 -genkey -noout -out key_priv.pem
- # openssl ec -in key_priv.pem -pubout -out key_pub.pem
- # -----BEGIN PUBLIC KEY-----
- # MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAw+PKFksCw+ikD76l6BMeXfebcZx
- # Gf8QGWT2MOy8tOfpe6m+6MUUm2GUijGPkvCTjtJPOJz//XMom+k+7OaWmA==
- # -----END PUBLIC KEY-----
- # -----BEGIN EC PRIVATE KEY-----
- # MHcCAQEEICf0OXKKsPkEVR1jsPOKSQQJnJVimamLYwLDZwJDj7etoAoGCCqGSM49
- # AwEHoUQDQgAEAw+PKFksCw+ikD76l6BMeXfebcZxGf8QGWT2MOy8tOfpe6m+6MUU
- # m2GUijGPkvCTjtJPOJz//XMom+k+7OaWmA==
- # -----END EC PRIVATE KEY-----
- KEY_PATH_1=HS/SRK/mySignKey1
- KEY_PATH_2=HS/SRK/mySignKey2
- SIGN_POLICY_DATA=pol_signed.json
- SIGN_POLICY_DATA_KEY_HINT=pol_signed_key_hint.json
- POLICY_SIGNED=policy/policy-signed
- POLICY_SIGNED_KEY_HINT=policy/policy-signed_key_hint
- TEST_SIGNATURE_FILE=test_signature.file
- SIGNATURE_FILE=signature.file
- DIGEST_FILE=digest.file
- PRIV_KEY_FILE=priv_key.file
- LOG_FILE=$TEMP_DIR/log.file
- touch $LOG_FILE
- EMPTY_FILE=$TEMP_DIR/empty.file
- BIG_FILE=$TEMP_DIR/big_file.file
- # Setup Policy Signed
- cat > $SIGN_POLICY_DATA_KEY_HINT <<EOF
- {
- "description":"Description pol_signed",
- "policy":[
- {
- "type": "POLICYSIGNED",
- "keyPEM": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAw+PKFksCw+ikD76l6BMeXfebcZx\nGf8QGWT2MOy8tOfpe6m+6MUUm2GUijGPkvCTjtJPOJz//XMom+k+7OaWmA==\n-----END PUBLIC KEY-----",
- "keyPEMhashAlg": "SHA1",
- "publicKeyHint": "My Signature Key"
- }
- ]
- }
- EOF
- cat > $SIGN_POLICY_DATA <<EOF
- {
- "description":"Description pol_signed",
- "policy":[
- {
- "type": "POLICYSIGNED",
- "keyPEM": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAw+PKFksCw+ikD76l6BMeXfebcZx\nGf8QGWT2MOy8tOfpe6m+6MUUm2GUijGPkvCTjtJPOJz//XMom+k+7OaWmA==\n-----END PUBLIC KEY-----",
- "keyPEMhashAlg": "SHA1",
- }
- ]
- }
- EOF
- # Write private pem key to file
- cat > $PRIV_KEY_FILE <<EOF
- -----BEGIN EC PRIVATE KEY-----
- MHcCAQEEICf0OXKKsPkEVR1jsPOKSQQJnJVimamLYwLDZwJDj7etoAoGCCqGSM49
- AwEHoUQDQgAEAw+PKFksCw+ikD76l6BMeXfebcZxGf8QGWT2MOy8tOfpe6m+6MUU
- m2GUijGPkvCTjtJPOJz//XMom+k+7OaWmA==
- -----END EC PRIVATE KEY-----
- EOF
- echo -n 01234567890123456789 > $DIGEST_FILE
- tss2 provision
- tss2 import --path=$POLICY_SIGNED --importData=$SIGN_POLICY_DATA
- tss2 import --path=$POLICY_SIGNED_KEY_HINT --importData=$SIGN_POLICY_DATA_KEY_HINT
- tss2 createkey --path $KEY_PATH_1 --type="sign, noda" \
- --policyPath $POLICY_SIGNED --authValue ""
- tss2 createkey --path $KEY_PATH_2 --type="sign, noda" \
- --policyPath $POLICY_SIGNED_KEY_HINT --authValue ""
- OUTPUT_FILE=$TEMP_DIR/data2sign.file
- expect <<EOF
- spawn sh -c "tss2 sign --keyPath=$KEY_PATH_1 --digest=$DIGEST_FILE --signature=$TEST_SIGNATURE_FILE --force 2> $LOG_FILE"
- expect "Filename for nonce output: " {
- send "$OUTPUT_FILE\r"
- expect "Filename for signature input: " {
- exec openssl dgst -sha1 -sign $PRIV_KEY_FILE -out $SIGNATURE_FILE $OUTPUT_FILE
- send "$SIGNATURE_FILE\r"
- exp_continue
- }
- }
- EOF
- if grep "ERROR" $LOG_FILE > /dev/null
- then
- cat $LOG_FILE
- exit 1
- fi
- expect <<EOF
- spawn sh -c "tss2 sign --keyPath=$KEY_PATH_2 --digest=$DIGEST_FILE --signature=$TEST_SIGNATURE_FILE --force 2> $LOG_FILE"
- expect "Filename for nonce output: " {
- send "$OUTPUT_FILE\r"
- expect "Filename for signature input: " {
- exec openssl dgst -sha1 -sign $PRIV_KEY_FILE -out $SIGNATURE_FILE $OUTPUT_FILE
- send "$SIGNATURE_FILE\r"
- exp_continue
- }
- }
- EOF
- if grep "ERROR" $LOG_FILE > /dev/null
- then
- cat $LOG_FILE
- exit 1
- fi
- echo "sign callback with BIG_FILE" # Expected to fail
- expect <<EOF
- spawn sh -c "tss2 sign --keyPath=$KEY_PATH_1 --digest=$DIGEST_FILE --signature=$TEST_SIGNATURE_FILE --force 2> $LOG_FILE"
- expect "Filename for nonce output: " {
- send "$OUTPUT_FILE\r"
- expect "Filename for signature input: " {
- exec openssl dgst -sha1 -sign $PRIV_KEY_FILE -out $SIGNATURE_FILE $OUTPUT_FILE
- send "$BIG_FILE\r"
- set ret [wait]
- if {[lindex \$ret 2] || [lindex \$ret 3] == 0} {
- send_user "\n[lindex \$ret]\n"
- send_user "Command not failed as expected\n"
- exit 1
- }
- }
- set ret [wait]
- if {[lindex \$ret 2] || [lindex \$ret 3] == 0} {
- set file [open $LOG_FILE r]
- set log [read \$file]
- close $file
- send_user "\n[lindex \$ret]\n"
- send_user "Command has not failed as expected\n"
- exit 1
- }
- }
- EOF
- if [[ "`cat $LOG_FILE`" == $SANITIZER_FILTER ]]; then
- echo "Error: AddressSanitizer triggered."
- cat $LOG_FILE
- exit 1
- fi
- echo "sign callback with EMPTY_FILE" # Expected to fail
- expect <<EOF
- spawn sh -c "tss2 sign --keyPath=$KEY_PATH_1 --digest=$DIGEST_FILE --signature=$TEST_SIGNATURE_FILE --force 2> $LOG_FILE"
- expect "Filename for nonce output: " {
- send "$OUTPUT_FILE\r"
- expect "Filename for signature input: " {
- exec openssl dgst -sha1 -sign $PRIV_KEY_FILE -out $SIGNATURE_FILE $OUTPUT_FILE
- send "$EMPTY_FILE\r"
- set ret [wait]
- if {[lindex \$ret 2] || [lindex \$ret 3] == 0} {
- send_user "\n[lindex \$ret]\n"
- send_user "Command has not failed as expected\n"
- exit 1
- }
- }
- set ret [wait]
- if {[lindex \$ret 2] || [lindex \$ret 3] == 0} {
- set file [open $LOG_FILE r]
- set log [read \$file]
- close $file
- send_user "\n[lindex \$ret]\n"
- send_user "Command has not failed as expected\n"
- exit 1
- }
- }
- EOF
- if [[ "`cat $LOG_FILE`" == $SANITIZER_FILTER ]]; then
- echo "Error: AddressSanitizer triggered."
- cat $LOG_FILE
- exit 1
- fi
- exit 0
|