Fix accidentally valid padding issue v2 61/255961/2
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 25 Mar 2021 14:10:25 +0000 (15:10 +0100)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 25 Mar 2021 14:17:05 +0000 (15:17 +0100)
Even if 2 ciphertext bytes are modified there's still a slim chance of
getting a valid padding. It happened in automatic tests. Check the
unpadded message length in such cases.

Change-Id: I2f7dacf7968cf38cbce499f3676ff6ce48513379

tests/test_encrypt.cpp
tests/test_seal.cpp

index 726f4cf..5311959 100644 (file)
@@ -1896,7 +1896,7 @@ BOOST_FIXTURE_TEST_CASE(T610__negative__encrypt_decrypt_ccm, InitDebugFixture)
                BOOST_REQUIRE(ret == YACA_ERROR_NONE);
 
                ret = yaca_decrypt_update(ctx, encrypted, encrypted_len, decrypted, &written);
-               BOOST_REQUIRE(ret == YACA_ERROR_INVALID_PARAMETER);
+               decrypt_check(ret, written, INPUT_DATA_SIZE);
 
                yaca_context_destroy(ctx);
                ctx = YACA_CONTEXT_NULL;
@@ -2379,7 +2379,7 @@ BOOST_FIXTURE_TEST_CASE(T612__negative__encrypt_decrypt_gcm, InitDebugFixture)
                BOOST_REQUIRE(ret == YACA_ERROR_NONE);
 
                ret = yaca_decrypt_finalize(ctx, decrypted + decrypted_len, &written);
-               BOOST_REQUIRE(ret == YACA_ERROR_INVALID_PARAMETER);
+               decrypt_check(ret, decrypted_len + written, INPUT_DATA_SIZE);
 
                yaca_context_destroy(ctx);
                ctx = YACA_CONTEXT_NULL;
index 63f78b2..8e6b9c6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *  Copyright (c) 2020 - 2021 Samsung Electronics Co., Ltd All Rights Reserved
  *
  *  Contact: Lukasz Pawelczyk <l.pawelczyk@samsung.com>
  *
@@ -575,7 +575,7 @@ BOOST_FIXTURE_TEST_CASE(T702__negative__seal_open, InitDebugFixture)
                decrypted_len = written;
 
                ret = yaca_open_finalize(ctx, decrypted + decrypted_len, &written);
-               BOOST_REQUIRE(ret == YACA_ERROR_INVALID_PARAMETER);
+               decrypt_check(ret, decrypted_len + written, INPUT_DATA_SIZE);
 
                yaca_context_destroy(ctx);
                ctx = YACA_CONTEXT_NULL;
@@ -1254,7 +1254,7 @@ BOOST_FIXTURE_TEST_CASE(T706__negative__open_seal_ccm, InitDebugFixture)
                BOOST_REQUIRE(ret == YACA_ERROR_NONE);
 
                ret = yaca_open_update(ctx, encrypted, encrypted_len, decrypted, &written);
-               BOOST_REQUIRE(ret == YACA_ERROR_INVALID_PARAMETER);
+               decrypt_check(ret, written, INPUT_DATA_SIZE);
 
                yaca_context_destroy(ctx);
                ctx = YACA_CONTEXT_NULL;
@@ -1663,7 +1663,7 @@ BOOST_FIXTURE_TEST_CASE(T708__negative__seal_open_gcm, InitDebugFixture)
                BOOST_REQUIRE(ret == YACA_ERROR_NONE);
 
                ret = yaca_open_finalize(ctx, decrypted + decrypted_len, &written);
-               BOOST_REQUIRE(ret == YACA_ERROR_INVALID_PARAMETER);
+               decrypt_check(ret, decrypted_len + written, INPUT_DATA_SIZE);
 
                yaca_context_destroy(ctx);
                ctx = YACA_CONTEXT_NULL;