public AppEncryptionJsonMultiThreadedTest()
 {
     payload = PayloadGenerator.CreateDefaultRandomJsonPayload();
     appEncryptionSessionFactory = SessionFactoryGenerator.CreateDefaultAppEncryptionSessionFactory();
     partitionId       = DefaultPartitionId + "_" + DateTimeUtils.GetCurrentTimeAsUtcIsoDateTimeOffset();
     appEncryptionJson = appEncryptionSessionFactory.GetAppEncryptionJson(partitionId);
 }
        private void TestRegionSuffix()
        {
            byte[] originalPayload = PayloadGenerator.CreateDefaultRandomBytePayload();
            byte[] decryptedBytes;
            byte[] dataRowRecordBytes;

            // Encrypt originalPayloadString with metastore with key suffix
            using (SessionFactory sessionFactory = SessionFactoryGenerator
                                                   .CreateDefaultSessionFactory(configFixture.KeyManagementService, dynamoDbMetastoreImplWithKeySuffix))
            {
                using (Session <byte[], byte[]> sessionBytes = sessionFactory.GetSessionBytes("shopper123"))
                {
                    dataRowRecordBytes = sessionBytes.Encrypt(originalPayload);
                }
            }

            // Decrypt dataRowString with metastore with key suffix
            using (SessionFactory sessionFactory = SessionFactoryGenerator
                                                   .CreateDefaultSessionFactory(configFixture.KeyManagementService, dynamoDbMetastoreImplWithKeySuffix))
            {
                using (Session <byte[], byte[]> sessionBytes = sessionFactory.GetSessionBytes("shopper123"))
                {
                    // Decrypt the payload
                    decryptedBytes = sessionBytes.Decrypt(dataRowRecordBytes);
                }
            }

            // Verify that we were able to decrypt with a suffixed builder
            Assert.Equal(decryptedBytes, originalPayload);
        }
示例#3
0
 public AppEncryptionBytesTest()
 {
     payload = PayloadGenerator.CreateDefaultRandomBytePayload();
     appEncryptionSessionFactory = SessionFactoryGenerator.CreateDefaultAppEncryptionSessionFactory();
     partitionId        = DefaultPartitionId + "_" + DateTimeUtils.GetCurrentTimeAsUtcIsoDateTimeOffset();
     appEncryptionBytes = appEncryptionSessionFactory.GetAppEncryptionBytes(partitionId);
 }
示例#4
0
 public SessionByteMultiThreadedTest(ConfigFixture configFixture)
 {
     payload        = PayloadGenerator.CreateDefaultRandomBytePayload();
     sessionFactory = SessionFactoryGenerator.CreateDefaultSessionFactory(
         configFixture.KeyManagementService,
         configFixture.Metastore);
     partitionId  = DefaultPartitionId + "_" + DateTimeUtils.GetCurrentTimeAsUtcIsoDateTimeOffset();
     sessionBytes = sessionFactory.GetSessionBytes(partitionId);
 }
 public AppEncryptionJsonMultiThreadedTest(ConfigFixture configFixture)
 {
     payload = PayloadGenerator.CreateDefaultRandomJsonPayload();
     appEncryptionSessionFactory = SessionFactoryGenerator.CreateDefaultAppEncryptionSessionFactory(
         configFixture.KeyManagementService,
         configFixture.MetastorePersistence);
     partitionId       = DefaultPartitionId + "_" + DateTimeUtils.GetCurrentTimeAsUtcIsoDateTimeOffset();
     appEncryptionJson = appEncryptionSessionFactory.GetAppEncryptionJson(partitionId);
 }
        private SessionFactory GetSessionFactory(bool withKeySuffix, string region)
        {
            DynamoDbMetastoreImpl.IBuildStep builder = DynamoDbMetastoreImpl.NewBuilder(region)
                                                       .WithEndPointConfiguration($"http://{hostName}:{DynamoDbPort}", DefaultRegion);

            if (withKeySuffix)
            {
                builder = builder.WithKeySuffix();
            }

            DynamoDbMetastoreImpl dynamoDbMetastore = builder.Build();

            return(SessionFactoryGenerator.CreateDefaultSessionFactory(configFixture.KeyManagementService, dynamoDbMetastore));
        }
示例#7
0
        private void RunPartitionTest(int testIterations, string partitionId, int payloadSizeBytesBase)
        {
            try
            {
                using (SessionFactory sessionFactory =
                           SessionFactoryGenerator.CreateDefaultSessionFactory(
                               configFixture.KeyManagementService,
                               configFixture.Metastore))
                {
                    using (Session <JObject, byte[]> session = sessionFactory.GetSessionJson(partitionId))
                    {
                        Dictionary <string, byte[]> dataStore = new Dictionary <string, byte[]>();

                        string partitionPart = $"partition-{partitionId}-";

                        for (int i = 0; i < testIterations; i++)
                        {
                            // Note the size will be slightly larger since we're adding extra unique meta
                            JObject jObject = PayloadGenerator.CreateRandomJsonPayload(payloadSizeBytesBase);
                            string  keyPart = $"iteration-{i}";
                            jObject["payload"] = partitionPart + keyPart;

                            dataStore.Add(keyPart, session.Encrypt(jObject));
                        }

                        foreach (KeyValuePair <string, byte[]> keyValuePair in dataStore)
                        {
                            JObject decryptedObject = session.Decrypt(keyValuePair.Value);
                            Assert.Equal(partitionPart + keyValuePair.Key, decryptedObject["payload"].ToObject <string>());
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e, "Unexpected error during call");
                throw;
            }
        }
        private void TestCrossPartitionDecryptShouldFail()
        {
            byte[] payload = PayloadGenerator.CreateDefaultRandomBytePayload();
            byte[] dataRowRecordBytes;

            string originalPartitionId  = "shopper123";
            string alternatePartitionId = "shopper1234";

            using (SessionFactory sessionFactory =
                       SessionFactoryGenerator.CreateDefaultSessionFactory(
                           configFixture.KeyManagementService,
                           configFixture.Metastore))
            {
                using (Session <byte[], byte[]> sessionBytes = sessionFactory.GetSessionBytes(originalPartitionId))
                {
                    dataRowRecordBytes = sessionBytes.Encrypt(payload);
                }

                using (Session <byte[], byte[]> sessionBytes = sessionFactory.GetSessionBytes(alternatePartitionId))
                {
                    Assert.Throws <MetadataMissingException>(() => sessionBytes.Decrypt(dataRowRecordBytes));
                }
            }
        }
示例#9
0
 public MultiPartitionMultiThreadedTest(ConfigFixture configFixture)
 {
     appEncryptionSessionFactory = SessionFactoryGenerator.CreateDefaultAppEncryptionSessionFactory(
         configFixture.KeyManagementService,
         configFixture.MetastorePersistence);
 }
示例#10
0
 public MultiPartitionMultiThreadedTest()
 {
     appEncryptionSessionFactory = SessionFactoryGenerator.CreateDefaultAppEncryptionSessionFactory();
 }
 public MultiPartitionMultiThreadedTest(ConfigFixture configFixture)
 {
     sessionFactory = SessionFactoryGenerator.CreateDefaultSessionFactory(
         configFixture.KeyManagementService,
         configFixture.Metastore);
 }