Fix coverity issue
[platform/core/security/ode.git] / server / key-manager / key-generator.cpp
index 2e2abc0..eeb04fc 100644 (file)
@@ -64,9 +64,10 @@ BinaryData PBKDF(const BinaryData& pass,
 {
        BinaryData ret(resultSize, 0);
 
-       ::PKCS5_PBKDF2_HMAC((char *)pass.data(), pass.size(),
+       if (::PKCS5_PBKDF2_HMAC((char *)pass.data(), pass.size(),
                                                salt.data(), salt.size(), iteration,
-                                               EVP_sha256(), resultSize, ret.data());
+                                               EVP_sha256(), resultSize, ret.data()) != 1)
+               throw runtime::Exception("PBKDF failed");
 
        return ret;
 }
@@ -83,13 +84,23 @@ BinaryData AESEncrypt(const BinaryData& in,
        if (ctx == nullptr)
                throw runtime::Exception("Failed to allocate memory for chipher context");
 
-       ::EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key.data(), iv.data());
+       if (::EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key.data(), iv.data()) != 1) {
+               ::EVP_CIPHER_CTX_free(ctx);
+               throw runtime::Exception("Failed to initialize AES encryption");
+       }
 
        ::EVP_CIPHER_CTX_set_padding(ctx, 0);
-       ::EVP_EncryptUpdate(ctx, ret.data(), &len, in.data(), in.size());
+
+       if (::EVP_EncryptUpdate(ctx, ret.data(), &len, in.data(), in.size()) != 1) {
+               ::EVP_CIPHER_CTX_free(ctx);
+               throw runtime::Exception("Failed to update AES encryption");
+       }
        outLen = len;
 
-       ::EVP_EncryptFinal_ex(ctx, &ret[len], &len);
+       if (::EVP_EncryptFinal_ex(ctx, &ret[len], &len) != 1) {
+               ::EVP_CIPHER_CTX_free(ctx);
+               throw runtime::Exception("Failed to finalize AES encryption");
+       }
        outLen += len;
 
        ::EVP_CIPHER_CTX_free(ctx);
@@ -110,13 +121,23 @@ BinaryData AESDecrypt(const BinaryData& in,
        if (ctx == nullptr)
                throw runtime::Exception("Failed to allocate memory for chipher context");
 
-       ::EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key.data(), iv.data());
+       if (::EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key.data(), iv.data()) != 1) {
+               ::EVP_CIPHER_CTX_free(ctx);
+               throw runtime::Exception("Failed to initialize AES decryption");
+       }
+
        ::EVP_CIPHER_CTX_set_padding(ctx, 0);
-       ::EVP_DecryptUpdate(ctx, ret.data(), &len, in.data(), in.size());
 
+       if (::EVP_DecryptUpdate(ctx, ret.data(), &len, in.data(), in.size()) != 1) {
+               ::EVP_CIPHER_CTX_free(ctx);
+               throw runtime::Exception("Failed to update AES decryption");
+       }
        len1 = len;
 
-       ::EVP_DecryptFinal_ex(ctx, &ret[len], &len);
+       if (::EVP_DecryptFinal_ex(ctx, &ret[len], &len) != 1) {
+               ::EVP_CIPHER_CTX_free(ctx);
+               throw runtime::Exception("Failed to finalize AES decryption");
+       }
        len1 += len;
 
        ::EVP_CIPHER_CTX_free(ctx);
@@ -129,8 +150,9 @@ BinaryData HMAC(const BinaryData& key, const BinaryData& in)
        BinaryData ret(256 / 8);
        unsigned int md_len;
 
-       ::HMAC(EVP_sha256(), key.data(), key.size(), in.data(), in.size(),
-                                               ret.data(), &md_len);
+       if (::HMAC(EVP_sha256(), key.data(), key.size(), in.data(), in.size(),
+                                               ret.data(), &md_len) == nullptr)
+               throw runtime::Exception("HMAC failed");
 
        return ret;
 }