4#include "Stroika/Foundation/StroikaPreComp.h"
6#if qStroika_HasComponent_OpenSSL
7#include <openssl/evp.h>
10#include "Stroika/Foundation/Containers/Common.h"
12#include "Stroika/Foundation/Execution/Common.h"
19using namespace Stroika::Foundation::Cryptography;
20using namespace Stroika::Foundation::Cryptography::Providers::OpenSSL;
21using namespace Stroika::Foundation::Memory;
23#if qStroika_HasComponent_OpenSSL
30DigestAlgorithm::DigestAlgorithm (const ::EVP_MD* digester)
31 : name{[qStroika_Foundation_Common_Property_ExtraCaptureStuff] ([[maybe_unused]] const auto* property) ->
String {
32 const DigestAlgorithm* thisObj = qStroika_Foundation_Common_Property_OuterObjPtr (property, &DigestAlgorithm::name);
34 return String{EVP_MD_name (thisObj->fDigester_)};
36 , fDigester_{digester}
41DigestAlgorithm DigestAlgorithm::GetByName (
const String& digestName)
45 Execution::ThrowIfNull (p, kErr_);
49optional<DigestAlgorithm> DigestAlgorithm::GetByNameQuietly (
const String& digestName)
52 return tmp ==
nullptr ? optional<DigestAlgorithm>{} : tmp;
#define RequireNotNull(p)
String is like std::u32string, except it is much easier to use, often much more space efficient,...
nonvirtual string AsNarrowSDKString() const
value-object, where the value construction is delayed until first needed (can be handy to avoid c++ i...