llarp/service/auth.hpp
Namespaces
| Name |
|---|
| llarp [crypto.hpp] |
| llarp::service |
Classes
| Name | |
|---|---|
| struct | llarp::service::AuthResult auth result object with code and reason |
| struct | llarp::service::IAuthPolicy |
| struct | llarp::service::AuthInfo info needed by clients in order to authenticate to a remote endpoint |
Source code
#pragma once
#include <optional>
#include <string>
#include <functional>
#include "address.hpp"
#include "handler.hpp"
#include <llarp/crypto/types.hpp>
namespace llarp::service
{
enum class AuthResultCode : uint64_t
{
eAuthAccepted = 0,
eAuthRejected = 1,
eAuthFailed = 2,
eAuthRateLimit = 3,
eAuthPaymentRequired = 4
};
uint64_t
AuthResultCodeAsInt(AuthResultCode code);
std::optional<AuthResultCode>
AuthResultCodeFromInt(uint64_t code);
struct AuthResult
{
AuthResultCode code;
std::string reason;
};
std::optional<AuthResultCode>
ParseAuthResultCode(std::string data);
struct IAuthPolicy
{
virtual ~IAuthPolicy() = default;
virtual void
AuthenticateAsync(
std::shared_ptr<ProtocolMessage> msg, std::function<void(AuthResult)> hook) = 0;
virtual bool
AsyncAuthPending(ConvoTag tag) const = 0;
};
struct AuthInfo
{
std::string token;
};
enum class AuthType
{
eAuthTypeNone,
eAuthTypeWhitelist,
eAuthTypeLMQ,
eAuthTypeFile,
};
enum class AuthFileType
{
eAuthFilePlain,
eAuthFileHashes,
};
AuthType
ParseAuthType(std::string arg);
AuthFileType
ParseAuthFileType(std::string arg);
std::shared_ptr<IAuthPolicy>
MakeFileAuthPolicy(AbstractRouter*, std::set<fs::path> files, AuthFileType fileType);
} // namespace llarp::service
Updated on 2026-01-10 at 22:49:45 +0000