{
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;
}
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);
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);
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;
}