/*
 * 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 route53domains-2014-05-15.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.Route53Domains.Model
{
    /// 
    /// Information about the DNSSEC key.
    /// 
    ///  
    /// 
    /// You get this from your DNS provider and then give it to Route 53 (by using AssociateDelegationSignerToDomain)
    /// to pass it to the registry to establish the chain of trust.
    /// 
    /// 
    public partial class DnssecKey
    {
        private int? _algorithm;
        private string _digest;
        private int? _digestType;
        private int? _flags;
        private string _id;
        private int? _keyTag;
        private string _publicKey;
        /// 
        /// Gets and sets the property Algorithm. 
        /// 
        /// The number of the public key’s cryptographic algorithm according to an IANA
        /// assignment. 
        /// 
        ///  
        /// 
        /// If Route 53 is your DNS service, set this to 13.
        /// 
        ///  
        /// 
        /// For more information about enabling DNSSEC signing, see Enabling
        /// DNSSEC signing and establishing a chain of trust.
        /// 
        /// 
        public int Algorithm
        {
            get { return this._algorithm.GetValueOrDefault(); }
            set { this._algorithm = value; }
        }
        // Check to see if Algorithm property is set
        internal bool IsSetAlgorithm()
        {
            return this._algorithm.HasValue; 
        }
        /// 
        /// Gets and sets the property Digest. 
        /// 
        ///  The delegation signer digest.
        /// 
        ///  
        /// 
        /// Digest is calculated from the public key provided using specified digest algorithm
        /// and this digest is the actual value returned from the registry nameservers as the
        /// value of DS records. 
        /// 
        /// 
        public string Digest
        {
            get { return this._digest; }
            set { this._digest = value; }
        }
        // Check to see if Digest property is set
        internal bool IsSetDigest()
        {
            return this._digest != null;
        }
        /// 
        /// Gets and sets the property DigestType. 
        /// 
        ///  The number of the DS digest algorithm according to an IANA assignment.
        /// 
        ///  
        /// 
        /// For more information, see IANA
        /// for DNSSEC Delegation Signer (DS) Resource Record (RR) Type Digest Algorithms. 
        /// 
        /// 
        public int DigestType
        {
            get { return this._digestType.GetValueOrDefault(); }
            set { this._digestType = value; }
        }
        // Check to see if DigestType property is set
        internal bool IsSetDigestType()
        {
            return this._digestType.HasValue; 
        }
        /// 
        /// Gets and sets the property Flags. 
        /// 
        /// Defines the type of key. It can be either a KSK (key-signing-key, value 257) or ZSK
        /// (zone-signing-key, value 256). Using KSK is always encouraged. Only use ZSK if your
        /// DNS provider isn't Route 53 and you don’t have KSK available.
        /// 
        ///  
        /// 
        /// If you have KSK and ZSK keys, always use KSK to create a delegations signer (DS) record.
        /// If you have ZSK keys only – use ZSK to create a DS record.
        /// 
        /// 
        public int Flags
        {
            get { return this._flags.GetValueOrDefault(); }
            set { this._flags = value; }
        }
        // Check to see if Flags property is set
        internal bool IsSetFlags()
        {
            return this._flags.HasValue; 
        }
        /// 
        /// Gets and sets the property Id. 
        /// 
        ///  An ID assigned to each DS record created by AssociateDelegationSignerToDomain.
        /// 
        /// 
        /// 
        public string Id
        {
            get { return this._id; }
            set { this._id = value; }
        }
        // Check to see if Id property is set
        internal bool IsSetId()
        {
            return this._id != null;
        }
        /// 
        /// Gets and sets the property KeyTag. 
        /// 
        ///  A numeric identification of the DNSKEY record referred to by this DS record. 
        /// 
        /// 
        public int KeyTag
        {
            get { return this._keyTag.GetValueOrDefault(); }
            set { this._keyTag = value; }
        }
        // Check to see if KeyTag property is set
        internal bool IsSetKeyTag()
        {
            return this._keyTag.HasValue; 
        }
        /// 
        /// Gets and sets the property PublicKey. 
        /// 
        /// The base64-encoded public key part of the key pair that is passed to the registry
        /// .
        /// 
        /// 
        [AWSProperty(Max=32768)]
        public string PublicKey
        {
            get { return this._publicKey; }
            set { this._publicKey = value; }
        }
        // Check to see if PublicKey property is set
        internal bool IsSetPublicKey()
        {
            return this._publicKey != null;
        }
    }
}