libnmbs 1.0.0
Loading...
Searching...
No Matches
confidentiality_label.h
Go to the documentation of this file.
1
25
26#pragma once
27
28#include <chrono>
29#include <string>
30
31namespace nmbs
32{
46 {
66
71 {
74 std::string policy_identifier;
75
78 std::string classification;
79
82 std::optional<std::string> privacy_mark;
83
86 bool operator==(const ConfidentialityInformation&) const = default;
87 };
88
93 {
96 inline static const std::string rfc822_name = "rfc822Name";
97
100 inline static const std::string dns_name = "dNSName";
101
104 inline static const std::string directory_name = "directoryName";
105
108 inline static const std::string uniform_resource_identifier = "uniformResourceIdentifier";
109
112 inline static const std::string ip_address = "iPAddress";
113
116 inline static const std::string x400_address = "x400Address";
117
120 inline static const std::string jid = "jID";
121
124 inline static const std::string user_principal_name = "userPrincipalName";
125
128 std::string id_type;
129
132 std::string value;
133
136 bool operator==(const OriginatorId&) const = default;
137 };
138
145 creation_date_time(std::chrono::floor<std::chrono::seconds>(std::chrono::utc_clock::now())) {}
146
150
154
157 bool operator==(const ConfidentialityLabel&) const = default;
158
162
166
169 std::optional<OriginatorId> originator_id;
170
173 std::chrono::time_point<std::chrono::utc_clock, std::chrono::seconds> creation_date_time;
174 };
175
176}
Lightweight utilities for NATO confidentiality metadata.
Definition binding.h:38
A core element of the nmbs::confidentiality_label containing the classification (e....
Definition confidentiality_label.h:71
std::optional< std::string > privacy_mark
<s4774::PrivacyMark>
Definition confidentiality_label.h:82
bool operator==(const ConfidentialityInformation &) const =default
Default equality operator.
std::string classification
<s4774::Classification>
Definition confidentiality_label.h:78
std::string policy_identifier
<s4774::PolicyIdentifier>
Definition confidentiality_label.h:74
Identifier for the entity that created or applied the label.
Definition confidentiality_label.h:93
static const std::string uniform_resource_identifier
URI format.
Definition confidentiality_label.h:108
static const std::string x400_address
X.400 address format.
Definition confidentiality_label.h:116
static const std::string jid
Jabber ID format.
Definition confidentiality_label.h:120
static const std::string rfc822_name
RFC 822 (email) address format.
Definition confidentiality_label.h:96
bool operator==(const OriginatorId &) const =default
Default equality operator.
static const std::string user_principal_name
User Principal Name format.
Definition confidentiality_label.h:124
static const std::string dns_name
DNS name format.
Definition confidentiality_label.h:100
std::string id_type
The format type of the identifier (e.g., rfc822Name).
Definition confidentiality_label.h:128
static const std::string ip_address
IP address format.
Definition confidentiality_label.h:112
std::string value
The actual identifier value.
Definition confidentiality_label.h:132
static const std::string directory_name
Directory name format.
Definition confidentiality_label.h:104
ConfidentialityLabel(const ConfidentialityLabel &)=default
Default copy constructor.
bool operator==(const ConfidentialityLabel &) const =default
Default equality operator.
ConfidentialityLabel & operator=(const ConfidentialityLabel &rhs)=default
Default copy assignment operator.
ConfidentialityLabel(const ConfidentialityLabelType label_type=originator)
Overloaded constructor taking the label type as a parameter.
Definition confidentiality_label.h:143
ConfidentialityLabelType
Identifier for the specialisation of the label.
Definition confidentiality_label.h:53
@ successor
<s4774::successorConfidentialityLabel>
Definition confidentiality_label.h:64
@ originator
<s4774::originatorConfidentialityLabel>
Definition confidentiality_label.h:56
@ alternative
<s4774::alternativeConfidentialityLabel>
Definition confidentiality_label.h:60
ConfidentialityLabelType label_type
Field to save having to implement type inheritance.
Definition confidentiality_label.h:161
std::optional< OriginatorId > originator_id
<s4774:OriginatorID>
Definition confidentiality_label.h:169
ConfidentialityInformation confidentiality_information
<s4774:ConfidentialityInformation>
Definition confidentiality_label.h:165
std::chrono::time_point< std::chrono::utc_clock, std::chrono::seconds > creation_date_time
<s4774:CreationDateTime>
Definition confidentiality_label.h:173