internal static KeyVaultCertificateIssuer FromIssuer(IssuerBundle issuer)
        {
            if (issuer == null)
            {
                return null;
            }

            var kvcIssuer = new KeyVaultCertificateIssuer
            {
                Name = issuer.IssuerIdentifier.Name,
                IssuerProvider = issuer.Provider,
                OrganizationDetails = KeyVaultCertificateOrganizationDetails.FromOrganizationalDetails(issuer.OrganizationDetails),
            };

            if (issuer.Credentials != null)
            {
                kvcIssuer.AccountId = issuer.Credentials.AccountId;
                kvcIssuer.ApiKey = issuer.Credentials.Password == null ? null : issuer.Credentials.Password.ConvertToSecureString();
            }

            return kvcIssuer;
        }
        internal static KeyVaultCertificateIssuer FromIssuer(IssuerBundle issuer)
        {
            if (issuer == null)
            {
                return(null);
            }

            var kvcIssuer = new KeyVaultCertificateIssuer
            {
                Name                = issuer.IssuerIdentifier.Name,
                IssuerProvider      = issuer.Provider,
                OrganizationDetails = KeyVaultCertificateOrganizationDetails.FromOrganizationalDetails(issuer.OrganizationDetails),
            };

            if (issuer.Credentials != null)
            {
                kvcIssuer.AccountId = issuer.Credentials.AccountId;
                kvcIssuer.ApiKey    = issuer.Credentials.Password == null ? null : issuer.Credentials.Password.ConvertToSecureString();
            }

            return(kvcIssuer);
        }
        protected override void ProcessRecord()
        {
            if (ShouldProcess(Name, Properties.Resources.SetCertificateIssuer))
            {
                KeyVaultCertificateIssuer issuerToUse;

                switch (ParameterSetName)
                {
                    case ExpandedParameterSet:

                        issuerToUse = new KeyVaultCertificateIssuer
                        {
                            Name = Name,
                            IssuerProvider = IssuerProvider,
                            AccountId = AccountId,
                            ApiKey = ApiKey,
                            OrganizationDetails = OrganizationDetails,
                        };

                        break;

                    case ByValueParameterSet:
                        issuerToUse = Issuer;
                        break;

                    default:
                        throw new ArgumentException(PSKeyVaultProperties.Resources.BadParameterSetName);
                }

                var resultantIssuer = this.DataServiceClient.SetCertificateIssuer(
                                            VaultName,
                                            Name,
                                            issuerToUse.IssuerProvider,
                                            issuerToUse.AccountId,
                                            issuerToUse.ApiKey,
                                            issuerToUse.OrganizationDetails);

                if (PassThru.IsPresent)
                {
                    this.WriteObject(KeyVaultCertificateIssuer.FromIssuer(resultantIssuer));
                }
            }
        }