/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the keyspaces-2022-02-10.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.Keyspaces.Model
{
    /// 
    /// Amazon Keyspaces encrypts and decrypts the table data at rest transparently and integrates
    /// with Key Management Service for storing and managing the encryption key. You can choose
    /// one of the following KMS keys (KMS keys):
    /// 
    ///   -  
    /// 
    /// Amazon Web Services owned key - This is the default encryption type. The key is owned
    /// by Amazon Keyspaces (no additional charge). 
    /// 
    ///  
  -  
    /// 
    /// Customer managed key - This key is stored in your account and is created, owned, and
    /// managed by you. You have full control over the customer managed key (KMS charges apply).
    /// 
    ///  
  
 
    /// 
    /// For more information about encryption at rest in Amazon Keyspaces, see Encryption
    /// at rest in the Amazon Keyspaces Developer Guide.
    /// 
    ///  
    /// 
    /// For more information about KMS, see KMS
    /// management service concepts in the Key Management Service Developer Guide.
    /// 
    /// 
    public partial class EncryptionSpecification
    {
        private string _kmsKeyIdentifier;
        private EncryptionType _type;
        /// 
        /// Gets and sets the property KmsKeyIdentifier. 
        /// 
        /// The Amazon Resource Name (ARN) of the customer managed KMS key, for example kms_key_identifier:ARN.
        /// 
        /// 
        [AWSProperty(Min=1, Max=5096)]
        public string KmsKeyIdentifier
        {
            get { return this._kmsKeyIdentifier; }
            set { this._kmsKeyIdentifier = value; }
        }
        // Check to see if KmsKeyIdentifier property is set
        internal bool IsSetKmsKeyIdentifier()
        {
            return this._kmsKeyIdentifier != null;
        }
        /// 
        /// Gets and sets the property Type. 
        /// 
        /// The encryption option specified for the table. You can choose one of the following
        /// KMS keys (KMS keys):
        /// 
        ///   -  
        /// 
        ///  
type:AWS_OWNED_KMS_KEY - This key is owned by Amazon Keyspaces. 
        /// 
        ///    -  
        /// 
        ///  
type:CUSTOMER_MANAGED_KMS_KEY - This key is stored in your account and
        /// is created, owned, and managed by you. This option requires the kms_key_identifier
        /// of the KMS key in Amazon Resource Name (ARN) format as input. 
        /// 
        ///    
 
        /// 
        /// The default is type:AWS_OWNED_KMS_KEY. 
        /// 
        ///  
        /// 
        /// For more information, see Encryption
        /// at rest in the Amazon Keyspaces Developer Guide.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public EncryptionType Type
        {
            get { return this._type; }
            set { this._type = value; }
        }
        // Check to see if Type property is set
        internal bool IsSetType()
        {
            return this._type != null;
        }
    }
}