11#include <asio/experimental/awaitable_operators.hpp>
12using namespace asio::experimental::awaitable_operators;
14#include <absl/container/flat_hash_map.h>
15#include <spdlog/spdlog.h>
17#include <secp256k1_recovery.h>
18#include <jwt-cpp/jwt.h>
30 enum class Kind : std::uint8_t
67 asio::awaitable<std::expected<evm::Address, AuthError>>
verifyAccessToken(std::string token)
const;
74 asio::strand<asio::io_context::executor_type> _strand;
76 const std::string _SECRET;
78 static std::random_device _rng;
80 std::uniform_int_distribution<int> _dist;
81 absl::flat_hash_map<evm::Address, std::string> _nonces;
83 absl::flat_hash_map<evm::Address, std::string> _access_tokens;
88struct std::formatter<
dcn::auth::AuthError::Kind> : std::formatter<std::string> {
98 default:
return formatter<string>::format(
"Unknown", ctx);
100 return formatter<string>::format(
"", ctx);
asio::awaitable< bool > compareAccessToken(const evm::Address &address, std::string token) const
Definition auth.cpp:199
AuthManager(const AuthManager &)=delete
asio::awaitable< void > invalidateAccessToken(const evm::Address &address)
Definition auth.cpp:216
asio::awaitable< bool > verifyNonce(const evm::Address &address, const std::string &nonce)
Definition auth.cpp:41
asio::awaitable< std::expected< evm::Address, AuthError > > verifyAccessToken(std::string token) const
Definition auth.cpp:119
asio::awaitable< std::string > generateNonce(const evm::Address &address)
Definition auth.cpp:31
asio::awaitable< bool > verifySignature(const evm::Address &address, const std::string &signature, const std::string &message)
Definition auth.cpp:60
asio::awaitable< std::string > generateAccessToken(const evm::Address &address)
Definition auth.cpp:102
AuthManager & operator=(const AuthManager &)=delete
evmc::address Address
Definition evm.hpp:44
Definition decentralised_art.hpp:29
std::string message
Definition auth.hpp:45
Kind
Definition auth.hpp:31
enum dcn::auth::AuthError::Kind kind