Deduplicate ckmc_get_*_alias_list 49/242549/4
authorKonrad Lipinski <k.lipinski2@samsung.com>
Thu, 27 Aug 2020 13:08:47 +0000 (15:08 +0200)
committerKonrad Lipinski <k.lipinski2@samsung.com>
Mon, 14 Sep 2020 13:11:21 +0000 (15:11 +0200)
Change-Id: I0d2906da9ee277ff77787a4d5fe8945b46be4557

src/manager/client-capi/ckmc-manager.cpp

index 970fed5..39bb854 100644 (file)
@@ -283,6 +283,48 @@ int ckmc_generic_get_alias_info_list_helper(ckmc_alias_info_list_s **alias_info_
        EXCEPTION_GUARD_END
 }
 
+int get_alias_list(ckmc_alias_list_s **alias_list, int (CKM::Manager::*getAliasVector)(CKM::AliasVector&))
+{
+       EXCEPTION_GUARD_START_CAPI
+
+       if (alias_list == nullptr)
+               return CKMC_ERROR_INVALID_PARAMETER;
+
+       CKM::AliasVector aliasVector;
+       int ret;
+       auto mgr = CKM::Manager::create();
+
+       if ((ret = ((*mgr).*getAliasVector)(aliasVector)) != CKM_API_SUCCESS)
+               return to_ckmc_error(ret);
+
+       ckmc_alias_list_s *start = nullptr;
+       ckmc_alias_list_s *plist = nullptr;
+
+       for (const auto &it : aliasVector) {
+               char *alias = strndup(it.c_str(), it.size());
+
+               ret = ckmc_alias_list_add(plist, alias, &plist);
+
+               if (ret != CKMC_ERROR_NONE) {
+                       free(alias);
+                       ckmc_alias_list_all_free(start);
+                       return ret;
+               }
+
+               if (start == nullptr)
+                       start = plist;
+       }
+
+       *alias_list = start; // according to documentation in header
+
+       if (plist == nullptr) // if the alias_list size is zero
+               return CKMC_ERROR_DB_ALIAS_UNKNOWN;
+
+       return CKMC_ERROR_NONE;
+
+       EXCEPTION_GUARD_END
+}
+
 } // namespace anonymous
 
 KEY_MANAGER_CAPI
@@ -358,48 +400,9 @@ int ckmc_get_key(const char *alias, const char *password, ckmc_key_s **key)
 KEY_MANAGER_CAPI
 int ckmc_get_key_alias_list(ckmc_alias_list_s **alias_list)
 {
-       EXCEPTION_GUARD_START_CAPI
-
-       int ret;
-
-       if (alias_list == nullptr)
-               return CKMC_ERROR_INVALID_PARAMETER;
-
-       CKM::AliasVector aliasVector;
-       auto mgr = CKM::Manager::create();
-
-       if ((ret = mgr->getKeyAliasVector(aliasVector)) != CKM_API_SUCCESS)
-               return to_ckmc_error(ret);
-
-       ckmc_alias_list_s *start = nullptr;
-       ckmc_alias_list_s *plist = nullptr;
-
-       for (const auto &it : aliasVector) {
-               char *alias = strndup(it.c_str(), it.size());
-
-               ret = ckmc_alias_list_add(plist, alias, &plist);
-
-               if (ret != CKMC_ERROR_NONE) {
-                       free(alias);
-                       ckmc_alias_list_all_free(start);
-                       return ret;
-               }
-
-               if (start == nullptr)
-                       start = plist;
-       }
-
-       *alias_list = start; // according to documentation in header
-
-       if (plist == nullptr) // if the alias_list size is zero
-               return CKMC_ERROR_DB_ALIAS_UNKNOWN;
-
-       return CKMC_ERROR_NONE;
-
-       EXCEPTION_GUARD_END
+       return get_alias_list(alias_list, &CKM::Manager::getKeyAliasVector);
 }
 
-
 KEY_MANAGER_CAPI
 int ckmc_get_key_alias_info_list(ckmc_alias_info_list_s **alias_info_list)
 {
@@ -462,44 +465,7 @@ int ckmc_get_cert(const char *alias, const char *password, ckmc_cert_s **cert)
 KEY_MANAGER_CAPI
 int ckmc_get_cert_alias_list(ckmc_alias_list_s **alias_list)
 {
-       EXCEPTION_GUARD_START_CAPI
-
-       if (alias_list == nullptr)
-               return CKMC_ERROR_INVALID_PARAMETER;
-
-       CKM::AliasVector aliasVector;
-       int ret;
-       auto mgr = CKM::Manager::create();
-
-       if ((ret = mgr->getCertificateAliasVector(aliasVector)) != CKM_API_SUCCESS)
-               return to_ckmc_error(ret);
-
-       ckmc_alias_list_s *start = nullptr;
-       ckmc_alias_list_s *plist = nullptr;
-
-       for (const auto &it : aliasVector) {
-               char *alias = strndup(it.c_str(), it.size());
-
-               ret = ckmc_alias_list_add(plist, alias, &plist);
-
-               if (ret != CKMC_ERROR_NONE) {
-                       free(alias);
-                       ckmc_alias_list_all_free(start);
-                       return ret;
-               }
-
-               if (start == nullptr)
-                       start = plist;
-       }
-
-       *alias_list = start; // according to documentation from header
-
-       if (plist == nullptr) // if the alias_list size is zero
-               return CKMC_ERROR_DB_ALIAS_UNKNOWN;
-
-       return CKMC_ERROR_NONE;
-
-       EXCEPTION_GUARD_END
+       return get_alias_list(alias_list, &CKM::Manager::getCertificateAliasVector);
 }
 
 KEY_MANAGER_CAPI
@@ -659,44 +625,7 @@ int ckmc_get_data(const char *alias, const char *password,
 KEY_MANAGER_CAPI
 int ckmc_get_data_alias_list(ckmc_alias_list_s **alias_list)
 {
-       EXCEPTION_GUARD_START_CAPI
-
-       if (alias_list == nullptr)
-               return CKMC_ERROR_INVALID_PARAMETER;
-
-       int ret;
-       CKM::AliasVector aliasVector;
-       auto mgr = CKM::Manager::create();
-
-       if ((ret = mgr->getDataAliasVector(aliasVector)) != CKM_API_SUCCESS)
-               return to_ckmc_error(ret);
-
-       ckmc_alias_list_s *start = nullptr;
-       ckmc_alias_list_s *plist = nullptr;
-
-       for (const auto &it : aliasVector) {
-               char *alias = strndup(it.c_str(), it.size());
-
-               ret = ckmc_alias_list_add(plist, alias, &plist);
-
-               if (ret != CKMC_ERROR_NONE) {
-                       free(alias);
-                       ckmc_alias_list_all_free(start);
-                       return ret;
-               }
-
-               if (start == nullptr)
-                       start = plist;
-       }
-
-       *alias_list = start; // according to documentation in header
-
-       if (plist == nullptr) // if the alias_list size is zero
-               return CKMC_ERROR_DB_ALIAS_UNKNOWN;
-
-       return CKMC_ERROR_NONE;
-
-       EXCEPTION_GUARD_END
+       return get_alias_list(alias_list, &CKM::Manager::getDataAliasVector);
 }
 
 KEY_MANAGER_CAPI