///GENMHASH:507A92D4DCD93CE9595A78198DEBDFCF:5983BB56B6190FDBBCF28E6CF2A5422F
        public async Task <Microsoft.Azure.Management.KeyVault.Fluent.IKey> UpdateResourceAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            IKey key = this;

            if (createKeyRequest != null || importKeyRequest != null)
            {
                key = await CreateRawAsync(cancellationToken);
            }
            if (updateKeyRequest != null)
            {
                await vault.Client.UpdateKeyAsync(
                    Inner.KeyIdentifier.Identifier,
                    updateKeyRequest.KeyOperations.Select(ops => ops.Value).ToArray(),
                    updateKeyRequest.KeyAttributes,
                    updateKeyRequest.Tags,
                    cancellationToken);
            }
            await RefreshAsync(cancellationToken);

            createKeyRequest = null;
            importKeyRequest = null;
            updateKeyRequest = new UpdateKeyRequest
            {
                VaultBaseUrl = vault.VaultUri,
                KeyName      = Name
            };
            return(this);
        }
 ///GENMHASH:98060D1B7FD52C7724F36876E3AA8CC9:C3E882EB9B8E9BD6C5F7A74CD50D69D0
 internal KeyImpl(string name, KeyBundle innerObject, IVault vault)
     : base(name, innerObject)
 {
     this.vault       = vault;
     updateKeyRequest = new UpdateKeyRequest
     {
         VaultBaseUrl = vault.VaultUri,
         KeyName      = Name
     };
 }
        private async Task <Microsoft.Azure.Management.KeyVault.Fluent.IKey> CreateRawAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            if (createKeyRequest != null)
            {
                SetInner(await vault.Client.CreateKeyAsync(
                             createKeyRequest.VaultBaseUrl,
                             createKeyRequest.KeyName,
                             createKeyRequest.KeyType.Value,
                             createKeyRequest.KeySize,
                             createKeyRequest.KeyOperations.Select(ops => ops.Value).ToList(),
                             createKeyRequest.KeyAttributes,
                             createKeyRequest.Tags,
                             curve: null,
                             cancellationToken: cancellationToken));

                createKeyRequest = null;
                updateKeyRequest = new UpdateKeyRequest
                {
                    VaultBaseUrl = vault.VaultUri,
                    KeyName      = Name
                };
            }
            else
            {
                SetInner(await vault.Client.ImportKeyAsync(
                             importKeyRequest.VaultBaseUrl,
                             importKeyRequest.KeyName,
                             importKeyRequest.Key,
                             importKeyRequest.IsHsm,
                             importKeyRequest.KeyAttributes,
                             importKeyRequest.Tags,
                             cancellationToken));
                importKeyRequest = null;
                updateKeyRequest = new UpdateKeyRequest
                {
                    VaultBaseUrl = vault.VaultUri,
                    KeyName      = Name
                };
            }
            return(this);
        }