if ( EVP_DigestInit_ex(&mdctx, md, NULL) == 0 )
{
EVP_MD_CTX_cleanup(&mdctx); /*lint !e534 */
- EVP_cleanup(); /*lint !e534 */
throw std::invalid_argument("Could not set up digest context correctly");
}
if ( data.empty() )
{
EVP_MD_CTX_cleanup(&mdctx); /*lint !e534 */
- EVP_cleanup(); /*lint !e534 */
throw std::invalid_argument("Passed data is empty");
}
if ( EVP_DigestUpdate(&mdctx, data.c_str(), data.size()) == 0 )
{
EVP_MD_CTX_cleanup(&mdctx); /*lint !e534 */
- EVP_cleanup(); /*lint !e534 */
throw std::invalid_argument("Could not hash data into digest context");
}
if ( EVP_DigestFinal_ex(&mdctx, md_value, &md_len) == 0 )
{
EVP_MD_CTX_cleanup(&mdctx); /*lint !e534 */
- EVP_cleanup(); /*lint !e534 */
throw std::invalid_argument("Could not retrieve digest value");
}
if ( (md_len == 0) || (EVP_MD_CTX_size(&mdctx) == 0) )
{
EVP_MD_CTX_cleanup(&mdctx); /*lint !e534 */
- EVP_cleanup(); /*lint !e534 */
throw std::invalid_argument("Retrieved invalid digest value");
}
// Internal cleanup of the digest content.
EVP_MD_CTX_cleanup(&mdctx); /*lint !e534 */
- EVP_cleanup(); /*lint !e534 */
// Convert md5 digest C string to hex.
std::ostringstream oss_digest_md5_hex;