if ((md = EVP_get_digestbyname(algorithm)) != NULL) {
uint8_t temp[EVP_MAX_MD_SIZE] = { 0, };
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_MD_CTX mdCtx;
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX *mdCtx;
+ mdCtx = EVP_MD_CTX_new();
+#endif
unsigned int resultLen = 0;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
if (EVP_DigestInit(&mdCtx, md) > 0) {
if (EVP_DigestUpdate(&mdCtx, buffer.getBuffer(), buffer.size()) == 0) {
+#else // OpenSSL 1.1.1
+ if (EVP_DigestInit(mdCtx, md) > 0) {
+ if (EVP_DigestUpdate(mdCtx, buffer.getBuffer(), buffer.size()) == 0) {
+#endif
_ERR("EVP_DigestUpdate failed");
}
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
if (EVP_DigestFinal(&mdCtx, temp, &resultLen) > 0 &&
resultLen > 0) {
+#else // OpenSSL 1.1.1
+ if (EVP_DigestFinal(mdCtx, temp, &resultLen) > 0 &&
+ resultLen > 0) {
+#endif
result.assign(temp, resultLen);
ret = true;
}
}
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L // OpenSSL 1.1.1
+ EVP_MD_CTX_free(mdCtx);
+#endif
} else {
_ERR("EVP_get_digestbyname(\"%s\") returns NULL", algorithm);
}