/**
  * Creating DiskEncryptionInfo for A2A encrypted Vm.
  */
 private DiskEncryptionInfo A2AEncryptionDetails()
 {
     // Checking if any encryption data is present then the only creating DiskEncryptionInfo.
     if (this.IsParameterBound(c => c.DiskEncryptionSecretUrl) ||
         this.IsParameterBound(c => c.DiskEncryptionVaultId) ||
         this.IsParameterBound(c => c.KeyEncryptionKeyUrl) ||
         this.IsParameterBound(c => c.KeyEncryptionVaultId))
     {
         DiskEncryptionInfo diskEncryptionInfo = new DiskEncryptionInfo();
         // BEK DATA is present
         if (this.IsParameterBound(c => c.DiskEncryptionSecretUrl) && this.IsParameterBound(c => c.DiskEncryptionVaultId))
         {
             diskEncryptionInfo.DiskEncryptionKeyInfo = new DiskEncryptionKeyInfo(this.DiskEncryptionSecretUrl, this.DiskEncryptionVaultId);
             // KEK Data is present in pair.
             if (this.IsParameterBound(c => c.KeyEncryptionKeyUrl) && this.IsParameterBound(c => c.KeyEncryptionVaultId))
             {
                 diskEncryptionInfo.KeyEncryptionKeyInfo = new KeyEncryptionKeyInfo(this.KeyEncryptionKeyUrl, this.KeyEncryptionVaultId);
             }
         }
         else
         {
             throw new Exception("Provide Disk DiskEncryptionSecretUrl and DiskEncryptionVaultId.");
         }
         return(diskEncryptionInfo);
     }
     return(null);
 }
Exemplo n.º 2
0
        /*
         * Creating DiskEncryptionInfo for A2A provider.
         */
        private DiskEncryptionInfo A2AEncryptionDetails(ReplicationProviderSpecificSettings provider)
        {
            // Checking if any encryption data is present then the only creating DiskEncryptionInfo.
            if (this.IsParameterBound(c => c.DiskEncryptionSecretUrl) ||
                this.IsParameterBound(c => c.DiskEncryptionVaultId) ||
                this.IsParameterBound(c => c.KeyEncryptionKeyUrl) ||
                this.IsParameterBound(c => c.KeyEncryptionVaultId))
            {
                // Non A2A scenario
                if (!(provider is A2AReplicationDetails))
                {
                    throw new Exception(
                              "DiskEncryptionSecretUrl,DiskEncryptionVaultId,KeyEncryptionKeyUrl,KeyEncryptionVaultId " +
                              "is used for updating Azure to Azure replication");
                }

                DiskEncryptionInfo diskEncryptionInfo = new DiskEncryptionInfo();
                // BEK DATA is present
                if (this.IsParameterBound(c => c.DiskEncryptionSecretUrl) && this.IsParameterBound(c => c.DiskEncryptionVaultId))
                {
                    diskEncryptionInfo.DiskEncryptionKeyInfo = new DiskEncryptionKeyInfo(this.DiskEncryptionSecretUrl, this.DiskEncryptionVaultId);
                    // KEK Data is present in pair.
                    if (this.IsParameterBound(c => c.KeyEncryptionKeyUrl) && this.IsParameterBound(c => c.KeyEncryptionVaultId))
                    {
                        diskEncryptionInfo.KeyEncryptionKeyInfo = new KeyEncryptionKeyInfo(this.KeyEncryptionKeyUrl, this.KeyEncryptionVaultId);
                    }
                }
                else
                {
                    throw new Exception("Provide Disk DiskEncryptionSecretUrl and DiskEncryptionVaultId.");
                }
                return(diskEncryptionInfo);
            }
            return(null);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creating DiskEncryptionInfo for A2A encrypted Vm.
        /// </summary>
        /// <param name="diskEncryptionSecretUrl">Secret identifier.</param>
        /// <param name="diskEncryptionVaultId">Secret KeyVault.</param>
        /// <param name="keyEncryptionKeyUrl">Key identifier.</param>
        /// <param name="keyEncryptionVaultId">Key KeyVault.</param>
        /// <returns>DiskEncryptionInfo object.</returns>
        public static DiskEncryptionInfo A2AEncryptionDetails(
            string diskEncryptionSecretUrl,
            string diskEncryptionVaultId,
            string keyEncryptionKeyUrl,
            string keyEncryptionVaultId)
        {
            DiskEncryptionInfo diskEncryptionInfo = null;

            if (!string.IsNullOrEmpty(diskEncryptionSecretUrl) &&
                !string.IsNullOrEmpty(diskEncryptionVaultId))
            {
                diskEncryptionInfo = new DiskEncryptionInfo
                {
                    DiskEncryptionKeyInfo =
                        new DiskEncryptionKeyInfo(diskEncryptionSecretUrl, diskEncryptionVaultId)
                };

                if (!string.IsNullOrEmpty(keyEncryptionKeyUrl) &&
                    !string.IsNullOrEmpty(keyEncryptionVaultId))
                {
                    diskEncryptionInfo.KeyEncryptionKeyInfo =
                        new KeyEncryptionKeyInfo(keyEncryptionKeyUrl, keyEncryptionVaultId);
                }
                else if (!string.IsNullOrEmpty(keyEncryptionKeyUrl) ||
                         !string.IsNullOrEmpty(keyEncryptionVaultId))
                {
                    throw new Exception("Provide both keyEncryptionKeyUrl and keyEncryptionVaultId.");
                }
            }
            else if (!string.IsNullOrEmpty(diskEncryptionSecretUrl) ||
                     !string.IsNullOrEmpty(diskEncryptionVaultId))
            {
                throw new Exception("Provide both diskEncryptionSecretUrl and diskEncryptionVaultId.");
            }

            return(diskEncryptionInfo);
        }