public void Ctor_MissingLogger()
        {
            var services = new ServiceCollection();
            var options  = new CertificateEncryptionOptions(TestCertificate.GetCertificate());

            services.AddSingleton(options);
            var provider = services.BuildServiceProvider();

            Assert.Throws <InvalidOperationException>(() => new CertificateXmlDecryptor(provider));
        }
        private static CertificateXmlEncryptor CreateEncryptor()
        {
            var logger   = Mock.Of <ILogger <CertificateXmlEncryptor> >();
            var options  = new CertificateEncryptionOptions(TestCertificate.GetCertificate());
            var services = new ServiceCollection();

            services.AddSingleton <ILogger <CertificateXmlEncryptor> >(logger);
            services.AddSingleton(options);
            var provider = services.BuildServiceProvider();

            return(new CertificateXmlEncryptor(provider));
        }
        public void ProtectKeysWithProvidedCertificate_RegistersServices()
        {
            var builder     = new DataProtectionBuilder(new ServiceCollection());
            var certificate = TestCertificate.GetCertificate();

            builder.ProtectKeysWithProvidedCertificate(certificate);

            Assert.Equal(1, builder.Services.Where(s => s.ServiceType == typeof(CertificateEncryptionOptions)).Count());
            Assert.Same(certificate, ((CertificateEncryptionOptions)builder.Services.First(s => s.ServiceType == typeof(CertificateEncryptionOptions)).ImplementationInstance).Certificate);
            Assert.Equal(1, builder.Services.Where(s => s.ServiceType == typeof(IXmlEncryptor)).Count());
            Assert.Equal(typeof(CertificateXmlEncryptor), builder.Services.First(s => s.ServiceType == typeof(IXmlEncryptor)).ImplementationType);
            Assert.Equal(1, builder.Services.Where(s => s.ServiceType == typeof(IXmlDecryptor)).Count());
            Assert.Equal(typeof(CertificateXmlDecryptor), builder.Services.First(s => s.ServiceType == typeof(IXmlDecryptor)).ImplementationType);
        }
        public void ProtectKeysWithProvidedCertificate_SetsOptions()
        {
            var certificate = TestCertificate.GetCertificate();
            var services    = new ServiceCollection();

            services
            .AddLogging()
            .AddDataProtection()
            .ProtectKeysWithProvidedCertificate(certificate);

            var provider = services.BuildServiceProvider();
            var options  = provider.GetRequiredService <IOptions <KeyManagementOptions> >();

            Assert.IsType <CertificateXmlEncryptor>(options.Value.XmlEncryptor);
        }
        public void ProtectKeysWithProvidedCertificate_PreparesDecryptor()
        {
            var certificate = TestCertificate.GetCertificate();
            var services    = new ServiceCollection();

            services
            .AddLogging()
            .AddDataProtection()
            .ProtectKeysWithProvidedCertificate(certificate);

            var provider = services.BuildServiceProvider();

            // Shouldn't throw.
            var decryptor = new CertificateXmlDecryptor(provider);
        }
 public void ProtectKeysWithProvidedCertificate_NullBuilder()
 {
     Assert.Throws <ArgumentNullException>(() => DataProtectionBuilderExtensions.ProtectKeysWithProvidedCertificate(null, TestCertificate.GetCertificate()));
 }