Skip to content

rlpx/rlpx_error.hpp

Namespaces

Name
rlpx

Types

Name
enum class SessionError
enum class AuthError
enum class FramingError
enum class CryptoError
template <typename T >
using outcome::result< T, SessionError, outcome::policy::all_narrow >
Result
template <typename T >
using outcome::result< T, AuthError, outcome::policy::all_narrow >
AuthResult
template <typename T >
using outcome::result< T, FramingError, outcome::policy::all_narrow >
FramingResult
template <typename T >
using outcome::result< T, CryptoError, outcome::policy::all_narrow >
CryptoResult
using outcome::result< void, SessionError, outcome::policy::all_narrow > VoidResult
using outcome::result< void, AuthError, outcome::policy::all_narrow > AuthVoidResult
using outcome::result< void, FramingError, outcome::policy::all_narrow > FramingVoidResult
using outcome::result< void, CryptoError, outcome::policy::all_narrow > CryptoVoidResult

Functions

Name
const char * to_string(SessionError error)
const char * to_string(AuthError error)
const char * to_string(FramingError error)
const char * to_string(CryptoError error)

Types Documentation

enum SessionError

Enumerator Value Description
kNetworkFailure
kAuthenticationFailed
kHandshakeFailed
kInvalidState
kPeerDisconnected
kTimeout
kCompressionError
kEncryptionError
kDecryptionError
kInvalidMessage
kInvalidFrameSize
kBufferOverflow
kConnectionFailed
kNotConnected
kDisconnected

enum AuthError

Enumerator Value Description
kEciesEncryptFailed
kEciesDecryptFailed
kInvalidAuthMessage
kInvalidAckMessage
kSharedSecretFailed
kSignatureInvalid
kKeyDerivationFailed
kInvalidPublicKey
kInvalidNonce

enum FramingError

Enumerator Value Description
kEncryptionFailed
kDecryptionFailed
kMacMismatch
kInvalidFrameSize
kBufferTooSmall
kInvalidHeader
kCompressionFailed
kDecompressionFailed

enum CryptoError

Enumerator Value Description
kAesEncryptFailed
kAesDecryptFailed
kHmacFailed
kKdfFailed
kEcdhFailed
kInvalidKeySize
kInvalidIvSize
kInvalidPublicKey
kInvalidPrivateKey
kOpenSslError
kSecp256k1Error

using Result

template <typename T >
using rlpx::Result = outcome::result<T, SessionError, outcome::policy::all_narrow>;

using AuthResult

template <typename T >
using rlpx::AuthResult = outcome::result<T, AuthError, outcome::policy::all_narrow>;

using FramingResult

template <typename T >
using rlpx::FramingResult = outcome::result<T, FramingError, outcome::policy::all_narrow>;

using CryptoResult

template <typename T >
using rlpx::CryptoResult = outcome::result<T, CryptoError, outcome::policy::all_narrow>;

using VoidResult

using rlpx::VoidResult = outcome::result<void, SessionError, outcome::policy::all_narrow>;

using AuthVoidResult

using rlpx::AuthVoidResult = outcome::result<void, AuthError, outcome::policy::all_narrow>;

using FramingVoidResult

using rlpx::FramingVoidResult = outcome::result<void, FramingError, outcome::policy::all_narrow>;

using CryptoVoidResult

using rlpx::CryptoVoidResult = outcome::result<void, CryptoError, outcome::policy::all_narrow>;

Functions Documentation

function to_string

const char * to_string(
    SessionError error
)

function to_string

const char * to_string(
    AuthError error
)

function to_string

const char * to_string(
    FramingError error
)

function to_string

const char * to_string(
    CryptoError error
)

Source code

// Copyright 2025 GeniusVentures
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <boost/outcome/result.hpp>
#include <boost/outcome/try.hpp>
#include "rlpx_types.hpp"

namespace rlpx {

namespace outcome = BOOST_OUTCOME_V2_NAMESPACE;

enum class SessionError {
    kNetworkFailure,
    kAuthenticationFailed,
    kHandshakeFailed,
    kInvalidState,
    kPeerDisconnected,
    kTimeout,
    kCompressionError,
    kEncryptionError,
    kDecryptionError,
    kInvalidMessage,
    kInvalidFrameSize,
    kBufferOverflow,
    kConnectionFailed,
    kNotConnected,
    kDisconnected
};

enum class AuthError {
    kEciesEncryptFailed,
    kEciesDecryptFailed,
    kInvalidAuthMessage,
    kInvalidAckMessage,
    kSharedSecretFailed,
    kSignatureInvalid,
    kKeyDerivationFailed,
    kInvalidPublicKey,
    kInvalidNonce
};

enum class FramingError {
    kEncryptionFailed,
    kDecryptionFailed,
    kMacMismatch,
    kInvalidFrameSize,
    kBufferTooSmall,
    kInvalidHeader,
    kCompressionFailed,
    kDecompressionFailed
};

enum class CryptoError {
    kAesEncryptFailed,
    kAesDecryptFailed,
    kHmacFailed,
    kKdfFailed,
    kEcdhFailed,
    kInvalidKeySize,
    kInvalidIvSize,
    kInvalidPublicKey,
    kInvalidPrivateKey,
    kOpenSslError,
    kSecp256k1Error
};

template<typename T>
using Result = outcome::result<T, SessionError, outcome::policy::all_narrow>;

template<typename T>
using AuthResult = outcome::result<T, AuthError, outcome::policy::all_narrow>;

template<typename T>
using FramingResult = outcome::result<T, FramingError, outcome::policy::all_narrow>;

template<typename T>
using CryptoResult = outcome::result<T, CryptoError, outcome::policy::all_narrow>;

using VoidResult = outcome::result<void, SessionError, outcome::policy::all_narrow>;
using AuthVoidResult = outcome::result<void, AuthError, outcome::policy::all_narrow>;
using FramingVoidResult = outcome::result<void, FramingError, outcome::policy::all_narrow>;
using CryptoVoidResult = outcome::result<void, CryptoError, outcome::policy::all_narrow>;

// Error message conversion
const char* to_string(SessionError error) noexcept;
const char* to_string(AuthError error) noexcept;
const char* to_string(FramingError error) noexcept;
const char* to_string(CryptoError error) noexcept;

} // namespace rlpx

Updated on 2026-04-13 at 23:22:46 -0700