Remove warnings and performance problems reported by cppcheck.
[platform/core/security/key-manager.git] / src / manager / client-capi / ckmc-manager.cpp
index 6f6078d..c998171 100644 (file)
@@ -94,9 +94,8 @@ ckmc_cert_list_s *_toNewCkmCertList(const CKM::CertificateShPtrVector &certVecto
     int ret;
     ckmc_cert_list_s *start = NULL;
     ckmc_cert_list_s *plist = NULL;
-    CKM::CertificateShPtrVector::const_iterator it;
-    for(it = certVector.begin(); it != certVector.end(); it++) {
-        CKM::RawBuffer rawBuffer = (*it)->getDER();
+    for(const auto &e : certVector) {
+        CKM::RawBuffer rawBuffer = e->getDER();
         ckmc_cert_s *pcert = NULL;
         ret = ckmc_cert_new(rawBuffer.data(), rawBuffer.size(), CKMC_FORM_DER, &pcert);
         if(pcert == NULL) {
@@ -117,14 +116,14 @@ ckmc_cert_list_s *_toNewCkmCertList(const CKM::CertificateShPtrVector &certVecto
     return start;
 }
 
-typedef int (CKM::Manager::*cryptoFn)(const CKM::CryptoAlgorithm &algo,
-                                      const CKM::Alias &keyAlias,
-                                      const CKM::Password &password,
-                                      const CKM::RawBuffer& plain,
-                                      CKM::RawBuffer& encrypted);
+typedef int (CKM::Manager::*cryptoFn)(const CKM::CryptoAlgorithm&,
+                                      const CKM::Alias&,
+                                      const CKM::Password&,
+                                      const CKM::RawBuffer&,
+                                      CKM::RawBuffer&);
 
 int _cryptoOperation(cryptoFn operation,
-                     const ckmc_param_list_s *params,
+                     ckmc_param_list_h params,
                      const char *key_alias,
                      const char *password,
                      const ckmc_raw_buffer_s in,
@@ -168,11 +167,19 @@ int ckmc_save_key(const char *alias, const ckmc_key_s key, const ckmc_policy_s p
     CKM::Alias ckmAlias(alias);
 
     if(key.raw_key == NULL || key.key_size <= 0) {
-            return CKMC_ERROR_INVALID_PARAMETER;
+        return CKMC_ERROR_INVALID_PARAMETER;
     }
     CKM::RawBuffer buffer(key.raw_key, key.raw_key + key.key_size);
-    CKM::KeyShPtr ckmKey = CKM::Key::create(buffer, _tostring(key.password));
 
+    CKM::KeyShPtr ckmKey;
+    if(key.key_type == CKMC_KEY_AES)
+    {
+        if(key.password)
+            return CKMC_ERROR_INVALID_PARAMETER;
+        ckmKey = CKM::Key::createAES(buffer);
+    }
+    else
+        ckmKey = CKM::Key::create(buffer, _tostring(key.password));
     if(ckmKey.get() == NULL) {
         return CKMC_ERROR_INVALID_FORMAT;
     }
@@ -375,12 +382,6 @@ int ckmc_save_pkcs12(const char *alias, const ckmc_pkcs12_s *ppkcs, const ckmc_p
 }
 
 KEY_MANAGER_CAPI
-int ckmc_remove_pkcs12(const char *alias)
-{
-    return ckmc_remove_alias(alias);
-}
-
-KEY_MANAGER_CAPI
 int ckmc_get_pkcs12(const char *alias, const char *key_password, const char *cert_password, ckmc_pkcs12_s **pkcs12)
 {
     int ret;
@@ -602,11 +603,20 @@ int ckmc_create_key_pair_ecdsa(const ckmc_ec_type_e type,
 }
 
 KEY_MANAGER_CAPI
-int ckmc_create_key_aes(const size_t /*size*/,
-                        const char */*key_alias*/,
-                        const ckmc_policy_s /*key_policy*/)
+int ckmc_create_key_aes(size_t size,
+                        const char *key_alias,
+                        ckmc_policy_s key_policy)
 {
-    return 0;
+    CKM::ManagerShPtr mgr = CKM::Manager::create();
+
+    if(key_alias == NULL)
+        return CKMC_ERROR_INVALID_PARAMETER;
+
+    CKM::Alias ckmKeyAlias(key_alias);
+    CKM::Policy ckmKeyPolicy(_tostring(key_policy.password), key_policy.extractable);
+
+    int ret = mgr->createKeyAES(size, ckmKeyAlias, ckmKeyPolicy);
+    return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -810,12 +820,11 @@ int ckmc_ocsp_check(const ckmc_cert_list_s *pcert_chain_list, ckmc_ocsp_status_e
         return CKMC_ERROR_INVALID_PARAMETER;
     }
 
-    int ret = CKMC_ERROR_UNKNOWN;
     int tmpOcspStatus = -1;
     CKM::ManagerShPtr mgr = CKM::Manager::create();
     CKM::CertificateShPtrVector ckmCertChain = _toCkmCertificateVector(pcert_chain_list);
 
-    ret = mgr->ocspCheck(ckmCertChain, tmpOcspStatus);
+    int ret = mgr->ocspCheck(ckmCertChain, tmpOcspStatus);
     *ocsp_status = to_ckmc_ocsp_status(tmpOcspStatus);
     return to_ckmc_error(ret);
 }
@@ -863,7 +872,7 @@ int ckmc_remove_alias(const char *alias)
 }
 
 KEY_MANAGER_CAPI
-int ckmc_encrypt_data(const ckmc_param_list_s *params,
+int ckmc_encrypt_data(ckmc_param_list_h params,
                       const char *key_alias,
                       const char *password,
                       const ckmc_raw_buffer_s decrypted,
@@ -878,7 +887,7 @@ int ckmc_encrypt_data(const ckmc_param_list_s *params,
 }
 
 KEY_MANAGER_CAPI
-int ckmc_decrypt_data(const ckmc_param_list_s *params,
+int ckmc_decrypt_data(ckmc_param_list_h params,
                       const char *key_alias,
                       const char *password,
                       const ckmc_raw_buffer_s encrypted,