1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/mediaconvert/MediaConvert_EXPORTS.h>
8 #include <aws/mediaconvert/model/DecryptionMode.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <utility>
11 
12 namespace Aws
13 {
14 namespace Utils
15 {
16 namespace Json
17 {
18   class JsonValue;
19   class JsonView;
20 } // namespace Json
21 } // namespace Utils
22 namespace MediaConvert
23 {
24 namespace Model
25 {
26 
27   /**
28    * Settings for decrypting any input files that you encrypt before you upload them
29    * to Amazon S3. MediaConvert can decrypt files only when you use AWS Key
30    * Management Service (KMS) to encrypt the data key that you use to encrypt your
31    * content.<p><h3>See Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/mediaconvert-2017-08-29/InputDecryptionSettings">AWS
33    * API Reference</a></p>
34    */
35   class AWS_MEDIACONVERT_API InputDecryptionSettings
36   {
37   public:
38     InputDecryptionSettings();
39     InputDecryptionSettings(Aws::Utils::Json::JsonView jsonValue);
40     InputDecryptionSettings& operator=(Aws::Utils::Json::JsonView jsonValue);
41     Aws::Utils::Json::JsonValue Jsonize() const;
42 
43 
44     /**
45      * Specify the encryption mode that you used to encrypt your input files.
46      */
GetDecryptionMode()47     inline const DecryptionMode& GetDecryptionMode() const{ return m_decryptionMode; }
48 
49     /**
50      * Specify the encryption mode that you used to encrypt your input files.
51      */
DecryptionModeHasBeenSet()52     inline bool DecryptionModeHasBeenSet() const { return m_decryptionModeHasBeenSet; }
53 
54     /**
55      * Specify the encryption mode that you used to encrypt your input files.
56      */
SetDecryptionMode(const DecryptionMode & value)57     inline void SetDecryptionMode(const DecryptionMode& value) { m_decryptionModeHasBeenSet = true; m_decryptionMode = value; }
58 
59     /**
60      * Specify the encryption mode that you used to encrypt your input files.
61      */
SetDecryptionMode(DecryptionMode && value)62     inline void SetDecryptionMode(DecryptionMode&& value) { m_decryptionModeHasBeenSet = true; m_decryptionMode = std::move(value); }
63 
64     /**
65      * Specify the encryption mode that you used to encrypt your input files.
66      */
WithDecryptionMode(const DecryptionMode & value)67     inline InputDecryptionSettings& WithDecryptionMode(const DecryptionMode& value) { SetDecryptionMode(value); return *this;}
68 
69     /**
70      * Specify the encryption mode that you used to encrypt your input files.
71      */
WithDecryptionMode(DecryptionMode && value)72     inline InputDecryptionSettings& WithDecryptionMode(DecryptionMode&& value) { SetDecryptionMode(std::move(value)); return *this;}
73 
74 
75     /**
76      * Warning! Don't provide your encryption key in plaintext. Your job settings could
77      * be intercepted, making your encrypted content vulnerable. Specify the encrypted
78      * version of the data key that you used to encrypt your content. The data key must
79      * be encrypted by AWS Key Management Service (KMS). The key can be 128, 192, or
80      * 256 bits.
81      */
GetEncryptedDecryptionKey()82     inline const Aws::String& GetEncryptedDecryptionKey() const{ return m_encryptedDecryptionKey; }
83 
84     /**
85      * Warning! Don't provide your encryption key in plaintext. Your job settings could
86      * be intercepted, making your encrypted content vulnerable. Specify the encrypted
87      * version of the data key that you used to encrypt your content. The data key must
88      * be encrypted by AWS Key Management Service (KMS). The key can be 128, 192, or
89      * 256 bits.
90      */
EncryptedDecryptionKeyHasBeenSet()91     inline bool EncryptedDecryptionKeyHasBeenSet() const { return m_encryptedDecryptionKeyHasBeenSet; }
92 
93     /**
94      * Warning! Don't provide your encryption key in plaintext. Your job settings could
95      * be intercepted, making your encrypted content vulnerable. Specify the encrypted
96      * version of the data key that you used to encrypt your content. The data key must
97      * be encrypted by AWS Key Management Service (KMS). The key can be 128, 192, or
98      * 256 bits.
99      */
SetEncryptedDecryptionKey(const Aws::String & value)100     inline void SetEncryptedDecryptionKey(const Aws::String& value) { m_encryptedDecryptionKeyHasBeenSet = true; m_encryptedDecryptionKey = value; }
101 
102     /**
103      * Warning! Don't provide your encryption key in plaintext. Your job settings could
104      * be intercepted, making your encrypted content vulnerable. Specify the encrypted
105      * version of the data key that you used to encrypt your content. The data key must
106      * be encrypted by AWS Key Management Service (KMS). The key can be 128, 192, or
107      * 256 bits.
108      */
SetEncryptedDecryptionKey(Aws::String && value)109     inline void SetEncryptedDecryptionKey(Aws::String&& value) { m_encryptedDecryptionKeyHasBeenSet = true; m_encryptedDecryptionKey = std::move(value); }
110 
111     /**
112      * Warning! Don't provide your encryption key in plaintext. Your job settings could
113      * be intercepted, making your encrypted content vulnerable. Specify the encrypted
114      * version of the data key that you used to encrypt your content. The data key must
115      * be encrypted by AWS Key Management Service (KMS). The key can be 128, 192, or
116      * 256 bits.
117      */
SetEncryptedDecryptionKey(const char * value)118     inline void SetEncryptedDecryptionKey(const char* value) { m_encryptedDecryptionKeyHasBeenSet = true; m_encryptedDecryptionKey.assign(value); }
119 
120     /**
121      * Warning! Don't provide your encryption key in plaintext. Your job settings could
122      * be intercepted, making your encrypted content vulnerable. Specify the encrypted
123      * version of the data key that you used to encrypt your content. The data key must
124      * be encrypted by AWS Key Management Service (KMS). The key can be 128, 192, or
125      * 256 bits.
126      */
WithEncryptedDecryptionKey(const Aws::String & value)127     inline InputDecryptionSettings& WithEncryptedDecryptionKey(const Aws::String& value) { SetEncryptedDecryptionKey(value); return *this;}
128 
129     /**
130      * Warning! Don't provide your encryption key in plaintext. Your job settings could
131      * be intercepted, making your encrypted content vulnerable. Specify the encrypted
132      * version of the data key that you used to encrypt your content. The data key must
133      * be encrypted by AWS Key Management Service (KMS). The key can be 128, 192, or
134      * 256 bits.
135      */
WithEncryptedDecryptionKey(Aws::String && value)136     inline InputDecryptionSettings& WithEncryptedDecryptionKey(Aws::String&& value) { SetEncryptedDecryptionKey(std::move(value)); return *this;}
137 
138     /**
139      * Warning! Don't provide your encryption key in plaintext. Your job settings could
140      * be intercepted, making your encrypted content vulnerable. Specify the encrypted
141      * version of the data key that you used to encrypt your content. The data key must
142      * be encrypted by AWS Key Management Service (KMS). The key can be 128, 192, or
143      * 256 bits.
144      */
WithEncryptedDecryptionKey(const char * value)145     inline InputDecryptionSettings& WithEncryptedDecryptionKey(const char* value) { SetEncryptedDecryptionKey(value); return *this;}
146 
147 
148     /**
149      * Specify the initialization vector that you used when you encrypted your content
150      * before uploading it to Amazon S3. You can use a 16-byte initialization vector
151      * with any encryption mode. Or, you can use a 12-byte initialization vector with
152      * GCM or CTR. MediaConvert accepts only initialization vectors that are
153      * base64-encoded.
154      */
GetInitializationVector()155     inline const Aws::String& GetInitializationVector() const{ return m_initializationVector; }
156 
157     /**
158      * Specify the initialization vector that you used when you encrypted your content
159      * before uploading it to Amazon S3. You can use a 16-byte initialization vector
160      * with any encryption mode. Or, you can use a 12-byte initialization vector with
161      * GCM or CTR. MediaConvert accepts only initialization vectors that are
162      * base64-encoded.
163      */
InitializationVectorHasBeenSet()164     inline bool InitializationVectorHasBeenSet() const { return m_initializationVectorHasBeenSet; }
165 
166     /**
167      * Specify the initialization vector that you used when you encrypted your content
168      * before uploading it to Amazon S3. You can use a 16-byte initialization vector
169      * with any encryption mode. Or, you can use a 12-byte initialization vector with
170      * GCM or CTR. MediaConvert accepts only initialization vectors that are
171      * base64-encoded.
172      */
SetInitializationVector(const Aws::String & value)173     inline void SetInitializationVector(const Aws::String& value) { m_initializationVectorHasBeenSet = true; m_initializationVector = value; }
174 
175     /**
176      * Specify the initialization vector that you used when you encrypted your content
177      * before uploading it to Amazon S3. You can use a 16-byte initialization vector
178      * with any encryption mode. Or, you can use a 12-byte initialization vector with
179      * GCM or CTR. MediaConvert accepts only initialization vectors that are
180      * base64-encoded.
181      */
SetInitializationVector(Aws::String && value)182     inline void SetInitializationVector(Aws::String&& value) { m_initializationVectorHasBeenSet = true; m_initializationVector = std::move(value); }
183 
184     /**
185      * Specify the initialization vector that you used when you encrypted your content
186      * before uploading it to Amazon S3. You can use a 16-byte initialization vector
187      * with any encryption mode. Or, you can use a 12-byte initialization vector with
188      * GCM or CTR. MediaConvert accepts only initialization vectors that are
189      * base64-encoded.
190      */
SetInitializationVector(const char * value)191     inline void SetInitializationVector(const char* value) { m_initializationVectorHasBeenSet = true; m_initializationVector.assign(value); }
192 
193     /**
194      * Specify the initialization vector that you used when you encrypted your content
195      * before uploading it to Amazon S3. You can use a 16-byte initialization vector
196      * with any encryption mode. Or, you can use a 12-byte initialization vector with
197      * GCM or CTR. MediaConvert accepts only initialization vectors that are
198      * base64-encoded.
199      */
WithInitializationVector(const Aws::String & value)200     inline InputDecryptionSettings& WithInitializationVector(const Aws::String& value) { SetInitializationVector(value); return *this;}
201 
202     /**
203      * Specify the initialization vector that you used when you encrypted your content
204      * before uploading it to Amazon S3. You can use a 16-byte initialization vector
205      * with any encryption mode. Or, you can use a 12-byte initialization vector with
206      * GCM or CTR. MediaConvert accepts only initialization vectors that are
207      * base64-encoded.
208      */
WithInitializationVector(Aws::String && value)209     inline InputDecryptionSettings& WithInitializationVector(Aws::String&& value) { SetInitializationVector(std::move(value)); return *this;}
210 
211     /**
212      * Specify the initialization vector that you used when you encrypted your content
213      * before uploading it to Amazon S3. You can use a 16-byte initialization vector
214      * with any encryption mode. Or, you can use a 12-byte initialization vector with
215      * GCM or CTR. MediaConvert accepts only initialization vectors that are
216      * base64-encoded.
217      */
WithInitializationVector(const char * value)218     inline InputDecryptionSettings& WithInitializationVector(const char* value) { SetInitializationVector(value); return *this;}
219 
220 
221     /**
222      * Specify the AWS Region for AWS Key Management Service (KMS) that you used to
223      * encrypt your data key, if that Region is different from the one you are using
224      * for AWS Elemental MediaConvert.
225      */
GetKmsKeyRegion()226     inline const Aws::String& GetKmsKeyRegion() const{ return m_kmsKeyRegion; }
227 
228     /**
229      * Specify the AWS Region for AWS Key Management Service (KMS) that you used to
230      * encrypt your data key, if that Region is different from the one you are using
231      * for AWS Elemental MediaConvert.
232      */
KmsKeyRegionHasBeenSet()233     inline bool KmsKeyRegionHasBeenSet() const { return m_kmsKeyRegionHasBeenSet; }
234 
235     /**
236      * Specify the AWS Region for AWS Key Management Service (KMS) that you used to
237      * encrypt your data key, if that Region is different from the one you are using
238      * for AWS Elemental MediaConvert.
239      */
SetKmsKeyRegion(const Aws::String & value)240     inline void SetKmsKeyRegion(const Aws::String& value) { m_kmsKeyRegionHasBeenSet = true; m_kmsKeyRegion = value; }
241 
242     /**
243      * Specify the AWS Region for AWS Key Management Service (KMS) that you used to
244      * encrypt your data key, if that Region is different from the one you are using
245      * for AWS Elemental MediaConvert.
246      */
SetKmsKeyRegion(Aws::String && value)247     inline void SetKmsKeyRegion(Aws::String&& value) { m_kmsKeyRegionHasBeenSet = true; m_kmsKeyRegion = std::move(value); }
248 
249     /**
250      * Specify the AWS Region for AWS Key Management Service (KMS) that you used to
251      * encrypt your data key, if that Region is different from the one you are using
252      * for AWS Elemental MediaConvert.
253      */
SetKmsKeyRegion(const char * value)254     inline void SetKmsKeyRegion(const char* value) { m_kmsKeyRegionHasBeenSet = true; m_kmsKeyRegion.assign(value); }
255 
256     /**
257      * Specify the AWS Region for AWS Key Management Service (KMS) that you used to
258      * encrypt your data key, if that Region is different from the one you are using
259      * for AWS Elemental MediaConvert.
260      */
WithKmsKeyRegion(const Aws::String & value)261     inline InputDecryptionSettings& WithKmsKeyRegion(const Aws::String& value) { SetKmsKeyRegion(value); return *this;}
262 
263     /**
264      * Specify the AWS Region for AWS Key Management Service (KMS) that you used to
265      * encrypt your data key, if that Region is different from the one you are using
266      * for AWS Elemental MediaConvert.
267      */
WithKmsKeyRegion(Aws::String && value)268     inline InputDecryptionSettings& WithKmsKeyRegion(Aws::String&& value) { SetKmsKeyRegion(std::move(value)); return *this;}
269 
270     /**
271      * Specify the AWS Region for AWS Key Management Service (KMS) that you used to
272      * encrypt your data key, if that Region is different from the one you are using
273      * for AWS Elemental MediaConvert.
274      */
WithKmsKeyRegion(const char * value)275     inline InputDecryptionSettings& WithKmsKeyRegion(const char* value) { SetKmsKeyRegion(value); return *this;}
276 
277   private:
278 
279     DecryptionMode m_decryptionMode;
280     bool m_decryptionModeHasBeenSet;
281 
282     Aws::String m_encryptedDecryptionKey;
283     bool m_encryptedDecryptionKeyHasBeenSet;
284 
285     Aws::String m_initializationVector;
286     bool m_initializationVectorHasBeenSet;
287 
288     Aws::String m_kmsKeyRegion;
289     bool m_kmsKeyRegionHasBeenSet;
290   };
291 
292 } // namespace Model
293 } // namespace MediaConvert
294 } // namespace Aws
295