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{
45 {
65
70 {
73 std::string policy_identifier;
74
77 std::string classification;
78
81 std::optional<std::string> privacy_mark;
82
83 bool operator==(const ConfidentialityInformation&) const = default;
84 };
85
87 {
88 inline static const std::string rfc822_name = "rfc822Name";
89 inline static const std::string dns_name = "dNSName";
90 inline static const std::string directory_name = "directoryName";
91 inline static const std::string uniform_resource_identifier = "uniformResourceIdentifier";
92 inline static const std::string ip_address = "iPAddress";
93 inline static const std::string x400_address = "x400Address";
94 inline static const std::string jid = "jID";
95 inline static const std::string user_principal_name = "userPrincipalName";
96
97 std::string id_type;
98
99 std::string value;
100
101 bool operator==(const OriginatorId&) const = default;
102 };
103
109 creation_date_time(std::chrono::floor<std::chrono::seconds>(std::chrono::utc_clock::now())) {}
110
113 bool operator==(const ConfidentialityLabel&) const = default;
114
118
122
125 std::optional<OriginatorId> originator_id;
126
129 std::chrono::time_point<std::chrono::utc_clock, std::chrono::seconds> creation_date_time;
130 };
131
132}
Lightweight helpers for generating NATO confidentiality metadata.
Definition binding.h:32
A core element of the nmbs::confidentiality_label containing the classification (e....
Definition confidentiality_label.h:70
std::optional< std::string > privacy_mark
<s4774::PrivacyMark>
Definition confidentiality_label.h:81
bool operator==(const ConfidentialityInformation &) const =default
std::string classification
<s4774::Classification>
Definition confidentiality_label.h:77
std::string policy_identifier
<s4774::PolicyIdentifier>
Definition confidentiality_label.h:73
Definition confidentiality_label.h:87
static const std::string uniform_resource_identifier
Definition confidentiality_label.h:91
static const std::string x400_address
Definition confidentiality_label.h:93
static const std::string jid
Definition confidentiality_label.h:94
static const std::string rfc822_name
Definition confidentiality_label.h:88
bool operator==(const OriginatorId &) const =default
static const std::string user_principal_name
Definition confidentiality_label.h:95
static const std::string dns_name
Definition confidentiality_label.h:89
std::string id_type
Definition confidentiality_label.h:97
static const std::string ip_address
Definition confidentiality_label.h:92
std::string value
Definition confidentiality_label.h:99
static const std::string directory_name
Definition confidentiality_label.h:90
ConfidentialityLabel(const ConfidentialityLabel &)=default
bool operator==(const ConfidentialityLabel &) const =default
ConfidentialityLabel & operator=(const ConfidentialityLabel &rhs)=default
ConfidentialityLabel(const ConfidentialityLabelType label_type=originator)
Definition confidentiality_label.h:107
ConfidentialityLabelType
identifier for the specialisation of the label.
Definition confidentiality_label.h:52
@ successor
<s4774::successorConfidentialityLabel>
Definition confidentiality_label.h:63
@ originator
<s4774::originatorConfidentialityLabel>
Definition confidentiality_label.h:55
@ alternative
<s4774::alternativeConfidentialityLabel>
Definition confidentiality_label.h:59
ConfidentialityLabelType label_type
Field to save having to implement the type inheritance here.
Definition confidentiality_label.h:117
std::optional< OriginatorId > originator_id
<s4774:OriginatorID>
Definition confidentiality_label.h:125
ConfidentialityInformation confidentiality_information
<s4774::ConfidentialityInformation>
Definition confidentiality_label.h:121
std::chrono::time_point< std::chrono::utc_clock, std::chrono::seconds > creation_date_time
<s4774::CreationDateTime>
Definition confidentiality_label.h:129