18#ifndef TRINITYCORE_RSA_H
19#define TRINITYCORE_RSA_H
22#include <openssl/evp.h>
40 void operator()(EVP_MD* md)
const;
44 virtual std::unique_ptr<EVP_MD, EVP_MD_Deleter>
GetGenerator()
const = 0;
46#if OPENSSL_VERSION_NUMBER >= 0x30000000L
47 virtual OSSL_LIB_CTX* GetLib()
const = 0;
48 virtual std::unique_ptr<OSSL_PARAM[]> GetParams()
const = 0;
57 std::unique_ptr<EVP_MD, EVP_MD_Deleter> GetGenerator()
const override;
59#if OPENSSL_VERSION_NUMBER >= 0x30000000L
60 OSSL_LIB_CTX* GetLib()
const override;
61 std::unique_ptr<OSSL_PARAM[]> GetParams()
const override;
63 void PostInitCustomizeContext(EVP_MD_CTX* ctx)
override;
70 explicit HMAC_SHA256(
uint8 const* key,
size_t keyLength) : _key(key), _keyLength(keyLength) { }
72 std::unique_ptr<EVP_MD, EVP_MD_Deleter> GetGenerator()
const override;
74#if OPENSSL_VERSION_NUMBER >= 0x30000000L
75 OSSL_LIB_CTX* GetLib()
const override;
76 std::unique_ptr<OSSL_PARAM[]> GetParams()
const override;
78 void PostInitCustomizeContext(EVP_MD_CTX* ctx)
override;
94 bool LoadKeyFromFile(std::string
const& fileName);
96 bool LoadKeyFromString(std::string
const& keyPem);
98 template <std::
size_t N>
99 bool Sign(std::array<uint8, N>
const& message,
DigestGenerator& generator, std::vector<uint8>& output)
101 return this->Sign(message.data(), message.size(), generator, output);
104 bool Sign(
uint8 const* message, std::size_t messageLength, DigestGenerator& generator, std::vector<uint8>& output);
107 EVP_MD_CTX* _ctx =
nullptr;
108 EVP_PKEY* _key =
nullptr;
virtual std::unique_ptr< EVP_MD, EVP_MD_Deleter > GetGenerator() const =0
virtual void PostInitCustomizeContext(EVP_MD_CTX *ctx)=0
virtual ~DigestGenerator()=default
HMAC_SHA256(uint8 const *key, size_t keyLength)
bool Sign(std::array< uint8, N > const &message, DigestGenerator &generator, std::vector< uint8 > &output)