From: Lukasz Pawelczyk Date: Tue, 5 Jul 2016 17:03:54 +0000 (+0200) Subject: YACA: set_property tests (invalid param and proper operation) X-Git-Tag: security-manager_5.5_testing~50 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=90819c78e68806faac1549bb15e30e5e3dc7331a;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git YACA: set_property tests (invalid param and proper operation) Change-Id: I408f3f831370ca272601d5eeea632cfc1c4c01c7 --- diff --git a/src/yaca/yaca-test-sign.cpp b/src/yaca/yaca-test-sign.cpp index 7dcf4621..8d57408c 100644 --- a/src/yaca/yaca-test-sign.cpp +++ b/src/yaca/yaca-test-sign.cpp @@ -21,6 +21,8 @@ * @author Dariusz Michaluk (d.michaluk@samsumg.com) */ +#include + #include "dpl/test/test_runner.h" #include @@ -103,7 +105,7 @@ RUNNER_TEST(T6040_yaca_sign_update_invalid_param, YacaTest) YACA_INVALID_PARAM(yaca_sign_update(YACA_CONTEXT_NULL, lorem16, LOREM16_SIZE)); YACA_INVALID_PARAM(yaca_sign_update(ctx_bad.get(), lorem16, LOREM16_SIZE)); - YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), NULL, LOREM16_SIZE)); + YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), nullptr, LOREM16_SIZE)); YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), lorem16, 0)); } @@ -140,7 +142,7 @@ RUNNER_TEST(T6070_yaca_verify_update_invalid_param) CtxPtr ctx = verify_init(YACA_DIGEST_MD5, pub); YACA_INVALID_PARAM(yaca_sign_update(YACA_CONTEXT_NULL, lorem16, LOREM16_SIZE)); - YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), NULL, LOREM16_SIZE)); + YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), nullptr, LOREM16_SIZE)); YACA_INVALID_PARAM(yaca_sign_update(ctx.get(), lorem16, 0)); } @@ -165,10 +167,90 @@ RUNNER_TEST(T6090_yaca_sign_get_output_length_invalid_param) YACA_INVALID_PARAM(yaca_context_get_output_length(ctx_vrf.get(), 0, &output_len)); YACA_INVALID_PARAM(yaca_context_get_output_length(ctx.get(), 1, &output_len)); - YACA_INVALID_PARAM(yaca_context_get_output_length(ctx.get(), 0, NULL)); + YACA_INVALID_PARAM(yaca_context_get_output_length(ctx.get(), 0, nullptr)); +} + +RUNNER_TEST(T6100_yaca_sign_set_property_invalid_param) +{ + KeyPtr key = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_512BIT); + KeyPtr key_pub = extract_public_key(key); + KeyPtr key_dsa = generate_key(YACA_KEY_TYPE_DSA_PRIV, YACA_KEY_LENGTH_512BIT); + KeyPtr key_sym = generate_key(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_LENGTH_192BIT); + CtxPtr ctx_sgn = sign_init(YACA_DIGEST_SHA1, key); + CtxPtr ctx_vrf = verify_init(YACA_DIGEST_SHA1, key_pub); + CtxPtr ctx_dsa = sign_init(YACA_DIGEST_SHA1, key_dsa); + CtxPtr ctx_hmac = hmac_init(YACA_DIGEST_SHA1, key_sym); + CtxPtr ctx_digest = digest_init(YACA_DIGEST_SHA1); + yaca_padding_e padding = YACA_PADDING_PKCS1; + yaca_padding_e padding_wrong = static_cast(-1); + + std::vector contexts; + contexts.push_back(std::move(ctx_sgn)); + contexts.push_back(std::move(ctx_vrf)); + for (const CtxPtr &ctx: contexts) { + YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_GCM_TAG, + static_cast(&padding), + sizeof(yaca_padding_e))); + YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING, + nullptr, + sizeof(yaca_padding_e))); + YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING, + static_cast(&padding_wrong), + sizeof(yaca_padding_e))); + YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING, + static_cast(&padding), + sizeof(yaca_padding_e) + 1)); + YACA_INVALID_PARAM(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING, + static_cast(&padding), + 0)); + } + + YACA_INVALID_PARAM(yaca_context_set_property(ctx_dsa.get(), YACA_PROPERTY_PADDING, + static_cast(&padding), + sizeof(yaca_padding_e))); + YACA_INVALID_PARAM(yaca_context_set_property(ctx_hmac.get(), YACA_PROPERTY_PADDING, + static_cast(&padding), + sizeof(yaca_padding_e))); + YACA_INVALID_PARAM(yaca_context_set_property(ctx_digest.get(), YACA_PROPERTY_PADDING, + static_cast(&padding), + sizeof(yaca_padding_e))); + } -RUNNER_TEST(T6100_yaca_sign_get_output_length) +RUNNER_TEST(T6110_yaca_sign_get_property_invalid_param) +{ + KeyPtr key = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_512BIT); + KeyPtr key_pub = extract_public_key(key); + KeyPtr key_dsa = generate_key(YACA_KEY_TYPE_DSA_PRIV, YACA_KEY_LENGTH_512BIT); + KeyPtr key_sym = generate_key(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_LENGTH_192BIT); + CtxPtr ctx_sgn = sign_init(YACA_DIGEST_SHA1, key); + CtxPtr ctx_vrf = verify_init(YACA_DIGEST_SHA1, key_pub); + CtxPtr ctx_dsa = sign_init(YACA_DIGEST_SHA1, key_dsa); + CtxPtr ctx_hmac = hmac_init(YACA_DIGEST_SHA1, key_sym); + CtxPtr ctx_digest = digest_init(YACA_DIGEST_SHA1); + yaca_padding_e *padding; + size_t padding_len; + + std::vector contexts; + contexts.push_back(std::move(ctx_sgn)); + contexts.push_back(std::move(ctx_vrf)); + for (const CtxPtr &ctx: contexts) { + YACA_INVALID_PARAM(yaca_context_get_property(ctx.get(), YACA_PROPERTY_GCM_TAG, + (void**)&padding, &padding_len)); + YACA_INVALID_PARAM(yaca_context_get_property(ctx.get(), YACA_PROPERTY_PADDING, + nullptr, &padding_len)); + } + + YACA_INVALID_PARAM(yaca_context_get_property(ctx_dsa.get(), YACA_PROPERTY_PADDING, + (void**)&padding, &padding_len)); + YACA_INVALID_PARAM(yaca_context_get_property(ctx_hmac.get(), YACA_PROPERTY_PADDING, + (void**)&padding, &padding_len)); + YACA_INVALID_PARAM(yaca_context_get_property(ctx_digest.get(), YACA_PROPERTY_PADDING, + (void**)&padding, &padding_len)); + +} + +RUNNER_TEST(T6120_yaca_sign_get_output_length) { const std::vector digests = { YACA_DIGEST_MD5, @@ -199,7 +281,7 @@ RUNNER_TEST(T6100_yaca_sign_get_output_length) sign_length_test(d, k); } -RUNNER_TEST(T6110_yaca_sign_test_vectors, YacaTest) +RUNNER_TEST(T6130_yaca_sign_test_vectors, YacaTest) { auto tvv = loadTestVector("sign_ascii.txt"); @@ -251,7 +333,7 @@ RUNNER_TEST(T6110_yaca_sign_test_vectors, YacaTest) } } -RUNNER_TEST(T6120_yaca_sign_verify_test_vectors, YacaTest) +RUNNER_TEST(T6140_yaca_sign_verify_test_vectors, YacaTest) { auto tvv = loadTestVector("sign_verify_ascii.txt"); @@ -317,7 +399,7 @@ RUNNER_TEST(T6120_yaca_sign_verify_test_vectors, YacaTest) } } -RUNNER_TEST(T6130_yaca_sign_hmac_test_vectors, YacaTest) +RUNNER_TEST(T6150_yaca_sign_hmac_test_vectors, YacaTest) { auto tvv = loadTestVector("sign_hmac_ascii.txt"); @@ -365,7 +447,7 @@ RUNNER_TEST(T6130_yaca_sign_hmac_test_vectors, YacaTest) } } -RUNNER_TEST(T6140_yaca_sign_cmac_test_vectors, YacaTest) +RUNNER_TEST(T6160_yaca_sign_cmac_test_vectors, YacaTest) { auto tvv = loadTestVector("sign_cmac_ascii.txt"); @@ -413,7 +495,38 @@ RUNNER_TEST(T6140_yaca_sign_cmac_test_vectors, YacaTest) } } -RUNNER_TEST(T6150_yaca_sign_verify_padding_test_vectors, YacaTest) +RUNNER_TEST(T6170_yaca_sign_get_set_property, YacaTest) +{ + KeyPtr key = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_1024BIT); + CtxPtr ctx = sign_init(YACA_DIGEST_SHA1, key); + yaca_padding_e *padding_get; + size_t padding_len; + + YACA_SUCCESS(yaca_context_get_property(ctx.get(), YACA_PROPERTY_PADDING, + (void**)&padding_get, &padding_len)); + YACA_ASSERT_MSG(*padding_get == YACA_PADDING_PKCS1, "The default padding is not PKCS1"); + YACA_ASSERT_MSG(padding_len == sizeof(yaca_padding_e), "The property length returned is incorrect"); + yaca_free(padding_get); + + std::vector paddings = { + YACA_PADDING_PKCS1_PSS, + YACA_PADDING_X931, + YACA_PADDING_PKCS1 + }; + + for (auto padding: paddings) { + YACA_SUCCESS(yaca_context_set_property(ctx.get(), YACA_PROPERTY_PADDING, + static_cast(&padding), sizeof(yaca_padding_e))); + YACA_SUCCESS(yaca_context_get_property(ctx.get(), YACA_PROPERTY_PADDING, + (void**)&padding_get, &padding_len)); + YACA_ASSERT_MSG(*padding_get == padding, "Failed to properly set padding to " << + padding2str(padding)); + YACA_ASSERT_MSG(padding_len == sizeof(yaca_padding_e), "The property length returned is incorrect"); + yaca_free(padding_get); + } +} + +RUNNER_TEST(T6180_yaca_sign_verify_padding_test_vectors, YacaTest) { auto tvv = loadTestVector("sign_verify_ascii.txt");