Пример #1
0
        private void RunEncryptDecryptTest(int testIterations, string partitionId, int payloadSizeBytesBase)
        {
            try
            {
                using (AppEncryption <JObject, byte[]> partition =
                           appEncryptionSessionFactory.GetAppEncryptionJson(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 jsonObject = PayloadGenerator.CreateRandomJsonPayload(payloadSizeBytesBase);
                        string  keyPart    = $"iteration-{i}";
                        jsonObject.Add("payload", partitionPart + keyPart);

                        dataStore.Add(keyPart, partition.Encrypt(jsonObject));
                    }

                    foreach (KeyValuePair <string, byte[]> keyValuePair in dataStore)
                    {
                        JObject decryptedObject = partition.Decrypt(keyValuePair.Value);
                        Assert.Equal(partitionPart + keyValuePair.Key, decryptedObject.GetValue("payload").ToObject <string>());
                    }
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e, "unexpected error during call");
                throw;
            }
        }
Пример #2
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;
            }
        }
Пример #3
0
        private void RunLoadStoreTest(int testIterations, string partitionId, int payloadSizeBytesBase)
        {
            try
            {
                using (AppEncryption <JObject, byte[]> partition =
                           appEncryptionSessionFactory.GetAppEncryptionJson(partitionId))
                {
                    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 jsonObject = PayloadGenerator.CreateRandomJsonPayload(payloadSizeBytesBase);
                        string  keyPart    = $"iteration-{i}";
                        jsonObject.Add("payload", partitionPart + keyPart);

                        string           persistenceKey       = partition.Store(jsonObject, PersistenceBytes);
                        Option <JObject> decryptedJsonPayload = partition.Load(persistenceKey, PersistenceBytes);
                        if (decryptedJsonPayload.IsSome)
                        {
                            JObject decryptedJson = (JObject)decryptedJsonPayload;
                            Assert.Equal(partitionPart + keyPart, decryptedJson.GetValue("payload").ToObject <string>());
                        }
                        else
                        {
                            throw new XunitException("Json load did not return decrypted payload");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e, "unexpected error during call");
                throw;
            }
        }