From a2dbd9090392c765c3ded12ad82613d3f574a76d Mon Sep 17 00:00:00 2001 From: paulavidas <paulavidas@google.com> Date: Mon, 15 Jul 2019 07:18:44 -0700 Subject: [PATCH] Add more tests. PiperOrigin-RevId: 258156184 --- .../cc/digital_signatures_cli_test.sh | 104 +++++++++++++++--- 1 file changed, 90 insertions(+), 14 deletions(-) diff --git a/examples/digital_signatures/cc/digital_signatures_cli_test.sh b/examples/digital_signatures/cc/digital_signatures_cli_test.sh index 731df5579..9176f358c 100755 --- a/examples/digital_signatures/cc/digital_signatures_cli_test.sh +++ b/examples/digital_signatures/cc/digital_signatures_cli_test.sh @@ -4,7 +4,7 @@ #### Tests for digital_signatures_cli binary. ROOT_DIR="$TEST_SRCDIR/tink" -DIGITAL_SIGNATURES_CLI="$ROOT_DIR/examples/digital_signatures/cc/digital_signatures_cli" +SIGNATURE_CLI="$ROOT_DIR/examples/digital_signatures/cc/digital_signatures_cli" PRIVATE_KEYSET_FILE="$TEST_TMPDIR/private_keyset.bin" PUBLIC_KEYSET_FILE="$TEST_TMPDIR/public_keyset.bin" @@ -12,26 +12,102 @@ MESSAGE_FILE="$TEST_TMPDIR/message.txt" SIGNATURE_FILE="$TEST_TMPDIR/signature.bin" RESULT_FILE="$TEST_TMPDIR/result.txt" +OTHER_PRIVATE_KEYSET_FILE="$TEST_TMPDIR/other_private_keyset.bin" +OTHER_PUBLIC_KEYSET_FILE="$TEST_TMPDIR/other_public_keyset.bin" +OTHER_MESSAGE_FILE="$TEST_TMPDIR/other_message.txt" + +echo "This is a message." > $MESSAGE_FILE +echo "This is a different message." > $OTHER_MESSAGE_FILE + ############################################################################# +#### Helper function that checks if values are equal. -#### Genetate a private key and get a public key. -$DIGITAL_SIGNATURES_CLI gen-private-key $PRIVATE_KEYSET_FILE -$DIGITAL_SIGNATURES_CLI get-public-key $PRIVATE_KEYSET_FILE $PUBLIC_KEYSET_FILE +assert_equal() { + if [ "$1" == "$2" ]; then + echo "+++ Success: values are equal." + else + echo "--- Failure: values are different. Expected: [$1], actual: [$2]." + exit 1 + fi +} -#### Create a message. -echo "This is a message." > $MESSAGE_FILE +############################################################################# +#### All good, everything should work. +test_name="all_good" +echo "+++ Starting test $test_name..." + +#### Generate a private key and get a public key. +$SIGNATURE_CLI gen-private-key $PRIVATE_KEYSET_FILE || exit 1 +$SIGNATURE_CLI get-public-key $PRIVATE_KEYSET_FILE $PUBLIC_KEYSET_FILE || exit 1 #### Sign the message. -$DIGITAL_SIGNATURES_CLI sign $PRIVATE_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE +$SIGNATURE_CLI sign $PRIVATE_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE || exit 1 #### Verify the signature. -$DIGITAL_SIGNATURES_CLI verify $PUBLIC_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE $RESULT_FILE +$SIGNATURE_CLI verify $PUBLIC_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE $RESULT_FILE || exit 1 #### Check that the signature is valid. RESULT=$(<$RESULT_FILE) -if [ $RESULT == "valid" ]; then - echo "+++ Success: signature is valid." -else - echo "--- Failure: signature is not valid." - exit 1 -fi +assert_equal "valid" "$RESULT" + +############################################################################# +#### Bad private key when getting the public key. +test_name="get_public_key_with_bad_private_key" +echo "+++ Starting test $test_name..." + +echo "abcd" >> $PRIVATE_KEYSET_FILE +$SIGNATURE_CLI get-public-key $PRIVATE_KEYSET_FILE $PUBLIC_KEYSET_FILE + +EXIT_VALUE="$?" +assert_equal 1 "$EXIT_VALUE" + +############################################################################# +#### Different public key when verifying a signature. +test_name="verify_with_different_public_key" +echo "+++ Starting test $test_name..." + +$SIGNATURE_CLI gen-private-key $PRIVATE_KEYSET_FILE || exit 1 +$SIGNATURE_CLI gen-private-key $OTHER_PRIVATE_KEYSET_FILE || exit 1 +$SIGNATURE_CLI get-public-key $OTHER_PRIVATE_KEYSET_FILE $OTHER_PUBLIC_KEYSET_FILE || exit 1 +$SIGNATURE_CLI sign $PRIVATE_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE || exit 1 +$SIGNATURE_CLI verify $OTHER_PUBLIC_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE $RESULT_FILE || exit 1 + +RESULT=$(<$RESULT_FILE) +assert_equal "invalid" "$RESULT" + +############################################################################# +#### Different message when verifying a signature. +test_name="verify_with_different_message" +echo "+++ Starting test $test_name..." + +$SIGNATURE_CLI gen-private-key $PRIVATE_KEYSET_FILE || exit 1 +$SIGNATURE_CLI get-public-key $PRIVATE_KEYSET_FILE $PUBLIC_KEYSET_FILE || exit 1 +$SIGNATURE_CLI sign $PRIVATE_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE || exit 1 +$SIGNATURE_CLI verify $PUBLIC_KEYSET_FILE $OTHER_MESSAGE_FILE $SIGNATURE_FILE $RESULT_FILE || exit 1 + +RESULT=$(<$RESULT_FILE) +assert_equal "invalid" "$RESULT" + +############################################################################# +#### Sign with wrong key. +test_name="sign_with_wrong_key" +echo "+++ Starting test $test_name..." + +$SIGNATURE_CLI gen-private-key $PRIVATE_KEYSET_FILE || exit 1 +$SIGNATURE_CLI get-public-key $PRIVATE_KEYSET_FILE $PUBLIC_KEYSET_FILE || exit 1 +$SIGNATURE_CLI sign $PUBLIC_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE + +EXIT_VALUE="$?" +assert_equal 1 "$EXIT_VALUE" + +############################################################################# +#### Verify with wrong key. +test_name="verify_with_wrong_key" +echo "+++ Starting test $test_name..." + +$SIGNATURE_CLI gen-private-key $PRIVATE_KEYSET_FILE || exit 1 +$SIGNATURE_CLI sign $PRIVATE_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE || exit 1 +$SIGNATURE_CLI verify $PRIVATE_KEYSET_FILE $MESSAGE_FILE $SIGNATURE_FILE $RESULT_FILE + +EXIT_VALUE="$?" +assert_equal 1 "$EXIT_VALUE" -- GitLab