MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / VerifyData

Method VerifyData

src/openrct2/core/Crypt.OpenSSL.cpp:296–327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

294 }
295
296 bool VerifyData(const RsaKey& key, const void* data, size_t dataLen, const void* sig, size_t sigLen) override
297 {
298 auto evpKey = static_cast<const OpenSSLRsaKey&>(key).GetEvpKey();
299 EVP_MD_CTX* mdctx{};
300 try
301 {
302 mdctx = EVP_MD_CTX_create();
303 if (mdctx == nullptr)
304 {
305 throw std::runtime_error("EVP_MD_CTX_create failed");
306 }
307
308 auto status = EVP_DigestVerifyInit(mdctx, nullptr, EVP_sha256(), nullptr, evpKey);
309 OpenSSLThrowOnBadStatus("EVP_DigestVerifyInit", status);
310
311 status = EVP_DigestVerifyUpdate(mdctx, data, dataLen);
312 OpenSSLThrowOnBadStatus("EVP_DigestVerifyUpdate", status);
313
314 status = EVP_DigestVerifyFinal(mdctx, static_cast<const uint8_t*>(sig), sigLen);
315 if (status != 0 && status != 1)
316 {
317 OpenSSLThrowOnBadStatus("EVP_DigestVerifyUpdate", status);
318 }
319 EVP_MD_CTX_destroy(mdctx);
320 return status == 1;
321 }
322 catch (const std::exception&)
323 {
324 EVP_MD_CTX_destroy(mdctx);
325 throw;
326 }
327 }
328};
329
330namespace OpenRCT2::Crypt

Callers

nothing calls this directly

Calls 2

OpenSSLThrowOnBadStatusFunction · 0.85
GetEvpKeyMethod · 0.80

Tested by

no test coverage detected