]> git.proxmox.com Git - ceph.git/blame - ceph/src/rgw/rgw_bucket_encryption.h
bump version to 18.2.4-pve3
[ceph.git] / ceph / src / rgw / rgw_bucket_encryption.h
CommitLineData
20effc67
TL
1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2// vim: ts=8 sw=2 smarttab ft=cpp
3
4#pragma once
5#include <include/types.h>
6
7class XMLObj;
8
9class ApplyServerSideEncryptionByDefault
10{
11 std::string kmsMasterKeyID;
12 std::string sseAlgorithm;
13
14public:
2a845540
TL
15 ApplyServerSideEncryptionByDefault() {};
16 ApplyServerSideEncryptionByDefault(const std::string &algorithm,
17 const std::string &key_id)
18 : kmsMasterKeyID(key_id), sseAlgorithm(algorithm) {};
20effc67
TL
19
20 const std::string& kms_master_key_id() const {
21 return kmsMasterKeyID;
22 }
23
24 const std::string& sse_algorithm() const {
25 return sseAlgorithm;
26 }
27
28 void encode(bufferlist& bl) const {
29 ENCODE_START(1, 1, bl);
30 encode(kmsMasterKeyID, bl);
31 encode(sseAlgorithm, bl);
32 ENCODE_FINISH(bl);
33 }
34
35 void decode(bufferlist::const_iterator& bl) {
36 DECODE_START(1, bl);
37 decode(kmsMasterKeyID, bl);
38 decode(sseAlgorithm, bl);
39 DECODE_FINISH(bl);
40 }
41
42 void decode_xml(XMLObj *obj);
43 void dump_xml(Formatter *f) const;
44};
45WRITE_CLASS_ENCODER(ApplyServerSideEncryptionByDefault)
46
47class ServerSideEncryptionConfiguration
48{
49protected:
50 ApplyServerSideEncryptionByDefault applyServerSideEncryptionByDefault;
51 bool bucketKeyEnabled;
52
53public:
54 ServerSideEncryptionConfiguration(): bucketKeyEnabled(false) {};
2a845540
TL
55 ServerSideEncryptionConfiguration(const std::string &algorithm,
56 const std::string &keyid="", bool enabled = false)
57 : applyServerSideEncryptionByDefault(algorithm, keyid),
58 bucketKeyEnabled(enabled) {}
20effc67
TL
59
60 const std::string& kms_master_key_id() const {
61 return applyServerSideEncryptionByDefault.kms_master_key_id();
62 }
63
64 const std::string& sse_algorithm() const {
65 return applyServerSideEncryptionByDefault.sse_algorithm();
66 }
67
68 bool bucket_key_enabled() const {
69 return bucketKeyEnabled;
70 }
71
72 void encode(bufferlist& bl) const {
73 ENCODE_START(1, 1, bl);
74 encode(applyServerSideEncryptionByDefault, bl);
75 encode(bucketKeyEnabled, bl);
76 ENCODE_FINISH(bl);
77 }
78
79 void decode(bufferlist::const_iterator& bl) {
80 DECODE_START(1, bl);
81 decode(applyServerSideEncryptionByDefault, bl);
82 decode(bucketKeyEnabled, bl);
83 DECODE_FINISH(bl);
84 }
85
86 void decode_xml(XMLObj *obj);
87 void dump_xml(Formatter *f) const;
88};
89WRITE_CLASS_ENCODER(ServerSideEncryptionConfiguration)
90
91class RGWBucketEncryptionConfig
92{
93protected:
94 bool rule_exist;
95 ServerSideEncryptionConfiguration rule;
96
97public:
98 RGWBucketEncryptionConfig(): rule_exist(false) {}
2a845540
TL
99 RGWBucketEncryptionConfig(const std::string &algorithm,
100 const std::string &keyid = "", bool enabled = false)
101 : rule_exist(true), rule(algorithm, keyid, enabled) {}
20effc67
TL
102
103 const std::string& kms_master_key_id() const {
104 return rule.kms_master_key_id();
105 }
106
107 const std::string& sse_algorithm() const {
108 return rule.sse_algorithm();
109 }
110
111 bool bucket_key_enabled() const {
112 return rule.bucket_key_enabled();
113 }
114
115 bool has_rule() const {
116 return rule_exist;
117 }
118
119 void encode(bufferlist& bl) const {
120 ENCODE_START(1, 1, bl);
121 encode(rule_exist, bl);
122 if (rule_exist) {
123 encode(rule, bl);
124 }
125 ENCODE_FINISH(bl);
126 }
127
128 void decode(bufferlist::const_iterator& bl) {
129 DECODE_START(1, bl);
130 decode(rule_exist, bl);
131 if (rule_exist) {
132 decode(rule, bl);
133 }
134 DECODE_FINISH(bl);
135 }
136
137 void decode_xml(XMLObj *obj);
138 void dump_xml(Formatter *f) const;
2a845540
TL
139 void dump(Formatter *f) const;
140 static void generate_test_instances(std::list<RGWBucketEncryptionConfig*>& o);
20effc67
TL
141};
142WRITE_CLASS_ENCODER(RGWBucketEncryptionConfig)