From: Ernest Borowski Date: Fri, 10 May 2019 11:47:18 +0000 (+0200) Subject: [UTC][capi-key-manager][ACR-1288][API for checking aliases password protection status] X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2eb42b59fb15b39dfca2b22338537fac278bd883;p=test%2Ftct%2Fnative%2Fapi.git [UTC][capi-key-manager][ACR-1288][API for checking aliases password protection status] Change-Id: Ibe9b3f2cf9ff7666cfe0a5def56f5d4b2f8ee746 Signed-off-by: Ernest Borowski --- diff --git a/src/utc/key-manager/tct-key-manager-core_mobile.h b/src/utc/key-manager/tct-key-manager-core_mobile.h index a0f77820d..080464c9b 100755 --- a/src/utc/key-manager/tct-key-manager-core_mobile.h +++ b/src/utc/key-manager/tct-key-manager-core_mobile.h @@ -157,6 +157,17 @@ extern int utc_ckmc_param_list_free_p(void); extern int utc_ckmc_param_list_free_n(void); extern int utc_ckmc_generate_new_params_p(void); extern int utc_ckmc_generate_new_params_n(void); +extern int utc_ckmc_alias_info_get_alias_p(void); +extern int utc_ckmc_alias_info_get_alias_n(void); +extern int utc_ckmc_alias_info_is_password_protected_p(void); +extern int utc_ckmc_alias_info_is_password_protected_n(void); +extern int utc_ckmc_alias_info_list_all_free_p(void); +extern int utc_ckmc_get_key_alias_info_list_p(void); +extern int utc_ckmc_get_key_alias_info_list_n(void); +extern int utc_ckmc_get_cert_alias_info_list_p(void); +extern int utc_ckmc_get_cert_alias_info_list_n(void); +extern int utc_ckmc_get_data_alias_info_list_p(void); +extern int utc_ckmc_get_data_alias_info_list_n(void); testcase tc_array[] = { {"utc_ckmc_create_key_pair_rsa_p",utc_ckmc_create_key_pair_rsa_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup}, @@ -290,6 +301,17 @@ testcase tc_array[] = { {"utc_ckmc_param_list_free_n",utc_ckmc_param_list_free_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {"utc_ckmc_generate_new_params_p",utc_ckmc_generate_new_params_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {"utc_ckmc_generate_new_params_n",utc_ckmc_generate_new_params_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_get_alias_p",utc_ckmc_alias_info_get_alias_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_get_alias_n",utc_ckmc_alias_info_get_alias_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_is_password_protected_p",utc_ckmc_alias_info_is_password_protected_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_is_password_protected_n",utc_ckmc_alias_info_is_password_protected_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_list_all_free_p",utc_ckmc_alias_info_list_all_free_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_key_alias_info_list_p",utc_ckmc_get_key_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_key_alias_info_list_n",utc_ckmc_get_key_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_cert_alias_info_list_p",utc_ckmc_get_cert_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_cert_alias_info_list_n",utc_ckmc_get_cert_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_data_alias_info_list_p",utc_ckmc_get_data_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_data_alias_info_list_n",utc_ckmc_get_data_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {NULL, NULL} }; diff --git a/src/utc/key-manager/tct-key-manager-core_tizeniot.h b/src/utc/key-manager/tct-key-manager-core_tizeniot.h index a0f77820d..080464c9b 100755 --- a/src/utc/key-manager/tct-key-manager-core_tizeniot.h +++ b/src/utc/key-manager/tct-key-manager-core_tizeniot.h @@ -157,6 +157,17 @@ extern int utc_ckmc_param_list_free_p(void); extern int utc_ckmc_param_list_free_n(void); extern int utc_ckmc_generate_new_params_p(void); extern int utc_ckmc_generate_new_params_n(void); +extern int utc_ckmc_alias_info_get_alias_p(void); +extern int utc_ckmc_alias_info_get_alias_n(void); +extern int utc_ckmc_alias_info_is_password_protected_p(void); +extern int utc_ckmc_alias_info_is_password_protected_n(void); +extern int utc_ckmc_alias_info_list_all_free_p(void); +extern int utc_ckmc_get_key_alias_info_list_p(void); +extern int utc_ckmc_get_key_alias_info_list_n(void); +extern int utc_ckmc_get_cert_alias_info_list_p(void); +extern int utc_ckmc_get_cert_alias_info_list_n(void); +extern int utc_ckmc_get_data_alias_info_list_p(void); +extern int utc_ckmc_get_data_alias_info_list_n(void); testcase tc_array[] = { {"utc_ckmc_create_key_pair_rsa_p",utc_ckmc_create_key_pair_rsa_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup}, @@ -290,6 +301,17 @@ testcase tc_array[] = { {"utc_ckmc_param_list_free_n",utc_ckmc_param_list_free_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {"utc_ckmc_generate_new_params_p",utc_ckmc_generate_new_params_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {"utc_ckmc_generate_new_params_n",utc_ckmc_generate_new_params_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_get_alias_p",utc_ckmc_alias_info_get_alias_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_get_alias_n",utc_ckmc_alias_info_get_alias_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_is_password_protected_p",utc_ckmc_alias_info_is_password_protected_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_is_password_protected_n",utc_ckmc_alias_info_is_password_protected_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_list_all_free_p",utc_ckmc_alias_info_list_all_free_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_key_alias_info_list_p",utc_ckmc_get_key_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_key_alias_info_list_n",utc_ckmc_get_key_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_cert_alias_info_list_p",utc_ckmc_get_cert_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_cert_alias_info_list_n",utc_ckmc_get_cert_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_data_alias_info_list_p",utc_ckmc_get_data_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_data_alias_info_list_n",utc_ckmc_get_data_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {NULL, NULL} }; diff --git a/src/utc/key-manager/tct-key-manager-core_wearable.h b/src/utc/key-manager/tct-key-manager-core_wearable.h index a0f77820d..080464c9b 100755 --- a/src/utc/key-manager/tct-key-manager-core_wearable.h +++ b/src/utc/key-manager/tct-key-manager-core_wearable.h @@ -157,6 +157,17 @@ extern int utc_ckmc_param_list_free_p(void); extern int utc_ckmc_param_list_free_n(void); extern int utc_ckmc_generate_new_params_p(void); extern int utc_ckmc_generate_new_params_n(void); +extern int utc_ckmc_alias_info_get_alias_p(void); +extern int utc_ckmc_alias_info_get_alias_n(void); +extern int utc_ckmc_alias_info_is_password_protected_p(void); +extern int utc_ckmc_alias_info_is_password_protected_n(void); +extern int utc_ckmc_alias_info_list_all_free_p(void); +extern int utc_ckmc_get_key_alias_info_list_p(void); +extern int utc_ckmc_get_key_alias_info_list_n(void); +extern int utc_ckmc_get_cert_alias_info_list_p(void); +extern int utc_ckmc_get_cert_alias_info_list_n(void); +extern int utc_ckmc_get_data_alias_info_list_p(void); +extern int utc_ckmc_get_data_alias_info_list_n(void); testcase tc_array[] = { {"utc_ckmc_create_key_pair_rsa_p",utc_ckmc_create_key_pair_rsa_p,utc_key_manager_crypto_startup,utc_key_manager_crypto_cleanup}, @@ -290,6 +301,17 @@ testcase tc_array[] = { {"utc_ckmc_param_list_free_n",utc_ckmc_param_list_free_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {"utc_ckmc_generate_new_params_p",utc_ckmc_generate_new_params_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {"utc_ckmc_generate_new_params_n",utc_ckmc_generate_new_params_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_get_alias_p",utc_ckmc_alias_info_get_alias_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_get_alias_n",utc_ckmc_alias_info_get_alias_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_is_password_protected_p",utc_ckmc_alias_info_is_password_protected_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_is_password_protected_n",utc_ckmc_alias_info_is_password_protected_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_alias_info_list_all_free_p",utc_ckmc_alias_info_list_all_free_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_key_alias_info_list_p",utc_ckmc_get_key_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_key_alias_info_list_n",utc_ckmc_get_key_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_cert_alias_info_list_p",utc_ckmc_get_cert_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_cert_alias_info_list_n",utc_ckmc_get_cert_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_data_alias_info_list_p",utc_ckmc_get_data_alias_info_list_p,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, + {"utc_ckmc_get_data_alias_info_list_n",utc_ckmc_get_data_alias_info_list_n,utc_key_manager_type_startup,utc_key_manager_type_cleanup}, {NULL, NULL} }; diff --git a/src/utc/key-manager/utc-key-manager-storage.c b/src/utc/key-manager/utc-key-manager-storage.c index 54e98523a..7a9385628 100755 --- a/src/utc/key-manager/utc-key-manager-storage.c +++ b/src/utc/key-manager/utc-key-manager-storage.c @@ -1593,3 +1593,84 @@ int utc_ckmc_allow_deny_n2(void) return 0; } + +/** +* @testcase utc_ckmc_get_key_alias_info_list_p +* @since 5.5 +* @scenario Gets all available key aliases +*/ +int utc_ckmc_get_key_alias_info_list_p(void) +{ + ckmc_alias_info_list_s* ppalias_list; + + int retCode = ckmc_get_key_alias_info_list(&ppalias_list); + ckmc_alias_info_list_all_free(ppalias_list); + assert_eq(retCode, CKMC_ERROR_NONE); + return 0; +} + +/** +* @testcase utc_ckmc_get_key_alias_info_list_p +* @since 5.5 +* @scenario Gets all available key aliases +*/ +int utc_ckmc_get_key_alias_info_list_n(void) +{ + int retCode = ckmc_get_key_alias_info_list(NULL); + assert_eq(retCode, CKMC_ERROR_INVALID_PARAMETER); + return 0; +} + +/** +* @testcase utc_ckmc_get_cert_alias_info_list_p +* @since 5.5 +* @scenario Gets all available certificate aliases +*/ +int utc_ckmc_get_cert_alias_info_list_p(void) +{ + ckmc_alias_info_list_s* ppalias_list; + + int retCode = ckmc_get_cert_alias_info_list(&ppalias_list); + ckmc_alias_info_list_all_free(ppalias_list); + assert_eq(retCode, CKMC_ERROR_NONE); + return 0; +} + +/** +* @testcase utc_ckmc_get_cert_alias_info_list_p +* @since 5.5 +* @scenario Gets all available certificate aliases +*/ +int utc_ckmc_get_cert_alias_info_list_n(void) +{ + int retCode = ckmc_get_cert_alias_info_list(NULL); + assert_eq(retCode, CKMC_ERROR_INVALID_PARAMETER); + return 0; +} + +/** +* @testcase utc_ckmc_get_data_alias_info_list_p +* @since 5.5 +* @scenario Gets all available data aliases +*/ +int utc_ckmc_get_data_alias_info_list_p(void) +{ + ckmc_alias_info_list_s* ppalias_list; + + int retCode = ckmc_get_data_alias_info_list(&ppalias_list); + ckmc_alias_info_list_all_free(ppalias_list); + assert_eq(retCode, CKMC_ERROR_NONE); + return 0; +} + +/** +* @testcase utc_ckmc_get_data_alias_info_list_p +* @since 5.5 +* @scenario Gets all available data aliases +*/ +int utc_ckmc_get_data_alias_info_list_n(void) +{ + int retCode = ckmc_get_data_alias_info_list(NULL); + assert_eq(retCode, CKMC_ERROR_INVALID_PARAMETER); + return 0; +} diff --git a/src/utc/key-manager/utc-key-manager-type.c b/src/utc/key-manager/utc-key-manager-type.c index ff5af7dd6..b3c15f4d4 100755 --- a/src/utc/key-manager/utc-key-manager-type.c +++ b/src/utc/key-manager/utc-key-manager-type.c @@ -1,5 +1,5 @@ // -// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// Copyright (c) 2014 - 2019 Samsung Electronics Co., Ltd. // // Licensed under the Apache License, Version 2.0 (the License); // you may not use this file except in compliance with the License. @@ -1841,3 +1841,153 @@ int utc_ckmc_generate_new_params_n(void) return 0; } + +/** + * @testcase utc_ckmc_alias_info_get_alias_p + * @since_tizen 5.5 + * @description Check if alias is accessible from struct + * @scenario Save key to db and check if alias is accessible + */ +int utc_ckmc_alias_info_get_alias_p(void) +{ + ckmc_key_s *key; + const char* alias = "new test alias"; + ckmc_alias_info_list_s *ppalias_list, *tmp; + ckmc_policy_s policy; + policy.password = NULL; + policy.extractable = 1; + + int ret = ckmc_key_new( + (unsigned char *)RSA_PUBKEY, + strlen(RSA_PUBKEY), + CKMC_KEY_RSA_PUBLIC, + NULL, + &key); + + assert_eq(ret, CKMC_ERROR_NONE); + assert_eq(key->key_size, strlen(RSA_PUBKEY)); + assert_eq(key->key_type, CKMC_KEY_RSA_PUBLIC); + assert_eq(key->password, NULL); + ret = ckmc_save_key(alias, *key, policy); + ckmc_key_free(key); + assert_eq(ret, CKMC_ERROR_NONE); + + ret = ckmc_get_key_alias_info_list(&ppalias_list); + assert_eq(ret, CKMC_ERROR_NONE); + + char* current_alias; + tmp = ppalias_list; + bool foundAlias = false; + while (tmp) { + ret = ckmc_alias_info_get_alias(tmp->info, ¤t_alias); + assert_eq(ret, CKMC_ERROR_NONE); + if (strcmp(current_alias, alias)) { + foundAlias = true; + break; + } + tmp = tmp->next; + } + ckmc_alias_info_list_all_free(ppalias_list); + ckmc_remove_key(alias); + assert_eq(foundAlias, true); + return 0; +} + +/** + * @testcase utc_ckmc_alias_info_get_alias_n + * @since_tizen 5.5 + * @description Check an error when getting a parameter from empty struct + * @scenario Create a empty struct and try to get empty paramerer + */ +int utc_ckmc_alias_info_get_alias_n(void) +{ + char* alias; + int retCode = ckmc_alias_info_get_alias(NULL, &alias); + assert_eq(retCode, CKMC_ERROR_INVALID_PARAMETER); + return 0; +} + +/** + * @testcase utc_ckmc_alias_info_is_password_protected_p + * @since_tizen 5.5 + * @description Check password protection status for key + * @scenario Save key to db and check alias password protection status + */ +int utc_ckmc_alias_info_is_password_protected_p(void) +{ + ckmc_key_s *key; + const char* alias = "new test alias"; + ckmc_alias_info_list_s *ppalias_list, *tmp; + ckmc_policy_s policy; + policy.password = NULL; + policy.extractable = 1; + + int ret = ckmc_key_new( + (unsigned char *)RSA_PUBKEY, + strlen(RSA_PUBKEY), + CKMC_KEY_RSA_PUBLIC, + NULL, + &key); + + assert_eq(ret, CKMC_ERROR_NONE); + assert_eq(key->key_size, strlen(RSA_PUBKEY)); + assert_eq(key->key_type, CKMC_KEY_RSA_PUBLIC); + assert_eq(key->password, NULL); + ret = ckmc_save_key(alias, *key, policy); + ckmc_key_free(key); + assert_eq(ret, CKMC_ERROR_NONE); + + ret = ckmc_get_key_alias_info_list(&ppalias_list); + assert_eq(ret, CKMC_ERROR_NONE); + + char* current_alias; + tmp = ppalias_list; + bool foundAlias = false; + while (tmp) { + ret = ckmc_alias_info_get_alias(tmp->info, ¤t_alias); + assert_eq(ret, CKMC_ERROR_NONE); + if (strcmp(current_alias, alias)) { + foundAlias = true; + bool is_password_protected; + ret = ckmc_alias_info_is_password_protected(tmp->info, &is_password_protected); + assert_eq(ret, CKMC_ERROR_NONE); + assert_eq(is_password_protected, false); + break; + } + tmp = tmp->next; + } + ckmc_alias_info_list_all_free(ppalias_list); + ckmc_remove_key(alias); + assert_eq(foundAlias, true); + return 0; +} + +/** + * @testcase utc_ckmc_alias_info_is_password_protected_n + * @since_tizen 5.5 + * @description Check an error when getting a parameter from empty struct + * @scenario Create a empty struct and try to get empty parameter + */ +int utc_ckmc_alias_info_is_password_protected_n(void) +{ + bool password_status; + int retCode = ckmc_alias_info_is_password_protected(NULL, &password_status); + assert_eq(retCode, CKMC_ERROR_INVALID_PARAMETER); + return 0; +} + +/** + * @testcase utc_ckmc_alias_info_list_all_free_p + * @since_tizen 5.5 + * @description Check if function for freeing resources work + * @scenario Create struct and use deleter function + */ +int utc_ckmc_alias_info_list_all_free_p(void) +{ + ckmc_alias_info_list_s* list = (ckmc_alias_info_list_s*) + malloc(sizeof(ckmc_alias_info_list_s)); + list->info = NULL; + list->next = NULL; + ckmc_alias_info_list_all_free(list); + return 0; +}