From: Dariusz Michaluk Date: Fri, 5 Aug 2016 12:35:01 +0000 (+0200) Subject: YACA: invalid param tests for yaca_key_derive_dh/_kdf X-Git-Tag: security-manager_5.5_testing~37 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8f833deab989fb1aa9ca2a823cd969487e300ad8;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git YACA: invalid param tests for yaca_key_derive_dh/_kdf Change-Id: I89787aad7caf11403ee2bf6594dd162567bd33d8 --- diff --git a/src/yaca/yaca-test-key.cpp b/src/yaca/yaca-test-key.cpp index b87deaca..fa322878 100644 --- a/src/yaca/yaca-test-key.cpp +++ b/src/yaca/yaca-test-key.cpp @@ -230,18 +230,6 @@ RUNNER_TEST(T4006_yaca_key_free) { } -RUNNER_TEST(T4007_yaca_key_derive_dh) -{ -} - -RUNNER_TEST(T4008_yaca_key_derive_kea) -{ -} - -RUNNER_TEST(T4009_yaca_key_derive_pbkdf2) -{ -} - RUNNER_TEST(T4010_yaca_key_invalid_param, YacaTest) { yaca_key_h out = YACA_KEY_NULL; @@ -633,6 +621,99 @@ RUNNER_TEST(T4230_yaca_key_import_invalid_param, YacaTest) key_rsa_pub_data.get(), key_rsa_pub_data_len, &out)); } +RUNNER_TEST(T4233_yaca_key_derive_dh_invalid_param, YacaTest) +{ + char *secret; + size_t secret_len; + + KeyPtr key_dh_priv = generate_key(YACA_KEY_TYPE_DH_PRIV, YACA_KEY_LENGTH_DH_RFC_2048_256); + KeyPtr key_dh_pub = extract_public_key(key_dh_priv); + + KeyPtr key_dh_priv_2048_224 = generate_key(YACA_KEY_TYPE_DH_PRIV, YACA_KEY_LENGTH_DH_RFC_2048_224); + KeyPtr key_dh_pub_2048_224 = extract_public_key(key_dh_priv_2048_224); + + KeyPtr key_ecdh_priv = generate_key(YACA_KEY_TYPE_EC_PRIV, YACA_KEY_LENGTH_EC_SECP521R1); + KeyPtr key_ecdh_pub = extract_public_key(key_ecdh_priv); + + KeyPtr key_ecdh_priv_256V1 = generate_key(YACA_KEY_TYPE_EC_PRIV, YACA_KEY_LENGTH_EC_PRIME256V1); + KeyPtr key_ecdh_pub_256V1 = extract_public_key(key_ecdh_priv_256V1); + + KeyPtr key_rsa_priv = generate_key(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_LENGTH_512BIT); + KeyPtr key_rsa_pub = extract_public_key(key_rsa_priv); + + KeyPtr key_sym = generate_key(YACA_KEY_TYPE_SYMMETRIC, YACA_KEY_LENGTH_192BIT); + + YACA_INVALID_PARAM(yaca_key_derive_dh(null_key().get(), key_dh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_pub.get(), key_dh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_dh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_pub.get(), key_dh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_rsa_priv.get(), key_dh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_rsa_pub.get(), key_dh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_sym.get(), key_dh_pub.get(), &secret, &secret_len)); + + YACA_INVALID_PARAM(yaca_key_derive_dh(null_key().get(), key_ecdh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_ecdh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_pub.get(), key_ecdh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_pub.get(), key_ecdh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_rsa_priv.get(), key_ecdh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_rsa_pub.get(), key_ecdh_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_sym.get(), key_ecdh_pub.get(), &secret, &secret_len)); + + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), null_key().get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_dh_priv.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_ecdh_priv.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_rsa_priv.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_rsa_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_sym.get(), &secret, &secret_len)); + + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), null_key().get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_dh_priv.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_ecdh_priv.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_rsa_priv.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_rsa_pub.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_sym.get(), &secret, &secret_len)); + + YACA_INVALID_PARAM(yaca_key_derive_dh(key_rsa_priv.get(), key_rsa_pub.get(), &secret, &secret_len)); + + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_dh_pub.get(), nullptr, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_ecdh_priv.get(), nullptr, &secret_len)); + + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_dh_pub.get(), &secret, nullptr)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_ecdh_pub.get(), &secret, nullptr)); + + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv.get(), key_dh_pub_2048_224.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_dh_priv_2048_224.get(), key_dh_pub.get(), &secret, &secret_len)); + + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv.get(), key_ecdh_pub_256V1.get(), &secret, &secret_len)); + YACA_INVALID_PARAM(yaca_key_derive_dh(key_ecdh_priv_256V1.get(), key_ecdh_pub.get(), &secret, &secret_len)); +} + +RUNNER_TEST(T4236_yaca_key_derive_kdf_invalid_param, YacaTest) +{ + yaca_kdf_e kdf = YACA_KDF_X942; + yaca_digest_algorithm_e digest = YACA_DIGEST_SHA512; + char *secret; + size_t secret_len; + char *info = NULL; + size_t info_len = 0; + char *key_material; + + KeyPtr key_dh_priv = generate_key(YACA_KEY_TYPE_DH_PRIV, YACA_KEY_LENGTH_DH_RFC_2048_256); + KeyPtr peer_key_dh_priv = generate_key(YACA_KEY_TYPE_DH_PRIV, YACA_KEY_LENGTH_DH_RFC_2048_256); + KeyPtr peer_key_dh_pub = extract_public_key(peer_key_dh_priv); + + YACA_SUCCESS(yaca_key_derive_dh(key_dh_priv.get(), peer_key_dh_pub.get(), &secret, &secret_len)); + + YACA_INVALID_PARAM(yaca_key_derive_kdf(static_cast(-1), + digest, secret, secret_len, info, info_len, 512, &key_material)); + YACA_INVALID_PARAM(yaca_key_derive_kdf(kdf, static_cast(-1), + secret, secret_len, info, info_len, 512, &key_material)); + YACA_INVALID_PARAM(yaca_key_derive_kdf(kdf, digest, nullptr, secret_len, info, info_len, 512, &key_material)); + YACA_INVALID_PARAM(yaca_key_derive_kdf(kdf, digest, secret, 0, info, info_len, 512, &key_material)); + YACA_INVALID_PARAM(yaca_key_derive_kdf(kdf, digest, secret, secret_len, info, info_len, 0, &key_material)); + YACA_INVALID_PARAM(yaca_key_derive_kdf(kdf, digest, secret, secret_len, info, info_len, 512, nullptr)); +} + RUNNER_TEST(T4240_yaca_key_derive_pbkdf2_invalid_param, YacaTest) { yaca_key_h key;