[UTC][capi-key-manager][ACR-1288][API for checking aliases password protection status] 64/206264/5
authorErnest Borowski <e.borowski@partner.samsung.com>
Fri, 10 May 2019 11:47:18 +0000 (13:47 +0200)
committerErnest Borowski <e.borowski@partner.samsung.com>
Fri, 24 May 2019 10:37:32 +0000 (12:37 +0200)
Change-Id: Ibe9b3f2cf9ff7666cfe0a5def56f5d4b2f8ee746
Signed-off-by: Ernest Borowski <e.borowski@partner.samsung.com>
src/utc/key-manager/tct-key-manager-core_mobile.h
src/utc/key-manager/tct-key-manager-core_tizeniot.h
src/utc/key-manager/tct-key-manager-core_wearable.h
src/utc/key-manager/utc-key-manager-storage.c
src/utc/key-manager/utc-key-manager-type.c

index a0f77820dbf679b929824e717da4305a8dba927a..080464c9ba90ce537699b28cc901bf210684c4c2 100755 (executable)
@@ -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}
 };
 
index a0f77820dbf679b929824e717da4305a8dba927a..080464c9ba90ce537699b28cc901bf210684c4c2 100755 (executable)
@@ -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}
 };
 
index a0f77820dbf679b929824e717da4305a8dba927a..080464c9ba90ce537699b28cc901bf210684c4c2 100755 (executable)
@@ -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}
 };
 
index 54e98523a10b36cd7e3ae8c55db59cdaed882cab..7a9385628570b7981b8bfb4a42900046b793291d 100755 (executable)
@@ -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;
+}
index ff5af7dd67b374356774ca860b53f1d6c68c8b6b..b3c15f4d4eca72fa0fbce9bc8de8b8d0bb305f62 100755 (executable)
@@ -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, &current_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, &current_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;
+}