public static void Run(AddClientCertArgs args, Func <ILogger> getLogger)
        {
            args.Validate();
            var settings = RunnerHelper.GetSettings(args.Configfile);
            var clientCertificateProvider = new ClientCertificateProvider(settings);

            var item = clientCertificateProvider.GetClientCertificate(args.PackageSource);

            if (item != null)
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
                                                          Strings.Error_ClientCertificateAlreadyExist,
                                                          args.PackageSource));
            }

            if (args.IsFileCertSettingsProvided())
            {
                item = new FileClientCertItem(args.PackageSource,
                                              args.Path,
                                              args.Password,
                                              args.StorePasswordInClearText,
                                              args.Configfile);
            }
            else if (args.IsStoreCertSettingsProvided())
            {
                item = new StoreClientCertItem(args.PackageSource,
                                               args.FindValue,
                                               args.GetStoreLocation(),
                                               args.GetStoreName(),
                                               args.GetFindBy());
            }
            else
            {
                throw new CommandLineArgumentCombinationException(string.Format(CultureInfo.CurrentCulture,
                                                                                Strings.Error_UnknownClientCertificateStoreType));
            }

            try
            {
                var certificates = item.Search();
                if (!certificates.Any())
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.Error_ClientCertificatesNotFound));
                }
            }
            catch
            {
                if (!args.Force)
                {
                    throw;
                }
            }


            clientCertificateProvider.AddOrUpdate(item);

            getLogger().LogInformation(string.Format(CultureInfo.CurrentCulture, Strings.ClientCertificateSuccessfullyAdded, args.PackageSource));
        }
Пример #2
0
            public void SetupInitialItems(params ClientCertItem[] initialItems)
            {
                var settings = LoadSettingsFromConfigFile();
                var clientCertificateProvider = new ClientCertificateProvider(settings);

                foreach (ClientCertItem item in initialItems)
                {
                    clientCertificateProvider.AddOrUpdate(item);
                }

                settings.SaveToDisk();
            }
        public void CertificateFromFile_Success_ParsedAndAddedToAssociatedPackageSource()
        {
            using (var testInfo = new TestInfo())
            {
                // Arrange
                testInfo.SetupCertificateFile();

                // Act
                var settings = testInfo.LoadSettingsFromConfigFile();
                var clientCertificateProvider = new ClientCertificateProvider(settings);
                clientCertificateProvider.AddOrUpdate(new FileClientCertItem(testInfo.PackageSourceName,
                                                                             testInfo.CertificateAbsoluteFilePath,
                                                                             testInfo.CertificatePassword,
                                                                             false,
                                                                             testInfo.ConfigFile));

                // Assert
                var packageSourceProvider = new PackageSourceProvider(settings);
                var packageSourceList     = packageSourceProvider.LoadPackageSources().ToList();
                Assert.Equal(1, packageSourceList.Count);
                Assert.Equal(1, packageSourceList[0].ClientCertificates.Count);
                Assert.Equal(testInfo.Certificate, packageSourceList[0].ClientCertificates[0]);
            }
        }
        public void CertificateFromStore_Success_ParsedAndAddedToAssociatedPackageSource()
        {
            using (var testInfo = new TestInfo())
            {
                // Arrange
                testInfo.SetupCertificateInStorage();

                // Act
                var settings = testInfo.LoadSettingsFromConfigFile();
                var clientCertificateProvider = new ClientCertificateProvider(settings);
                clientCertificateProvider.AddOrUpdate(new StoreClientCertItem(testInfo.PackageSourceName,
                                                                              testInfo.CertificateFindValue.ToString(),
                                                                              testInfo.CertificateStoreLocation,
                                                                              testInfo.CertificateStoreName,
                                                                              testInfo.CertificateFindBy));

                // Assert
                var packageSourceProvider = new PackageSourceProvider(settings);
                var packageSourceList     = packageSourceProvider.LoadPackageSources().ToList();
                Assert.Equal(1, packageSourceList.Count);
                Assert.Equal(1, packageSourceList[0].ClientCertificates.Count);
                Assert.Equal(testInfo.Certificate, packageSourceList[0].ClientCertificates[0]);
            }
        }
        public static void Run(UpdateClientCertArgs args, Func <ILogger> getLogger)
        {
            args.Validate();

            var settings = RunnerHelper.GetSettings(args.Configfile);
            var clientCertificateProvider = new ClientCertificateProvider(settings);

            var item = clientCertificateProvider.GetClientCertificate(args.PackageSource);

            if (item == null)
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
                                                          Strings.Error_ClientCertificateNotExist,
                                                          args.PackageSource));
            }

            switch (item)
            {
            case FileClientCertItem fileCertItem:
                if (args.IsStoreCertSettingsProvided())
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
                                                              Strings.Error_ClientCertificateTypeMismatch,
                                                              args.PackageSource));
                }

                fileCertItem.Update(args.Path, args.Password, args.StorePasswordInClearText);
                break;

            case StoreClientCertItem storeCertItem:
                if (args.IsFileCertSettingsProvided())
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
                                                              Strings.Error_ClientCertificateTypeMismatch,
                                                              args.PackageSource));
                }

                storeCertItem.Update(args.FindValue,
                                     args.GetStoreLocation(),
                                     args.GetStoreName(),
                                     args.GetFindBy());
                break;
            }

            try
            {
                var certificates = item.Search();
                if (!certificates.Any())
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.Error_ClientCertificatesNotFound));
                }
            }
            catch
            {
                if (!args.Force)
                {
                    throw;
                }
            }

            clientCertificateProvider.AddOrUpdate(item);

            getLogger().LogInformation(string.Format(CultureInfo.CurrentCulture, Strings.ClientCertificateSuccessfullyUpdated, args.PackageSource));
        }