Ejemplo n.º 1
0
        public KmsXmlEncryptorTests()
        {
            repository    = new MockRepository(MockBehavior.Strict);
            kmsClient     = repository.Create <IAmazonKeyManagementService>();
            encryptConfig = repository.Create <IKmsXmlEncryptorConfig>();

            encryptor = new KmsXmlEncryptor(kmsClient.Object, encryptConfig.Object);
        }
        public KmsXmlEncryptorTests()
        {
            repository    = new MockRepository(MockBehavior.Strict);
            kmsClient     = repository.Create <IAmazonKeyManagementService>();
            encryptConfig = repository.Create <IOptions <KmsXmlEncryptorConfig> >();
            dpOptions     = repository.Create <IOptions <DataProtectionOptions> >();

            encryptor = new KmsXmlEncryptor(kmsClient.Object, encryptConfig.Object, dpOptions.Object);
        }
        public void ExpectValidationOfConfigToThrow()
        {
            var configObject = new KmsXmlEncryptorConfig();

            encryptConfig.Setup(x => x.Value).Returns(configObject);

            var altRepo = new KmsXmlEncryptor(kmsClient.Object, encryptConfig.Object, dpOptions.Object);

            Assert.Throws <ArgumentException>(() => altRepo.ValidateConfig());
        }
        public void Roundtrip(int dataSize)
        {
            var key       = new CryptoKeyName("projectId", "locationId", "keyRingId", Guid.NewGuid().ToString());
            var client    = new FakeKmsClient();
            var encryptor = new KmsXmlEncryptor(client, key);
            var decryptor = new KmsXmlDecryptor(client);
            var plain     = new XElement("Original", new string ('x', dataSize));
            var encrypted = encryptor.Encrypt(plain);

            Assert.DoesNotContain("Plaintext value", encrypted.EncryptedElement.ToString());
            var decrypted = decryptor.Decrypt(encrypted.EncryptedElement);

            Assert.Equal(plain.ToString(), decrypted.ToString());
        }
        public KmsIntegrationTests()
        {
            // Expectation that local SDK has been configured correctly, whether via VS Tools or user config files
            kmsClient = new AmazonKeyManagementServiceClient(RegionEndpoint.EUWest1);
            var encryptConfig = new KmsXmlEncryptorConfig(ApplicationName, KmsTestingKey);

            var svcCollection = new ServiceCollection();

            svcCollection.AddSingleton <IKmsXmlEncryptorConfig>(sp => encryptConfig);
            svcCollection.AddSingleton(sp => kmsClient);
            var svcProvider = svcCollection.BuildServiceProvider();

            encryptor = new KmsXmlEncryptor(kmsClient, encryptConfig, svcProvider);

            decryptor = new KmsXmlDecryptor(svcProvider);
        }
        public void EncryptFormat()
        {
            var key       = new CryptoKeyName("projectId", "locationId", "keyRingId", Guid.NewGuid().ToString());
            var encryptor = new KmsXmlEncryptor(new FakeKmsClient(), key);
            var plain     = new XElement("Original", "Plaintext value");
            var encrypted = encryptor.Encrypt(plain);

            Assert.Equal(typeof(KmsXmlDecryptor), encrypted.DecryptorType);
            var element = encrypted.EncryptedElement;

            Assert.Equal(KmsXmlConstants.EncryptedElement, element.Name);
            Assert.Equal(key.ToString(), element.Attribute(KmsXmlConstants.KmsKeyNameAttribute).Value);
            // Validate that the key data contains valid base64 data
            Convert.FromBase64String(element.Attribute(KmsXmlConstants.LocalKeyDataAttribute).Value);
            // Validate that the payload contains valid base64 data.
            Convert.FromBase64String(element.Element(KmsXmlConstants.PayloadElement).Value);
        }
        public KmsIntegrationTests()
        {
            // Expectation that local SDK has been configured correctly, whether via VS Tools or user config files
            kmsClient = new AmazonKeyManagementServiceClient(RegionEndpoint.EUWest1);
            var encryptConfig = new KmsXmlEncryptorConfig(KmsTestingKey);

            dpOptions = new DataProtectionOptions {
                ApplicationDiscriminator = ApplicationName
            };
            var encryptSnapshot = new DirectOptions <KmsXmlEncryptorConfig>(encryptConfig);
            var dpSnapshot      = new DirectOptions <DataProtectionOptions>(dpOptions);

            var svcCollection = new ServiceCollection();

            svcCollection.AddSingleton <IOptions <KmsXmlEncryptorConfig> >(sp => encryptSnapshot);
            svcCollection.AddSingleton <IOptions <DataProtectionOptions> >(sp => dpSnapshot);
            svcCollection.AddSingleton(sp => kmsClient);
            svcProvider = svcCollection.BuildServiceProvider();

            encryptor = new KmsXmlEncryptor(kmsClient, encryptSnapshot, dpSnapshot);

            decryptor = new KmsXmlDecryptor(svcProvider);
        }