#include <system_info.h>
#include <gtest/gtest.h>
+#include <gtest/internal/gtest-port.h>
#include <string.h>
#include "hal-security-certs.h"
int ret;
hal_security_certs_context_s context;
- std::string correct_key_type = "RSA";
- hal_security_certs_data_s correct_key_type_data_s =
- {
- const_cast<char*>(correct_key_type.c_str()),
- correct_key_type.size()
- };
+ for (const std::string key_type : {"RSA", "ECDSA"}) {
+ hal_security_certs_data_s correct_key_type_data_s =
+ {
+ const_cast<char*>(key_type.c_str()),
+ key_type.size()
+ };
- ret = hal_security_certs_create_key_context(&context, correct_key_type_data_s);
- EXPECT_EQ(ret, 0) << "Failed to create key context (" << ret << ")";
+ ret = hal_security_certs_create_key_context(&context, correct_key_type_data_s);
+ if (ret == -ENODATA) {
+ GTEST_LOG_(WARNING) << "Key type not supported by backend: " << key_type <<". Skipping.";
+ continue;
+ }
+ EXPECT_EQ(ret, 0) << "Failed to create key context (" << ret << ")";
- ret = hal_security_certs_free_key_context(&context);
- EXPECT_EQ(ret, 0) << "Failed to free key context (" << ret << ")";
+ ret = hal_security_certs_free_key_context(&context);
+ EXPECT_EQ(ret, 0) << "Failed to free key context (" << ret << ")";
+ }
}
TEST_F(SECURITY_CERTS, CreateKeyContextNegative)
};
ret = hal_security_certs_create_key_context(&context, key_type_data_s);
+ if (ret == -ENODATA) {
+ GTEST_LOG_(WARNING) << "Key type not supported by backend: " << key_type <<". Skipping.";
+ continue;
+ }
EXPECT_EQ(ret, 0) << "Failed to create key context (" << ret << ")";
hal_security_certs_data_s chain;
};
ret = hal_security_certs_create_key_context(&context, key_type_data_s);
+ if (ret == -ENODATA) {
+ GTEST_LOG_(WARNING) << "Key type not supported by backend: " << key_type <<". Skipping.";
+ continue;
+ }
EXPECT_EQ(ret, 0) << "Failed to create key context (" << ret << ")";
for (auto &digest : digest_length_map) {
hal_security_certs_data_s signature;
hal_security_certs_digest_type_e digest_type = static_cast<hal_security_certs_digest_type_e>(digest.first);
ret = hal_security_certs_sign_crypto_data(&context, digest_type, message_data_s, &signature);
+ if (ret == -ENODATA) {
+ GTEST_LOG_(WARNING) << "Digest type not supported by backend: " << digest.first <<". Skipping.";
+ continue;
+ }
EXPECT_EQ(ret, 0) << "Failed to sign crypto data (" << ret << ")";
EXPECT_TRUE(signature.length > 0) << "Signature length is zero";
free(signature.buffer);
int ret;
hal_security_certs_context_s context;
- std::string key_type = "RSA";
- hal_security_certs_data_s key_type_data_s =
- {
- const_cast<char*>(key_type.c_str()),
- key_type.size()
- };
+ for (const std::string key_type : {"RSA", "ECDSA"}) {
+ hal_security_certs_data_s key_type_data_s =
+ {
+ const_cast<char*>(key_type.c_str()),
+ key_type.size()
+ };
- ret = hal_security_certs_create_key_context(&context, key_type_data_s);
- EXPECT_EQ(ret, 0) << "Failed to create key context (" << ret << ")";
+ ret = hal_security_certs_create_key_context(&context, key_type_data_s);
+ if (ret == -ENODATA) {
+ GTEST_LOG_(WARNING) << "Key type not supported by backend: " << key_type <<". Skipping.";
+ continue;
+ }
+ EXPECT_EQ(ret, 0) << "Failed to create key context (" << ret << ")";
- char data[20] = {0,};
- hal_security_certs_data_s message_data_s =
- {
- data,
- sizeof(data)
- };
+ char data[20] = {0,};
+ hal_security_certs_data_s message_data_s =
+ {
+ data,
+ sizeof(data)
+ };
- hal_security_certs_data_s signature;
- ret = hal_security_certs_sign_crypto_data(
- &context, HAL_SECURITY_CERTS_DIGEST_TYPE_SHA256, message_data_s, &signature);
- EXPECT_EQ(ret, -EINVAL) << "Succeded with wrong size of crypto data to sign (" << ret << ")";
+ hal_security_certs_data_s signature;
+ ret = hal_security_certs_sign_crypto_data(
+ &context, HAL_SECURITY_CERTS_DIGEST_TYPE_SHA256, message_data_s, &signature);
+ EXPECT_EQ(ret, -EINVAL) << "Succeded with wrong size of crypto data to sign (" << ret << ")";
- hal_security_certs_digest_type_e wrong_digest_type = static_cast<hal_security_certs_digest_type_e>(-1);
- ret = hal_security_certs_sign_crypto_data(&context, wrong_digest_type, message_data_s, &signature);
- EXPECT_EQ(ret, -EINVAL) << "Succeded with wrong digest type to sign crypto data (" << ret << ")";
+ hal_security_certs_digest_type_e wrong_digest_type = static_cast<hal_security_certs_digest_type_e>(-1);
+ ret = hal_security_certs_sign_crypto_data(&context, wrong_digest_type, message_data_s, &signature);
+ EXPECT_EQ(ret, -ENODATA) << "Succeded with wrong digest type to sign crypto data (" << ret << ")";
- ret = hal_security_certs_free_key_context(&context);
- EXPECT_EQ(ret, 0) << "Failed to free key context (" << ret << ")";
+ ret = hal_security_certs_free_key_context(&context);
+ EXPECT_EQ(ret, 0) << "Failed to free key context (" << ret << ")";
+ }
}
TEST_F(SECURITY_CERTS, GetKeyTypeAndLengthPositive)
hal_security_certs_context_s context;
ret = hal_security_certs_create_key_context(&context, key_type_data_s);
+ if (ret == -ENODATA) {
+ GTEST_LOG_(WARNING) << "Key type not supported by backend: " << key_type <<". Skipping.";
+ continue;
+ }
EXPECT_EQ(ret, 0) << "Failed to create key context (" << ret << ")";
ret = hal_security_certs_get_key_type(&context, &ret_key_type_enum);
{
int ret;
- std::string method_name = "test-method-name";
+ std::string method_name = "method-with-a-privilege-not-granted";
hal_security_certs_data_s method_name_data_s =
{
const_cast<char*>(method_name.c_str()),
hal_security_certs_data_s output_data_s;
ret = hal_security_certs_ext_call_api(method_name_data_s, input_data_s, &output_data_s);
- EXPECT_EQ(ret, -EINVAL) << "Executesd not exisitng external call api method (" << ret << ")";
+ if (ret == -EINVAL)
+ GTEST_LOG_(WARNING) << "Method not supported by backend: \"" << method_name <<"\". Skipping.";
+ else
+ EXPECT_EQ(ret, 0) << "Failed to call external api method (" << ret << ")";
}
TEST_F(SECURITY_CERTS, ExtGetApiPrivilegeNegative)
{
int ret;
- std::string method_name = "test-method-name";
+ std::string method_name = "method-with-a-privilege-not-granted";
hal_security_certs_data_s method_name_data_s =
{
const_cast<char*>(method_name.c_str()),
hal_security_certs_data_s privilege;
ret = hal_security_certs_ext_get_api_privilege(method_name_data_s, &privilege);
- EXPECT_EQ(ret, -EINVAL) << "Executesd not exisitng external call api method (" << ret << ")";
+ if (ret == -EINVAL)
+ GTEST_LOG_(WARNING) << "Method not supported by backend: \"" << method_name <<"\". Skipping.";
+ else
+ EXPECT_EQ(ret, 0) << "Failed to call external api method (" << ret << ")";
}