WhisperCom/include/Whisper/Data/Classification.hpp

60 lines
1.9 KiB
C++
Raw Permalink Normal View History

#pragma once
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/** @file */
/** @copyright 2021 MPLv2 */
#include <cstdint>
#include <vector>
/**
* @brief This is the main namespace for all whisper-com related datatypes and classed.
*/
namespace Whisper
{
/**
* @brief namespace for all data related DataTypes, classes, etc.
*/
namespace Data
{
/**
* \defgroup data_classifications Classification of Data within Messages
* Data in Message can be classified occording to the non-disclosure of its information.
* In whisper-com certain rules are enforced occording to data classification
* e.g. messages may be dropped or not routed through gateways.
* Furthermore, encryption of data may or may not be enforced.
*/
/**
* @brief Enumeration of different data classifications.
* \ingroup data_classifications
* Data classifications classify the data within the payload of a message
* according to six levels. We think six levels should be enough and
* fewer limits the flexibility of the user and more adds to the overall
* complexity.
*/
enum class classification : std::uint8_t
{
/// The data is public and may even be transmitted public to the Internet.
PUBLIC,
/// The data is classified open. Everyone with access to the network may read it
/// but the data is not allowed to be published to the internet or other non local networks.
OPEN,
/// The data is classified RESTRICTED
RESTRICTED,
/// the data is classified CONFIDENTIAL
CONFIDENTIAL,
/// The data is classified as SECRET
SECRET,
/// The data is classified as TOP SECRET.
TOP_SECRET
}; // enum class classification
}; // namespace Data
}; // namespace Whisper