/*
 * 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 kms-2014-11-01.normal.json service model.
 */
using System;
using Amazon.Runtime;
namespace Amazon.KeyManagementService
{
    /// 
    /// Constants used for properties of type AlgorithmSpec.
    /// 
    public class AlgorithmSpec : ConstantClass
    {
        /// 
        /// Constant RSA_AES_KEY_WRAP_SHA_1 for AlgorithmSpec
        /// 
        public static readonly AlgorithmSpec RSA_AES_KEY_WRAP_SHA_1 = new AlgorithmSpec("RSA_AES_KEY_WRAP_SHA_1");
        /// 
        /// Constant RSA_AES_KEY_WRAP_SHA_256 for AlgorithmSpec
        /// 
        public static readonly AlgorithmSpec RSA_AES_KEY_WRAP_SHA_256 = new AlgorithmSpec("RSA_AES_KEY_WRAP_SHA_256");
        /// 
        /// Constant RSAES_OAEP_SHA_1 for AlgorithmSpec
        /// 
        public static readonly AlgorithmSpec RSAES_OAEP_SHA_1 = new AlgorithmSpec("RSAES_OAEP_SHA_1");
        /// 
        /// Constant RSAES_OAEP_SHA_256 for AlgorithmSpec
        /// 
        public static readonly AlgorithmSpec RSAES_OAEP_SHA_256 = new AlgorithmSpec("RSAES_OAEP_SHA_256");
        /// 
        /// Constant RSAES_PKCS1_V1_5 for AlgorithmSpec
        /// 
        public static readonly AlgorithmSpec RSAES_PKCS1_V1_5 = new AlgorithmSpec("RSAES_PKCS1_V1_5");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public AlgorithmSpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static AlgorithmSpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator AlgorithmSpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type ConnectionErrorCodeType.
    /// 
    public class ConnectionErrorCodeType : ConstantClass
    {
        /// 
        /// Constant CLUSTER_NOT_FOUND for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType CLUSTER_NOT_FOUND = new ConnectionErrorCodeType("CLUSTER_NOT_FOUND");
        /// 
        /// Constant INSUFFICIENT_CLOUDHSM_HSMS for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType INSUFFICIENT_CLOUDHSM_HSMS = new ConnectionErrorCodeType("INSUFFICIENT_CLOUDHSM_HSMS");
        /// 
        /// Constant INSUFFICIENT_FREE_ADDRESSES_IN_SUBNET for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType INSUFFICIENT_FREE_ADDRESSES_IN_SUBNET = new ConnectionErrorCodeType("INSUFFICIENT_FREE_ADDRESSES_IN_SUBNET");
        /// 
        /// Constant INTERNAL_ERROR for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType INTERNAL_ERROR = new ConnectionErrorCodeType("INTERNAL_ERROR");
        /// 
        /// Constant INVALID_CREDENTIALS for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType INVALID_CREDENTIALS = new ConnectionErrorCodeType("INVALID_CREDENTIALS");
        /// 
        /// Constant NETWORK_ERRORS for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType NETWORK_ERRORS = new ConnectionErrorCodeType("NETWORK_ERRORS");
        /// 
        /// Constant SUBNET_NOT_FOUND for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType SUBNET_NOT_FOUND = new ConnectionErrorCodeType("SUBNET_NOT_FOUND");
        /// 
        /// Constant USER_LOCKED_OUT for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType USER_LOCKED_OUT = new ConnectionErrorCodeType("USER_LOCKED_OUT");
        /// 
        /// Constant USER_LOGGED_IN for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType USER_LOGGED_IN = new ConnectionErrorCodeType("USER_LOGGED_IN");
        /// 
        /// Constant USER_NOT_FOUND for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType USER_NOT_FOUND = new ConnectionErrorCodeType("USER_NOT_FOUND");
        /// 
        /// Constant XKS_PROXY_ACCESS_DENIED for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType XKS_PROXY_ACCESS_DENIED = new ConnectionErrorCodeType("XKS_PROXY_ACCESS_DENIED");
        /// 
        /// Constant XKS_PROXY_INVALID_CONFIGURATION for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType XKS_PROXY_INVALID_CONFIGURATION = new ConnectionErrorCodeType("XKS_PROXY_INVALID_CONFIGURATION");
        /// 
        /// Constant XKS_PROXY_INVALID_RESPONSE for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType XKS_PROXY_INVALID_RESPONSE = new ConnectionErrorCodeType("XKS_PROXY_INVALID_RESPONSE");
        /// 
        /// Constant XKS_PROXY_INVALID_TLS_CONFIGURATION for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType XKS_PROXY_INVALID_TLS_CONFIGURATION = new ConnectionErrorCodeType("XKS_PROXY_INVALID_TLS_CONFIGURATION");
        /// 
        /// Constant XKS_PROXY_NOT_REACHABLE for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType XKS_PROXY_NOT_REACHABLE = new ConnectionErrorCodeType("XKS_PROXY_NOT_REACHABLE");
        /// 
        /// Constant XKS_PROXY_TIMED_OUT for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType XKS_PROXY_TIMED_OUT = new ConnectionErrorCodeType("XKS_PROXY_TIMED_OUT");
        /// 
        /// Constant XKS_VPC_ENDPOINT_SERVICE_INVALID_CONFIGURATION for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType XKS_VPC_ENDPOINT_SERVICE_INVALID_CONFIGURATION = new ConnectionErrorCodeType("XKS_VPC_ENDPOINT_SERVICE_INVALID_CONFIGURATION");
        /// 
        /// Constant XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND for ConnectionErrorCodeType
        /// 
        public static readonly ConnectionErrorCodeType XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND = new ConnectionErrorCodeType("XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public ConnectionErrorCodeType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static ConnectionErrorCodeType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator ConnectionErrorCodeType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type ConnectionStateType.
    /// 
    public class ConnectionStateType : ConstantClass
    {
        /// 
        /// Constant CONNECTED for ConnectionStateType
        /// 
        public static readonly ConnectionStateType CONNECTED = new ConnectionStateType("CONNECTED");
        /// 
        /// Constant CONNECTING for ConnectionStateType
        /// 
        public static readonly ConnectionStateType CONNECTING = new ConnectionStateType("CONNECTING");
        /// 
        /// Constant DISCONNECTED for ConnectionStateType
        /// 
        public static readonly ConnectionStateType DISCONNECTED = new ConnectionStateType("DISCONNECTED");
        /// 
        /// Constant DISCONNECTING for ConnectionStateType
        /// 
        public static readonly ConnectionStateType DISCONNECTING = new ConnectionStateType("DISCONNECTING");
        /// 
        /// Constant FAILED for ConnectionStateType
        /// 
        public static readonly ConnectionStateType FAILED = new ConnectionStateType("FAILED");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public ConnectionStateType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static ConnectionStateType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator ConnectionStateType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type CustomerMasterKeySpec.
    /// 
    public class CustomerMasterKeySpec : ConstantClass
    {
        /// 
        /// Constant ECC_NIST_P256 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec ECC_NIST_P256 = new CustomerMasterKeySpec("ECC_NIST_P256");
        /// 
        /// Constant ECC_NIST_P384 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec ECC_NIST_P384 = new CustomerMasterKeySpec("ECC_NIST_P384");
        /// 
        /// Constant ECC_NIST_P521 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec ECC_NIST_P521 = new CustomerMasterKeySpec("ECC_NIST_P521");
        /// 
        /// Constant ECC_SECG_P256K1 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec ECC_SECG_P256K1 = new CustomerMasterKeySpec("ECC_SECG_P256K1");
        /// 
        /// Constant HMAC_224 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec HMAC_224 = new CustomerMasterKeySpec("HMAC_224");
        /// 
        /// Constant HMAC_256 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec HMAC_256 = new CustomerMasterKeySpec("HMAC_256");
        /// 
        /// Constant HMAC_384 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec HMAC_384 = new CustomerMasterKeySpec("HMAC_384");
        /// 
        /// Constant HMAC_512 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec HMAC_512 = new CustomerMasterKeySpec("HMAC_512");
        /// 
        /// Constant RSA_2048 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec RSA_2048 = new CustomerMasterKeySpec("RSA_2048");
        /// 
        /// Constant RSA_3072 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec RSA_3072 = new CustomerMasterKeySpec("RSA_3072");
        /// 
        /// Constant RSA_4096 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec RSA_4096 = new CustomerMasterKeySpec("RSA_4096");
        /// 
        /// Constant SM2 for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec SM2 = new CustomerMasterKeySpec("SM2");
        /// 
        /// Constant SYMMETRIC_DEFAULT for CustomerMasterKeySpec
        /// 
        public static readonly CustomerMasterKeySpec SYMMETRIC_DEFAULT = new CustomerMasterKeySpec("SYMMETRIC_DEFAULT");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public CustomerMasterKeySpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static CustomerMasterKeySpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator CustomerMasterKeySpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type CustomKeyStoreType.
    /// 
    public class CustomKeyStoreType : ConstantClass
    {
        /// 
        /// Constant AWS_CLOUDHSM for CustomKeyStoreType
        /// 
        public static readonly CustomKeyStoreType AWS_CLOUDHSM = new CustomKeyStoreType("AWS_CLOUDHSM");
        /// 
        /// Constant EXTERNAL_KEY_STORE for CustomKeyStoreType
        /// 
        public static readonly CustomKeyStoreType EXTERNAL_KEY_STORE = new CustomKeyStoreType("EXTERNAL_KEY_STORE");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public CustomKeyStoreType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static CustomKeyStoreType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator CustomKeyStoreType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type DataKeyPairSpec.
    /// 
    public class DataKeyPairSpec : ConstantClass
    {
        /// 
        /// Constant ECC_NIST_P256 for DataKeyPairSpec
        /// 
        public static readonly DataKeyPairSpec ECC_NIST_P256 = new DataKeyPairSpec("ECC_NIST_P256");
        /// 
        /// Constant ECC_NIST_P384 for DataKeyPairSpec
        /// 
        public static readonly DataKeyPairSpec ECC_NIST_P384 = new DataKeyPairSpec("ECC_NIST_P384");
        /// 
        /// Constant ECC_NIST_P521 for DataKeyPairSpec
        /// 
        public static readonly DataKeyPairSpec ECC_NIST_P521 = new DataKeyPairSpec("ECC_NIST_P521");
        /// 
        /// Constant ECC_SECG_P256K1 for DataKeyPairSpec
        /// 
        public static readonly DataKeyPairSpec ECC_SECG_P256K1 = new DataKeyPairSpec("ECC_SECG_P256K1");
        /// 
        /// Constant RSA_2048 for DataKeyPairSpec
        /// 
        public static readonly DataKeyPairSpec RSA_2048 = new DataKeyPairSpec("RSA_2048");
        /// 
        /// Constant RSA_3072 for DataKeyPairSpec
        /// 
        public static readonly DataKeyPairSpec RSA_3072 = new DataKeyPairSpec("RSA_3072");
        /// 
        /// Constant RSA_4096 for DataKeyPairSpec
        /// 
        public static readonly DataKeyPairSpec RSA_4096 = new DataKeyPairSpec("RSA_4096");
        /// 
        /// Constant SM2 for DataKeyPairSpec
        /// 
        public static readonly DataKeyPairSpec SM2 = new DataKeyPairSpec("SM2");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public DataKeyPairSpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static DataKeyPairSpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator DataKeyPairSpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type DataKeySpec.
    /// 
    public class DataKeySpec : ConstantClass
    {
        /// 
        /// Constant AES_128 for DataKeySpec
        /// 
        public static readonly DataKeySpec AES_128 = new DataKeySpec("AES_128");
        /// 
        /// Constant AES_256 for DataKeySpec
        /// 
        public static readonly DataKeySpec AES_256 = new DataKeySpec("AES_256");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public DataKeySpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static DataKeySpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator DataKeySpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type EncryptionAlgorithmSpec.
    /// 
    public class EncryptionAlgorithmSpec : ConstantClass
    {
        /// 
        /// Constant RSAES_OAEP_SHA_1 for EncryptionAlgorithmSpec
        /// 
        public static readonly EncryptionAlgorithmSpec RSAES_OAEP_SHA_1 = new EncryptionAlgorithmSpec("RSAES_OAEP_SHA_1");
        /// 
        /// Constant RSAES_OAEP_SHA_256 for EncryptionAlgorithmSpec
        /// 
        public static readonly EncryptionAlgorithmSpec RSAES_OAEP_SHA_256 = new EncryptionAlgorithmSpec("RSAES_OAEP_SHA_256");
        /// 
        /// Constant SM2PKE for EncryptionAlgorithmSpec
        /// 
        public static readonly EncryptionAlgorithmSpec SM2PKE = new EncryptionAlgorithmSpec("SM2PKE");
        /// 
        /// Constant SYMMETRIC_DEFAULT for EncryptionAlgorithmSpec
        /// 
        public static readonly EncryptionAlgorithmSpec SYMMETRIC_DEFAULT = new EncryptionAlgorithmSpec("SYMMETRIC_DEFAULT");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public EncryptionAlgorithmSpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static EncryptionAlgorithmSpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator EncryptionAlgorithmSpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type ExpirationModelType.
    /// 
    public class ExpirationModelType : ConstantClass
    {
        /// 
        /// Constant KEY_MATERIAL_DOES_NOT_EXPIRE for ExpirationModelType
        /// 
        public static readonly ExpirationModelType KEY_MATERIAL_DOES_NOT_EXPIRE = new ExpirationModelType("KEY_MATERIAL_DOES_NOT_EXPIRE");
        /// 
        /// Constant KEY_MATERIAL_EXPIRES for ExpirationModelType
        /// 
        public static readonly ExpirationModelType KEY_MATERIAL_EXPIRES = new ExpirationModelType("KEY_MATERIAL_EXPIRES");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public ExpirationModelType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static ExpirationModelType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator ExpirationModelType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type GrantOperation.
    /// 
    public class GrantOperation : ConstantClass
    {
        /// 
        /// Constant CreateGrant for GrantOperation
        /// 
        public static readonly GrantOperation CreateGrant = new GrantOperation("CreateGrant");
        /// 
        /// Constant Decrypt for GrantOperation
        /// 
        public static readonly GrantOperation Decrypt = new GrantOperation("Decrypt");
        /// 
        /// Constant DescribeKey for GrantOperation
        /// 
        public static readonly GrantOperation DescribeKey = new GrantOperation("DescribeKey");
        /// 
        /// Constant Encrypt for GrantOperation
        /// 
        public static readonly GrantOperation Encrypt = new GrantOperation("Encrypt");
        /// 
        /// Constant GenerateDataKey for GrantOperation
        /// 
        public static readonly GrantOperation GenerateDataKey = new GrantOperation("GenerateDataKey");
        /// 
        /// Constant GenerateDataKeyPair for GrantOperation
        /// 
        public static readonly GrantOperation GenerateDataKeyPair = new GrantOperation("GenerateDataKeyPair");
        /// 
        /// Constant GenerateDataKeyPairWithoutPlaintext for GrantOperation
        /// 
        public static readonly GrantOperation GenerateDataKeyPairWithoutPlaintext = new GrantOperation("GenerateDataKeyPairWithoutPlaintext");
        /// 
        /// Constant GenerateDataKeyWithoutPlaintext for GrantOperation
        /// 
        public static readonly GrantOperation GenerateDataKeyWithoutPlaintext = new GrantOperation("GenerateDataKeyWithoutPlaintext");
        /// 
        /// Constant GenerateMac for GrantOperation
        /// 
        public static readonly GrantOperation GenerateMac = new GrantOperation("GenerateMac");
        /// 
        /// Constant GetPublicKey for GrantOperation
        /// 
        public static readonly GrantOperation GetPublicKey = new GrantOperation("GetPublicKey");
        /// 
        /// Constant ReEncryptFrom for GrantOperation
        /// 
        public static readonly GrantOperation ReEncryptFrom = new GrantOperation("ReEncryptFrom");
        /// 
        /// Constant ReEncryptTo for GrantOperation
        /// 
        public static readonly GrantOperation ReEncryptTo = new GrantOperation("ReEncryptTo");
        /// 
        /// Constant RetireGrant for GrantOperation
        /// 
        public static readonly GrantOperation RetireGrant = new GrantOperation("RetireGrant");
        /// 
        /// Constant Sign for GrantOperation
        /// 
        public static readonly GrantOperation Sign = new GrantOperation("Sign");
        /// 
        /// Constant Verify for GrantOperation
        /// 
        public static readonly GrantOperation Verify = new GrantOperation("Verify");
        /// 
        /// Constant VerifyMac for GrantOperation
        /// 
        public static readonly GrantOperation VerifyMac = new GrantOperation("VerifyMac");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public GrantOperation(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static GrantOperation FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator GrantOperation(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type KeyEncryptionMechanism.
    /// 
    public class KeyEncryptionMechanism : ConstantClass
    {
        /// 
        /// Constant RSAES_OAEP_SHA_256 for KeyEncryptionMechanism
        /// 
        public static readonly KeyEncryptionMechanism RSAES_OAEP_SHA_256 = new KeyEncryptionMechanism("RSAES_OAEP_SHA_256");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public KeyEncryptionMechanism(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static KeyEncryptionMechanism FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator KeyEncryptionMechanism(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type KeyManagerType.
    /// 
    public class KeyManagerType : ConstantClass
    {
        /// 
        /// Constant AWS for KeyManagerType
        /// 
        public static readonly KeyManagerType AWS = new KeyManagerType("AWS");
        /// 
        /// Constant CUSTOMER for KeyManagerType
        /// 
        public static readonly KeyManagerType CUSTOMER = new KeyManagerType("CUSTOMER");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public KeyManagerType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static KeyManagerType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator KeyManagerType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type KeySpec.
    /// 
    public class KeySpec : ConstantClass
    {
        /// 
        /// Constant ECC_NIST_P256 for KeySpec
        /// 
        public static readonly KeySpec ECC_NIST_P256 = new KeySpec("ECC_NIST_P256");
        /// 
        /// Constant ECC_NIST_P384 for KeySpec
        /// 
        public static readonly KeySpec ECC_NIST_P384 = new KeySpec("ECC_NIST_P384");
        /// 
        /// Constant ECC_NIST_P521 for KeySpec
        /// 
        public static readonly KeySpec ECC_NIST_P521 = new KeySpec("ECC_NIST_P521");
        /// 
        /// Constant ECC_SECG_P256K1 for KeySpec
        /// 
        public static readonly KeySpec ECC_SECG_P256K1 = new KeySpec("ECC_SECG_P256K1");
        /// 
        /// Constant HMAC_224 for KeySpec
        /// 
        public static readonly KeySpec HMAC_224 = new KeySpec("HMAC_224");
        /// 
        /// Constant HMAC_256 for KeySpec
        /// 
        public static readonly KeySpec HMAC_256 = new KeySpec("HMAC_256");
        /// 
        /// Constant HMAC_384 for KeySpec
        /// 
        public static readonly KeySpec HMAC_384 = new KeySpec("HMAC_384");
        /// 
        /// Constant HMAC_512 for KeySpec
        /// 
        public static readonly KeySpec HMAC_512 = new KeySpec("HMAC_512");
        /// 
        /// Constant RSA_2048 for KeySpec
        /// 
        public static readonly KeySpec RSA_2048 = new KeySpec("RSA_2048");
        /// 
        /// Constant RSA_3072 for KeySpec
        /// 
        public static readonly KeySpec RSA_3072 = new KeySpec("RSA_3072");
        /// 
        /// Constant RSA_4096 for KeySpec
        /// 
        public static readonly KeySpec RSA_4096 = new KeySpec("RSA_4096");
        /// 
        /// Constant SM2 for KeySpec
        /// 
        public static readonly KeySpec SM2 = new KeySpec("SM2");
        /// 
        /// Constant SYMMETRIC_DEFAULT for KeySpec
        /// 
        public static readonly KeySpec SYMMETRIC_DEFAULT = new KeySpec("SYMMETRIC_DEFAULT");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public KeySpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static KeySpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator KeySpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type KeyState.
    /// 
    public class KeyState : ConstantClass
    {
        /// 
        /// Constant Creating for KeyState
        /// 
        public static readonly KeyState Creating = new KeyState("Creating");
        /// 
        /// Constant Disabled for KeyState
        /// 
        public static readonly KeyState Disabled = new KeyState("Disabled");
        /// 
        /// Constant Enabled for KeyState
        /// 
        public static readonly KeyState Enabled = new KeyState("Enabled");
        /// 
        /// Constant PendingDeletion for KeyState
        /// 
        public static readonly KeyState PendingDeletion = new KeyState("PendingDeletion");
        /// 
        /// Constant PendingImport for KeyState
        /// 
        public static readonly KeyState PendingImport = new KeyState("PendingImport");
        /// 
        /// Constant PendingReplicaDeletion for KeyState
        /// 
        public static readonly KeyState PendingReplicaDeletion = new KeyState("PendingReplicaDeletion");
        /// 
        /// Constant Unavailable for KeyState
        /// 
        public static readonly KeyState Unavailable = new KeyState("Unavailable");
        /// 
        /// Constant Updating for KeyState
        /// 
        public static readonly KeyState Updating = new KeyState("Updating");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public KeyState(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static KeyState FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator KeyState(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type KeyUsageType.
    /// 
    public class KeyUsageType : ConstantClass
    {
        /// 
        /// Constant ENCRYPT_DECRYPT for KeyUsageType
        /// 
        public static readonly KeyUsageType ENCRYPT_DECRYPT = new KeyUsageType("ENCRYPT_DECRYPT");
        /// 
        /// Constant GENERATE_VERIFY_MAC for KeyUsageType
        /// 
        public static readonly KeyUsageType GENERATE_VERIFY_MAC = new KeyUsageType("GENERATE_VERIFY_MAC");
        /// 
        /// Constant SIGN_VERIFY for KeyUsageType
        /// 
        public static readonly KeyUsageType SIGN_VERIFY = new KeyUsageType("SIGN_VERIFY");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public KeyUsageType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static KeyUsageType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator KeyUsageType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type MacAlgorithmSpec.
    /// 
    public class MacAlgorithmSpec : ConstantClass
    {
        /// 
        /// Constant HMAC_SHA_224 for MacAlgorithmSpec
        /// 
        public static readonly MacAlgorithmSpec HMAC_SHA_224 = new MacAlgorithmSpec("HMAC_SHA_224");
        /// 
        /// Constant HMAC_SHA_256 for MacAlgorithmSpec
        /// 
        public static readonly MacAlgorithmSpec HMAC_SHA_256 = new MacAlgorithmSpec("HMAC_SHA_256");
        /// 
        /// Constant HMAC_SHA_384 for MacAlgorithmSpec
        /// 
        public static readonly MacAlgorithmSpec HMAC_SHA_384 = new MacAlgorithmSpec("HMAC_SHA_384");
        /// 
        /// Constant HMAC_SHA_512 for MacAlgorithmSpec
        /// 
        public static readonly MacAlgorithmSpec HMAC_SHA_512 = new MacAlgorithmSpec("HMAC_SHA_512");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public MacAlgorithmSpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static MacAlgorithmSpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator MacAlgorithmSpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type MessageType.
    /// 
    public class MessageType : ConstantClass
    {
        /// 
        /// Constant DIGEST for MessageType
        /// 
        public static readonly MessageType DIGEST = new MessageType("DIGEST");
        /// 
        /// Constant RAW for MessageType
        /// 
        public static readonly MessageType RAW = new MessageType("RAW");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public MessageType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static MessageType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator MessageType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type MultiRegionKeyType.
    /// 
    public class MultiRegionKeyType : ConstantClass
    {
        /// 
        /// Constant PRIMARY for MultiRegionKeyType
        /// 
        public static readonly MultiRegionKeyType PRIMARY = new MultiRegionKeyType("PRIMARY");
        /// 
        /// Constant REPLICA for MultiRegionKeyType
        /// 
        public static readonly MultiRegionKeyType REPLICA = new MultiRegionKeyType("REPLICA");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public MultiRegionKeyType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static MultiRegionKeyType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator MultiRegionKeyType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type OriginType.
    /// 
    public class OriginType : ConstantClass
    {
        /// 
        /// Constant AWS_CLOUDHSM for OriginType
        /// 
        public static readonly OriginType AWS_CLOUDHSM = new OriginType("AWS_CLOUDHSM");
        /// 
        /// Constant AWS_KMS for OriginType
        /// 
        public static readonly OriginType AWS_KMS = new OriginType("AWS_KMS");
        /// 
        /// Constant EXTERNAL for OriginType
        /// 
        public static readonly OriginType EXTERNAL = new OriginType("EXTERNAL");
        /// 
        /// Constant EXTERNAL_KEY_STORE for OriginType
        /// 
        public static readonly OriginType EXTERNAL_KEY_STORE = new OriginType("EXTERNAL_KEY_STORE");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public OriginType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static OriginType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator OriginType(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type SigningAlgorithmSpec.
    /// 
    public class SigningAlgorithmSpec : ConstantClass
    {
        /// 
        /// Constant ECDSA_SHA_256 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec ECDSA_SHA_256 = new SigningAlgorithmSpec("ECDSA_SHA_256");
        /// 
        /// Constant ECDSA_SHA_384 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec ECDSA_SHA_384 = new SigningAlgorithmSpec("ECDSA_SHA_384");
        /// 
        /// Constant ECDSA_SHA_512 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec ECDSA_SHA_512 = new SigningAlgorithmSpec("ECDSA_SHA_512");
        /// 
        /// Constant RSASSA_PKCS1_V1_5_SHA_256 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec RSASSA_PKCS1_V1_5_SHA_256 = new SigningAlgorithmSpec("RSASSA_PKCS1_V1_5_SHA_256");
        /// 
        /// Constant RSASSA_PKCS1_V1_5_SHA_384 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec RSASSA_PKCS1_V1_5_SHA_384 = new SigningAlgorithmSpec("RSASSA_PKCS1_V1_5_SHA_384");
        /// 
        /// Constant RSASSA_PKCS1_V1_5_SHA_512 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec RSASSA_PKCS1_V1_5_SHA_512 = new SigningAlgorithmSpec("RSASSA_PKCS1_V1_5_SHA_512");
        /// 
        /// Constant RSASSA_PSS_SHA_256 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec RSASSA_PSS_SHA_256 = new SigningAlgorithmSpec("RSASSA_PSS_SHA_256");
        /// 
        /// Constant RSASSA_PSS_SHA_384 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec RSASSA_PSS_SHA_384 = new SigningAlgorithmSpec("RSASSA_PSS_SHA_384");
        /// 
        /// Constant RSASSA_PSS_SHA_512 for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec RSASSA_PSS_SHA_512 = new SigningAlgorithmSpec("RSASSA_PSS_SHA_512");
        /// 
        /// Constant SM2DSA for SigningAlgorithmSpec
        /// 
        public static readonly SigningAlgorithmSpec SM2DSA = new SigningAlgorithmSpec("SM2DSA");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public SigningAlgorithmSpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static SigningAlgorithmSpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator SigningAlgorithmSpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type WrappingKeySpec.
    /// 
    public class WrappingKeySpec : ConstantClass
    {
        /// 
        /// Constant RSA_2048 for WrappingKeySpec
        /// 
        public static readonly WrappingKeySpec RSA_2048 = new WrappingKeySpec("RSA_2048");
        /// 
        /// Constant RSA_3072 for WrappingKeySpec
        /// 
        public static readonly WrappingKeySpec RSA_3072 = new WrappingKeySpec("RSA_3072");
        /// 
        /// Constant RSA_4096 for WrappingKeySpec
        /// 
        public static readonly WrappingKeySpec RSA_4096 = new WrappingKeySpec("RSA_4096");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public WrappingKeySpec(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static WrappingKeySpec FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator WrappingKeySpec(string value)
        {
            return FindValue(value);
        }
    }
    /// 
    /// Constants used for properties of type XksProxyConnectivityType.
    /// 
    public class XksProxyConnectivityType : ConstantClass
    {
        /// 
        /// Constant PUBLIC_ENDPOINT for XksProxyConnectivityType
        /// 
        public static readonly XksProxyConnectivityType PUBLIC_ENDPOINT = new XksProxyConnectivityType("PUBLIC_ENDPOINT");
        /// 
        /// Constant VPC_ENDPOINT_SERVICE for XksProxyConnectivityType
        /// 
        public static readonly XksProxyConnectivityType VPC_ENDPOINT_SERVICE = new XksProxyConnectivityType("VPC_ENDPOINT_SERVICE");
        /// 
        /// This constant constructor does not need to be called if the constant
        /// you are attempting to use is already defined as a static instance of 
        /// this class.
        /// This constructor should be used to construct constants that are not
        /// defined as statics, for instance if attempting to use a feature that is
        /// newer than the current version of the SDK.
        /// 
        public XksProxyConnectivityType(string value)
            : base(value)
        {
        }
        /// 
        /// Finds the constant for the unique value.
        /// 
        /// The unique value for the constant
        /// The constant for the unique value
        public static XksProxyConnectivityType FindValue(string value)
        {
            return FindValue(value);
        }
        /// 
        /// Utility method to convert strings to the constant class.
        /// 
        /// The string value to convert to the constant class.
        /// 
        public static implicit operator XksProxyConnectivityType(string value)
        {
            return FindValue(value);
        }
    }
}