public object Execute()

in modules/AWSPowerShell/Cmdlets/PaymentCryptography/Basic/Import-PAYCCKey-Cmdlet.cs [1009:1843]


        public object Execute(ExecutorContext context)
        {
            var cmdletContext = context as CmdletContext;
            // create request
            var request = new Amazon.PaymentCryptography.Model.ImportKeyRequest();
            
            if (cmdletContext.Enabled != null)
            {
                request.Enabled = cmdletContext.Enabled.Value;
            }
            if (cmdletContext.KeyCheckValueAlgorithm != null)
            {
                request.KeyCheckValueAlgorithm = cmdletContext.KeyCheckValueAlgorithm;
            }
            
             // populate KeyMaterial
            var requestKeyMaterialIsNull = true;
            request.KeyMaterial = new Amazon.PaymentCryptography.Model.ImportKeyMaterial();
            Amazon.PaymentCryptography.Model.RootCertificatePublicKey requestKeyMaterial_keyMaterial_RootCertificatePublicKey = null;
            
             // populate RootCertificatePublicKey
            var requestKeyMaterial_keyMaterial_RootCertificatePublicKeyIsNull = true;
            requestKeyMaterial_keyMaterial_RootCertificatePublicKey = new Amazon.PaymentCryptography.Model.RootCertificatePublicKey();
            System.String requestKeyMaterial_keyMaterial_RootCertificatePublicKey_rootCertificatePublicKey_PublicKeyCertificate = null;
            if (cmdletContext.RootCertificatePublicKey_PublicKeyCertificate != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_rootCertificatePublicKey_PublicKeyCertificate = cmdletContext.RootCertificatePublicKey_PublicKeyCertificate;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_rootCertificatePublicKey_PublicKeyCertificate != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey.PublicKeyCertificate = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_rootCertificatePublicKey_PublicKeyCertificate;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKeyIsNull = false;
            }
            Amazon.PaymentCryptography.Model.KeyAttributes requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes = null;
            
             // populate KeyAttributes
            var requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributesIsNull = true;
            requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes = new Amazon.PaymentCryptography.Model.KeyAttributes();
            Amazon.PaymentCryptography.KeyAlgorithm requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyAlgorithm = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyAlgorithm = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyAlgorithm;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes.KeyAlgorithm = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyAlgorithm;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.KeyClass requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyClass = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyClass != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyClass = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyClass;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyClass != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes.KeyClass = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyClass;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.KeyUsage requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyUsage = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyUsage != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyUsage = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyUsage;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyUsage != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes.KeyUsage = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyUsage;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.Model.KeyModesOfUse requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse = null;
            
             // populate KeyModesOfUse
            var requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = true;
            requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse = new Amazon.PaymentCryptography.Model.KeyModesOfUse();
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Decrypt = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Decrypt != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Decrypt = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Decrypt.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Decrypt != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.Decrypt = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Decrypt.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_DeriveKey = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_DeriveKey != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_DeriveKey = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_DeriveKey.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_DeriveKey != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.DeriveKey = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_DeriveKey.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Encrypt = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Encrypt != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Encrypt = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Encrypt.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Encrypt != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.Encrypt = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Encrypt.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Generate = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Generate != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Generate = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Generate.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Generate != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.Generate = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Generate.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_NoRestrictions = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_NoRestrictions != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_NoRestrictions = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_NoRestrictions.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_NoRestrictions != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.NoRestrictions = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_NoRestrictions.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Sign = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Sign != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Sign = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Sign.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Sign != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.Sign = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Sign.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Unwrap = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Unwrap != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Unwrap = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Unwrap.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Unwrap != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.Unwrap = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Unwrap.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Verify = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Verify != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Verify = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Verify.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Verify != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.Verify = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Verify.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Wrap = null;
            if (cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Wrap != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Wrap = cmdletContext.KeyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Wrap.Value;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Wrap != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse.Wrap = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse_Wrap.Value;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse should be set to null
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse = null;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes.KeyModesOfUse = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes_keyMaterial_RootCertificatePublicKey_KeyAttributes_KeyModesOfUse;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributesIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes should be set to null
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributesIsNull)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes = null;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes != null)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey.KeyAttributes = requestKeyMaterial_keyMaterial_RootCertificatePublicKey_keyMaterial_RootCertificatePublicKey_KeyAttributes;
                requestKeyMaterial_keyMaterial_RootCertificatePublicKeyIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_RootCertificatePublicKey should be set to null
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKeyIsNull)
            {
                requestKeyMaterial_keyMaterial_RootCertificatePublicKey = null;
            }
            if (requestKeyMaterial_keyMaterial_RootCertificatePublicKey != null)
            {
                request.KeyMaterial.RootCertificatePublicKey = requestKeyMaterial_keyMaterial_RootCertificatePublicKey;
                requestKeyMaterialIsNull = false;
            }
            Amazon.PaymentCryptography.Model.ImportTr31KeyBlock requestKeyMaterial_keyMaterial_Tr31KeyBlock = null;
            
             // populate Tr31KeyBlock
            var requestKeyMaterial_keyMaterial_Tr31KeyBlockIsNull = true;
            requestKeyMaterial_keyMaterial_Tr31KeyBlock = new Amazon.PaymentCryptography.Model.ImportTr31KeyBlock();
            System.String requestKeyMaterial_keyMaterial_Tr31KeyBlock_tr31KeyBlock_WrappedKeyBlock = null;
            if (cmdletContext.Tr31KeyBlock_WrappedKeyBlock != null)
            {
                requestKeyMaterial_keyMaterial_Tr31KeyBlock_tr31KeyBlock_WrappedKeyBlock = cmdletContext.Tr31KeyBlock_WrappedKeyBlock;
            }
            if (requestKeyMaterial_keyMaterial_Tr31KeyBlock_tr31KeyBlock_WrappedKeyBlock != null)
            {
                requestKeyMaterial_keyMaterial_Tr31KeyBlock.WrappedKeyBlock = requestKeyMaterial_keyMaterial_Tr31KeyBlock_tr31KeyBlock_WrappedKeyBlock;
                requestKeyMaterial_keyMaterial_Tr31KeyBlockIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_Tr31KeyBlock_tr31KeyBlock_WrappingKeyIdentifier = null;
            if (cmdletContext.Tr31KeyBlock_WrappingKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_Tr31KeyBlock_tr31KeyBlock_WrappingKeyIdentifier = cmdletContext.Tr31KeyBlock_WrappingKeyIdentifier;
            }
            if (requestKeyMaterial_keyMaterial_Tr31KeyBlock_tr31KeyBlock_WrappingKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_Tr31KeyBlock.WrappingKeyIdentifier = requestKeyMaterial_keyMaterial_Tr31KeyBlock_tr31KeyBlock_WrappingKeyIdentifier;
                requestKeyMaterial_keyMaterial_Tr31KeyBlockIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_Tr31KeyBlock should be set to null
            if (requestKeyMaterial_keyMaterial_Tr31KeyBlockIsNull)
            {
                requestKeyMaterial_keyMaterial_Tr31KeyBlock = null;
            }
            if (requestKeyMaterial_keyMaterial_Tr31KeyBlock != null)
            {
                request.KeyMaterial.Tr31KeyBlock = requestKeyMaterial_keyMaterial_Tr31KeyBlock;
                requestKeyMaterialIsNull = false;
            }
            Amazon.PaymentCryptography.Model.TrustedCertificatePublicKey requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey = null;
            
             // populate TrustedCertificatePublicKey
            var requestKeyMaterial_keyMaterial_TrustedCertificatePublicKeyIsNull = true;
            requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey = new Amazon.PaymentCryptography.Model.TrustedCertificatePublicKey();
            System.String requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_trustedCertificatePublicKey_CertificateAuthorityPublicKeyIdentifier = null;
            if (cmdletContext.TrustedCertificatePublicKey_CertificateAuthorityPublicKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_trustedCertificatePublicKey_CertificateAuthorityPublicKeyIdentifier = cmdletContext.TrustedCertificatePublicKey_CertificateAuthorityPublicKeyIdentifier;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_trustedCertificatePublicKey_CertificateAuthorityPublicKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey.CertificateAuthorityPublicKeyIdentifier = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_trustedCertificatePublicKey_CertificateAuthorityPublicKeyIdentifier;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKeyIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_trustedCertificatePublicKey_PublicKeyCertificate = null;
            if (cmdletContext.TrustedCertificatePublicKey_PublicKeyCertificate != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_trustedCertificatePublicKey_PublicKeyCertificate = cmdletContext.TrustedCertificatePublicKey_PublicKeyCertificate;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_trustedCertificatePublicKey_PublicKeyCertificate != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey.PublicKeyCertificate = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_trustedCertificatePublicKey_PublicKeyCertificate;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKeyIsNull = false;
            }
            Amazon.PaymentCryptography.Model.KeyAttributes requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes = null;
            
             // populate KeyAttributes
            var requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributesIsNull = true;
            requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes = new Amazon.PaymentCryptography.Model.KeyAttributes();
            Amazon.PaymentCryptography.KeyAlgorithm requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyAlgorithm = null;
            if (cmdletContext.KeyAttributes_KeyAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyAlgorithm = cmdletContext.KeyAttributes_KeyAlgorithm;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes.KeyAlgorithm = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyAlgorithm;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.KeyClass requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyClass = null;
            if (cmdletContext.KeyAttributes_KeyClass != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyClass = cmdletContext.KeyAttributes_KeyClass;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyClass != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes.KeyClass = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyClass;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.KeyUsage requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyUsage = null;
            if (cmdletContext.KeyAttributes_KeyUsage != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyUsage = cmdletContext.KeyAttributes_KeyUsage;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyUsage != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes.KeyUsage = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyAttributes_KeyUsage;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.Model.KeyModesOfUse requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse = null;
            
             // populate KeyModesOfUse
            var requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = true;
            requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse = new Amazon.PaymentCryptography.Model.KeyModesOfUse();
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Decrypt = null;
            if (cmdletContext.KeyModesOfUse_Decrypt != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Decrypt = cmdletContext.KeyModesOfUse_Decrypt.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Decrypt != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.Decrypt = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Decrypt.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_DeriveKey = null;
            if (cmdletContext.KeyModesOfUse_DeriveKey != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_DeriveKey = cmdletContext.KeyModesOfUse_DeriveKey.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_DeriveKey != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.DeriveKey = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_DeriveKey.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Encrypt = null;
            if (cmdletContext.KeyModesOfUse_Encrypt != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Encrypt = cmdletContext.KeyModesOfUse_Encrypt.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Encrypt != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.Encrypt = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Encrypt.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Generate = null;
            if (cmdletContext.KeyModesOfUse_Generate != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Generate = cmdletContext.KeyModesOfUse_Generate.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Generate != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.Generate = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Generate.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_NoRestriction = null;
            if (cmdletContext.KeyModesOfUse_NoRestriction != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_NoRestriction = cmdletContext.KeyModesOfUse_NoRestriction.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_NoRestriction != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.NoRestrictions = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_NoRestriction.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Sign = null;
            if (cmdletContext.KeyModesOfUse_Sign != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Sign = cmdletContext.KeyModesOfUse_Sign.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Sign != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.Sign = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Sign.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Unwrap = null;
            if (cmdletContext.KeyModesOfUse_Unwrap != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Unwrap = cmdletContext.KeyModesOfUse_Unwrap.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Unwrap != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.Unwrap = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Unwrap.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Verify = null;
            if (cmdletContext.KeyModesOfUse_Verify != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Verify = cmdletContext.KeyModesOfUse_Verify.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Verify != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.Verify = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Verify.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Wrap = null;
            if (cmdletContext.KeyModesOfUse_Wrap != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Wrap = cmdletContext.KeyModesOfUse_Wrap.Value;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Wrap != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse.Wrap = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse_keyModesOfUse_Wrap.Value;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse should be set to null
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUseIsNull)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse = null;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes.KeyModesOfUse = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_keyMaterial_TrustedCertificatePublicKey_KeyAttributes_KeyModesOfUse;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributesIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes should be set to null
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributesIsNull)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes = null;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes != null)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey.KeyAttributes = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey_keyMaterial_TrustedCertificatePublicKey_KeyAttributes;
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKeyIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey should be set to null
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKeyIsNull)
            {
                requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey = null;
            }
            if (requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey != null)
            {
                request.KeyMaterial.TrustedCertificatePublicKey = requestKeyMaterial_keyMaterial_TrustedCertificatePublicKey;
                requestKeyMaterialIsNull = false;
            }
            Amazon.PaymentCryptography.Model.ImportKeyCryptogram requestKeyMaterial_keyMaterial_KeyCryptogram = null;
            
             // populate KeyCryptogram
            var requestKeyMaterial_keyMaterial_KeyCryptogramIsNull = true;
            requestKeyMaterial_keyMaterial_KeyCryptogram = new Amazon.PaymentCryptography.Model.ImportKeyCryptogram();
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_Exportable = null;
            if (cmdletContext.KeyCryptogram_Exportable != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_Exportable = cmdletContext.KeyCryptogram_Exportable.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_Exportable != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram.Exportable = requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_Exportable.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogramIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_ImportToken = null;
            if (cmdletContext.KeyCryptogram_ImportToken != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_ImportToken = cmdletContext.KeyCryptogram_ImportToken;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_ImportToken != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram.ImportToken = requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_ImportToken;
                requestKeyMaterial_keyMaterial_KeyCryptogramIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_WrappedKeyCryptogram = null;
            if (cmdletContext.KeyCryptogram_WrappedKeyCryptogram != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_WrappedKeyCryptogram = cmdletContext.KeyCryptogram_WrappedKeyCryptogram;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_WrappedKeyCryptogram != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram.WrappedKeyCryptogram = requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_WrappedKeyCryptogram;
                requestKeyMaterial_keyMaterial_KeyCryptogramIsNull = false;
            }
            Amazon.PaymentCryptography.WrappingKeySpec requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_WrappingSpec = null;
            if (cmdletContext.KeyCryptogram_WrappingSpec != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_WrappingSpec = cmdletContext.KeyCryptogram_WrappingSpec;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_WrappingSpec != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram.WrappingSpec = requestKeyMaterial_keyMaterial_KeyCryptogram_keyCryptogram_WrappingSpec;
                requestKeyMaterial_keyMaterial_KeyCryptogramIsNull = false;
            }
            Amazon.PaymentCryptography.Model.KeyAttributes requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes = null;
            
             // populate KeyAttributes
            var requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributesIsNull = true;
            requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes = new Amazon.PaymentCryptography.Model.KeyAttributes();
            Amazon.PaymentCryptography.KeyAlgorithm requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyAlgorithm = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyAlgorithm = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyAlgorithm;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes.KeyAlgorithm = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyAlgorithm;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.KeyClass requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyClass = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyClass != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyClass = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyClass;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyClass != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes.KeyClass = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyClass;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.KeyUsage requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyUsage = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyUsage != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyUsage = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyUsage;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyUsage != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes.KeyUsage = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyUsage;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributesIsNull = false;
            }
            Amazon.PaymentCryptography.Model.KeyModesOfUse requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse = null;
            
             // populate KeyModesOfUse
            var requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = true;
            requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse = new Amazon.PaymentCryptography.Model.KeyModesOfUse();
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Decrypt = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Decrypt != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Decrypt = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Decrypt.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Decrypt != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.Decrypt = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Decrypt.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_DeriveKey = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_DeriveKey != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_DeriveKey = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_DeriveKey.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_DeriveKey != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.DeriveKey = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_DeriveKey.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Encrypt = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Encrypt != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Encrypt = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Encrypt.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Encrypt != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.Encrypt = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Encrypt.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Generate = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Generate != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Generate = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Generate.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Generate != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.Generate = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Generate.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_NoRestrictions = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_NoRestrictions != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_NoRestrictions = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_NoRestrictions.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_NoRestrictions != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.NoRestrictions = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_NoRestrictions.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Sign = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Sign != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Sign = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Sign.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Sign != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.Sign = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Sign.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Unwrap = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Unwrap != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Unwrap = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Unwrap.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Unwrap != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.Unwrap = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Unwrap.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Verify = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Verify != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Verify = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Verify.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Verify != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.Verify = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Verify.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
            System.Boolean? requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Wrap = null;
            if (cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Wrap != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Wrap = cmdletContext.KeyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Wrap.Value;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Wrap != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse.Wrap = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse_Wrap.Value;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse should be set to null
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUseIsNull)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse = null;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes.KeyModesOfUse = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes_keyMaterial_KeyCryptogram_KeyAttributes_KeyModesOfUse;
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributesIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes should be set to null
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributesIsNull)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes = null;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes != null)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram.KeyAttributes = requestKeyMaterial_keyMaterial_KeyCryptogram_keyMaterial_KeyCryptogram_KeyAttributes;
                requestKeyMaterial_keyMaterial_KeyCryptogramIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_KeyCryptogram should be set to null
            if (requestKeyMaterial_keyMaterial_KeyCryptogramIsNull)
            {
                requestKeyMaterial_keyMaterial_KeyCryptogram = null;
            }
            if (requestKeyMaterial_keyMaterial_KeyCryptogram != null)
            {
                request.KeyMaterial.KeyCryptogram = requestKeyMaterial_keyMaterial_KeyCryptogram;
                requestKeyMaterialIsNull = false;
            }
            Amazon.PaymentCryptography.Model.ImportTr34KeyBlock requestKeyMaterial_keyMaterial_Tr34KeyBlock = null;
            
             // populate Tr34KeyBlock
            var requestKeyMaterial_keyMaterial_Tr34KeyBlockIsNull = true;
            requestKeyMaterial_keyMaterial_Tr34KeyBlock = new Amazon.PaymentCryptography.Model.ImportTr34KeyBlock();
            System.String requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_CertificateAuthorityPublicKeyIdentifier = null;
            if (cmdletContext.Tr34KeyBlock_CertificateAuthorityPublicKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_CertificateAuthorityPublicKeyIdentifier = cmdletContext.Tr34KeyBlock_CertificateAuthorityPublicKeyIdentifier;
            }
            if (requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_CertificateAuthorityPublicKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock.CertificateAuthorityPublicKeyIdentifier = requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_CertificateAuthorityPublicKeyIdentifier;
                requestKeyMaterial_keyMaterial_Tr34KeyBlockIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_ImportToken = null;
            if (cmdletContext.Tr34KeyBlock_ImportToken != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_ImportToken = cmdletContext.Tr34KeyBlock_ImportToken;
            }
            if (requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_ImportToken != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock.ImportToken = requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_ImportToken;
                requestKeyMaterial_keyMaterial_Tr34KeyBlockIsNull = false;
            }
            Amazon.PaymentCryptography.Tr34KeyBlockFormat requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_KeyBlockFormat = null;
            if (cmdletContext.Tr34KeyBlock_KeyBlockFormat != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_KeyBlockFormat = cmdletContext.Tr34KeyBlock_KeyBlockFormat;
            }
            if (requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_KeyBlockFormat != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock.KeyBlockFormat = requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_KeyBlockFormat;
                requestKeyMaterial_keyMaterial_Tr34KeyBlockIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_RandomNonce = null;
            if (cmdletContext.Tr34KeyBlock_RandomNonce != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_RandomNonce = cmdletContext.Tr34KeyBlock_RandomNonce;
            }
            if (requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_RandomNonce != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock.RandomNonce = requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_RandomNonce;
                requestKeyMaterial_keyMaterial_Tr34KeyBlockIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_SigningKeyCertificate = null;
            if (cmdletContext.Tr34KeyBlock_SigningKeyCertificate != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_SigningKeyCertificate = cmdletContext.Tr34KeyBlock_SigningKeyCertificate;
            }
            if (requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_SigningKeyCertificate != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock.SigningKeyCertificate = requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_SigningKeyCertificate;
                requestKeyMaterial_keyMaterial_Tr34KeyBlockIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_WrappedKeyBlock = null;
            if (cmdletContext.Tr34KeyBlock_WrappedKeyBlock != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_WrappedKeyBlock = cmdletContext.Tr34KeyBlock_WrappedKeyBlock;
            }
            if (requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_WrappedKeyBlock != null)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock.WrappedKeyBlock = requestKeyMaterial_keyMaterial_Tr34KeyBlock_tr34KeyBlock_WrappedKeyBlock;
                requestKeyMaterial_keyMaterial_Tr34KeyBlockIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_Tr34KeyBlock should be set to null
            if (requestKeyMaterial_keyMaterial_Tr34KeyBlockIsNull)
            {
                requestKeyMaterial_keyMaterial_Tr34KeyBlock = null;
            }
            if (requestKeyMaterial_keyMaterial_Tr34KeyBlock != null)
            {
                request.KeyMaterial.Tr34KeyBlock = requestKeyMaterial_keyMaterial_Tr34KeyBlock;
                requestKeyMaterialIsNull = false;
            }
            Amazon.PaymentCryptography.Model.ImportDiffieHellmanTr31KeyBlock requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock = null;
            
             // populate DiffieHellmanTr31KeyBlock
            var requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = true;
            requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock = new Amazon.PaymentCryptography.Model.ImportDiffieHellmanTr31KeyBlock();
            System.String requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_CertificateAuthorityPublicKeyIdentifier = null;
            if (cmdletContext.DiffieHellmanTr31KeyBlock_CertificateAuthorityPublicKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_CertificateAuthorityPublicKeyIdentifier = cmdletContext.DiffieHellmanTr31KeyBlock_CertificateAuthorityPublicKeyIdentifier;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_CertificateAuthorityPublicKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock.CertificateAuthorityPublicKeyIdentifier = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_CertificateAuthorityPublicKeyIdentifier;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = false;
            }
            Amazon.PaymentCryptography.SymmetricKeyAlgorithm requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_DeriveKeyAlgorithm = null;
            if (cmdletContext.DiffieHellmanTr31KeyBlock_DeriveKeyAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_DeriveKeyAlgorithm = cmdletContext.DiffieHellmanTr31KeyBlock_DeriveKeyAlgorithm;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_DeriveKeyAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock.DeriveKeyAlgorithm = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_DeriveKeyAlgorithm;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = false;
            }
            Amazon.PaymentCryptography.KeyDerivationFunction requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_KeyDerivationFunction = null;
            if (cmdletContext.DiffieHellmanTr31KeyBlock_KeyDerivationFunction != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_KeyDerivationFunction = cmdletContext.DiffieHellmanTr31KeyBlock_KeyDerivationFunction;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_KeyDerivationFunction != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock.KeyDerivationFunction = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_KeyDerivationFunction;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = false;
            }
            Amazon.PaymentCryptography.KeyDerivationHashAlgorithm requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_KeyDerivationHashAlgorithm = null;
            if (cmdletContext.DiffieHellmanTr31KeyBlock_KeyDerivationHashAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_KeyDerivationHashAlgorithm = cmdletContext.DiffieHellmanTr31KeyBlock_KeyDerivationHashAlgorithm;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_KeyDerivationHashAlgorithm != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock.KeyDerivationHashAlgorithm = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_KeyDerivationHashAlgorithm;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_PrivateKeyIdentifier = null;
            if (cmdletContext.DiffieHellmanTr31KeyBlock_PrivateKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_PrivateKeyIdentifier = cmdletContext.DiffieHellmanTr31KeyBlock_PrivateKeyIdentifier;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_PrivateKeyIdentifier != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock.PrivateKeyIdentifier = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_PrivateKeyIdentifier;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_PublicKeyCertificate = null;
            if (cmdletContext.DiffieHellmanTr31KeyBlock_PublicKeyCertificate != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_PublicKeyCertificate = cmdletContext.DiffieHellmanTr31KeyBlock_PublicKeyCertificate;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_PublicKeyCertificate != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock.PublicKeyCertificate = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_PublicKeyCertificate;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = false;
            }
            System.String requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_WrappedKeyBlock = null;
            if (cmdletContext.DiffieHellmanTr31KeyBlock_WrappedKeyBlock != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_WrappedKeyBlock = cmdletContext.DiffieHellmanTr31KeyBlock_WrappedKeyBlock;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_WrappedKeyBlock != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock.WrappedKeyBlock = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_diffieHellmanTr31KeyBlock_WrappedKeyBlock;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = false;
            }
            Amazon.PaymentCryptography.Model.DiffieHellmanDerivationData requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData = null;
            
             // populate DerivationData
            var requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationDataIsNull = true;
            requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData = new Amazon.PaymentCryptography.Model.DiffieHellmanDerivationData();
            System.String requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData_derivationData_SharedInformation = null;
            if (cmdletContext.DerivationData_SharedInformation != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData_derivationData_SharedInformation = cmdletContext.DerivationData_SharedInformation;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData_derivationData_SharedInformation != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData.SharedInformation = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData_derivationData_SharedInformation;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationDataIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData should be set to null
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationDataIsNull)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData = null;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData != null)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock.DerivationData = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock_keyMaterial_DiffieHellmanTr31KeyBlock_DerivationData;
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull = false;
            }
             // determine if requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock should be set to null
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlockIsNull)
            {
                requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock = null;
            }
            if (requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock != null)
            {
                request.KeyMaterial.DiffieHellmanTr31KeyBlock = requestKeyMaterial_keyMaterial_DiffieHellmanTr31KeyBlock;
                requestKeyMaterialIsNull = false;
            }
             // determine if request.KeyMaterial should be set to null
            if (requestKeyMaterialIsNull)
            {
                request.KeyMaterial = null;
            }
            if (cmdletContext.Tag != null)
            {
                request.Tags = cmdletContext.Tag;
            }
            
            CmdletOutput output;
            
            // issue call
            var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
            try
            {
                var response = CallAWSServiceOperation(client, request);
                object pipelineOutput = null;
                pipelineOutput = cmdletContext.Select(response, this);
                output = new CmdletOutput
                {
                    PipelineOutput = pipelineOutput,
                    ServiceResponse = response
                };
            }
            catch (Exception e)
            {
                output = new CmdletOutput { ErrorResponse = e };
            }
            
            return output;
        }