/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace PaymentCryptographyData { namespace Model { /** *

Parameters requried to encrypt plaintext data using symmetric * keys.

See Also:

AWS * API Reference

*/ class SymmetricEncryptionAttributes { public: AWS_PAYMENTCRYPTOGRAPHYDATA_API SymmetricEncryptionAttributes(); AWS_PAYMENTCRYPTOGRAPHYDATA_API SymmetricEncryptionAttributes(Aws::Utils::Json::JsonView jsonValue); AWS_PAYMENTCRYPTOGRAPHYDATA_API SymmetricEncryptionAttributes& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_PAYMENTCRYPTOGRAPHYDATA_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

An input to cryptographic primitive used to provide the intial state. The * InitializationVector is typically required have a random or * psuedo-random value, but sometimes it only needs to be unpredictable or unique. * If a value is not provided, Amazon Web Services Payment Cryptography generates a * random value.

*/ inline const Aws::String& GetInitializationVector() const{ return m_initializationVector; } /** *

An input to cryptographic primitive used to provide the intial state. The * InitializationVector is typically required have a random or * psuedo-random value, but sometimes it only needs to be unpredictable or unique. * If a value is not provided, Amazon Web Services Payment Cryptography generates a * random value.

*/ inline bool InitializationVectorHasBeenSet() const { return m_initializationVectorHasBeenSet; } /** *

An input to cryptographic primitive used to provide the intial state. The * InitializationVector is typically required have a random or * psuedo-random value, but sometimes it only needs to be unpredictable or unique. * If a value is not provided, Amazon Web Services Payment Cryptography generates a * random value.

*/ inline void SetInitializationVector(const Aws::String& value) { m_initializationVectorHasBeenSet = true; m_initializationVector = value; } /** *

An input to cryptographic primitive used to provide the intial state. The * InitializationVector is typically required have a random or * psuedo-random value, but sometimes it only needs to be unpredictable or unique. * If a value is not provided, Amazon Web Services Payment Cryptography generates a * random value.

*/ inline void SetInitializationVector(Aws::String&& value) { m_initializationVectorHasBeenSet = true; m_initializationVector = std::move(value); } /** *

An input to cryptographic primitive used to provide the intial state. The * InitializationVector is typically required have a random or * psuedo-random value, but sometimes it only needs to be unpredictable or unique. * If a value is not provided, Amazon Web Services Payment Cryptography generates a * random value.

*/ inline void SetInitializationVector(const char* value) { m_initializationVectorHasBeenSet = true; m_initializationVector.assign(value); } /** *

An input to cryptographic primitive used to provide the intial state. The * InitializationVector is typically required have a random or * psuedo-random value, but sometimes it only needs to be unpredictable or unique. * If a value is not provided, Amazon Web Services Payment Cryptography generates a * random value.

*/ inline SymmetricEncryptionAttributes& WithInitializationVector(const Aws::String& value) { SetInitializationVector(value); return *this;} /** *

An input to cryptographic primitive used to provide the intial state. The * InitializationVector is typically required have a random or * psuedo-random value, but sometimes it only needs to be unpredictable or unique. * If a value is not provided, Amazon Web Services Payment Cryptography generates a * random value.

*/ inline SymmetricEncryptionAttributes& WithInitializationVector(Aws::String&& value) { SetInitializationVector(std::move(value)); return *this;} /** *

An input to cryptographic primitive used to provide the intial state. The * InitializationVector is typically required have a random or * psuedo-random value, but sometimes it only needs to be unpredictable or unique. * If a value is not provided, Amazon Web Services Payment Cryptography generates a * random value.

*/ inline SymmetricEncryptionAttributes& WithInitializationVector(const char* value) { SetInitializationVector(value); return *this;} /** *

The block cipher mode of operation. Block ciphers are designed to encrypt a * block of data of fixed size (for example, 128 bits). The size of the input block * is usually same as the size of the encrypted output block, while the key length * can be different. A mode of operation describes how to repeatedly apply a * cipher's single-block operation to securely transform amounts of data larger * than a block.

*/ inline const EncryptionMode& GetMode() const{ return m_mode; } /** *

The block cipher mode of operation. Block ciphers are designed to encrypt a * block of data of fixed size (for example, 128 bits). The size of the input block * is usually same as the size of the encrypted output block, while the key length * can be different. A mode of operation describes how to repeatedly apply a * cipher's single-block operation to securely transform amounts of data larger * than a block.

*/ inline bool ModeHasBeenSet() const { return m_modeHasBeenSet; } /** *

The block cipher mode of operation. Block ciphers are designed to encrypt a * block of data of fixed size (for example, 128 bits). The size of the input block * is usually same as the size of the encrypted output block, while the key length * can be different. A mode of operation describes how to repeatedly apply a * cipher's single-block operation to securely transform amounts of data larger * than a block.

*/ inline void SetMode(const EncryptionMode& value) { m_modeHasBeenSet = true; m_mode = value; } /** *

The block cipher mode of operation. Block ciphers are designed to encrypt a * block of data of fixed size (for example, 128 bits). The size of the input block * is usually same as the size of the encrypted output block, while the key length * can be different. A mode of operation describes how to repeatedly apply a * cipher's single-block operation to securely transform amounts of data larger * than a block.

*/ inline void SetMode(EncryptionMode&& value) { m_modeHasBeenSet = true; m_mode = std::move(value); } /** *

The block cipher mode of operation. Block ciphers are designed to encrypt a * block of data of fixed size (for example, 128 bits). The size of the input block * is usually same as the size of the encrypted output block, while the key length * can be different. A mode of operation describes how to repeatedly apply a * cipher's single-block operation to securely transform amounts of data larger * than a block.

*/ inline SymmetricEncryptionAttributes& WithMode(const EncryptionMode& value) { SetMode(value); return *this;} /** *

The block cipher mode of operation. Block ciphers are designed to encrypt a * block of data of fixed size (for example, 128 bits). The size of the input block * is usually same as the size of the encrypted output block, while the key length * can be different. A mode of operation describes how to repeatedly apply a * cipher's single-block operation to securely transform amounts of data larger * than a block.

*/ inline SymmetricEncryptionAttributes& WithMode(EncryptionMode&& value) { SetMode(std::move(value)); return *this;} /** *

The padding to be included with the data.

*/ inline const PaddingType& GetPaddingType() const{ return m_paddingType; } /** *

The padding to be included with the data.

*/ inline bool PaddingTypeHasBeenSet() const { return m_paddingTypeHasBeenSet; } /** *

The padding to be included with the data.

*/ inline void SetPaddingType(const PaddingType& value) { m_paddingTypeHasBeenSet = true; m_paddingType = value; } /** *

The padding to be included with the data.

*/ inline void SetPaddingType(PaddingType&& value) { m_paddingTypeHasBeenSet = true; m_paddingType = std::move(value); } /** *

The padding to be included with the data.

*/ inline SymmetricEncryptionAttributes& WithPaddingType(const PaddingType& value) { SetPaddingType(value); return *this;} /** *

The padding to be included with the data.

*/ inline SymmetricEncryptionAttributes& WithPaddingType(PaddingType&& value) { SetPaddingType(std::move(value)); return *this;} private: Aws::String m_initializationVector; bool m_initializationVectorHasBeenSet = false; EncryptionMode m_mode; bool m_modeHasBeenSet = false; PaddingType m_paddingType; bool m_paddingTypeHasBeenSet = false; }; } // namespace Model } // namespace PaymentCryptographyData } // namespace Aws