summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2021-10-28 16:30:44 +0200
committerTor Egge <Tor.Egge@online.no>2021-10-28 16:36:57 +0200
commit0545e8185cae59cee21c161e07aad88755ea1f28 (patch)
treeb38271c214ada46cd37cfb5f1817460f248f937e /searchcore
parent0b3e5ffe02fa2b51ffe37bc5f1e82022c3eeb672 (diff)
Avoid deprecated functions in OpenSSL 3.0.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp b/searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp
index fcaac9796ad..6e8223399e6 100644
--- a/searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp
+++ b/searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp
@@ -9,7 +9,7 @@
#include <vespa/fastos/app.h>
#include <iostream>
#include <sstream>
-#include <openssl/sha.h>
+#include <openssl/evp.h>
#include <cassert>
#include <getopt.h>
@@ -22,6 +22,18 @@ typedef std::shared_ptr<StringArray> StringArraySP;
using namespace vespalib::alloc;
using vespalib::string;
+namespace {
+
+struct EvpMdCtxDeleter {
+ void operator()(EVP_MD_CTX* evp_md_ctx) const noexcept {
+ EVP_MD_CTX_free(evp_md_ctx);
+ }
+};
+
+using EvpMdCtxPtr = std::unique_ptr<EVP_MD_CTX, EvpMdCtxDeleter>;
+
+}
+
void
usageHeader()
{
@@ -62,8 +74,8 @@ void
shafile(const string &baseDir,
const string &file)
{
- unsigned char digest[SHA256_DIGEST_LENGTH];
- SHA256_CTX c;
+ unsigned char digest[EVP_MAX_MD_SIZE];
+ unsigned int digest_len = 0;
string fullFile(prependBaseDir(baseDir, file));
FastOS_File f;
std::ostringstream os;
@@ -76,17 +88,20 @@ shafile(const string &baseDir,
}
int64_t flen = f.GetSize();
int64_t remainder = flen;
- SHA256_Init(&c);
+ EvpMdCtxPtr md_ctx(EVP_MD_CTX_new());
+ const EVP_MD* md = EVP_get_digestbyname("SHA256");
+ EVP_DigestInit_ex(md_ctx.get(), md, nullptr);
while (remainder > 0) {
int64_t thistime =
std::min(remainder, static_cast<int64_t>(buf.size()));
f.ReadBuf(buf.get(), thistime);
- SHA256_Update(&c, buf.get(), thistime);
+ EVP_DigestUpdate(md_ctx.get(), buf.get(), thistime);
remainder -= thistime;
}
f.Close();
- SHA256_Final(digest, &c);
- for (unsigned int i = 0; i < SHA256_DIGEST_LENGTH; ++i) {
+ EVP_DigestFinal_ex(md_ctx.get(), &digest[0], &digest_len);
+ assert(digest_len > 0u && digest_len <= EVP_MAX_MD_SIZE);
+ for (unsigned int i = 0; i < digest_len; ++i) {
os.width(2);
os.fill('0');
os << std::hex << static_cast<unsigned int>(digest[i]);