public void RoundTrip() { var factory = new EncryptionFactory(); var serializer = new JsonSerializer { ContractResolver = factory.GetContractResolver() }; using (var algorithm = CryptoBuilder.Build()) { string serialized; using (factory.GetEncryptSession(algorithm)) { var instance = new ClassToSerialize { Property1 = "Property1Value", Property2 = "Property2Value" }; serialized = serializer.Serialize(instance); } using (factory.GetDecryptSession(algorithm)) { var result = serializer.Deserialize <ClassToSerialize>(serialized); ObjectApprover.VerifyWithJson(result); } } }
public async Task Works() { var target = new ClassWithString { Property = "Foo" }; using var factory = new EncryptionFactory(); using var algorithm = CryptoBuilder.Build(); var serializer = new JsonSerializer { ContractResolver = factory.GetContractResolver() }; string serialized; using (factory.GetEncryptSession(algorithm)) { await Task.Delay(1); serialized = serializer.Serialize(target); } using (factory.GetDecryptSession(algorithm)) { await Task.Delay(1); var result = serializer.Deserialize <ClassWithString>(serialized); Assert.Equal("Foo", result.Property); } }
static void Main() { // per system (periodically rotated) var key = Encoding.UTF8.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"); // per app domain using (var factory = new EncryptionFactory()) { var serializer = new JsonSerializer { ContractResolver = factory.GetContractResolver() }; // transferred as meta data with the serialized payload byte[] initVector; string serialized; // per serialize session using (var algorithm = new RijndaelManaged { Key = key }) { initVector = algorithm.IV; using (factory.GetEncryptSession(algorithm)) { var instance = new ClassToSerialize { Property = "PropertyValue", }; var builder = new StringBuilder(); using (var writer = new StringWriter(builder)) { serializer.Serialize(writer, instance); } serialized = builder.ToString(); } } // per deserialize session using (var algorithm = new RijndaelManaged { IV = initVector, Key = key }) { using (factory.GetDecryptSession(algorithm)) { using var stringReader = new StringReader(serialized); using var jsonReader = new JsonTextReader(stringReader); var deserialized = serializer.Deserialize <ClassToSerialize>(jsonReader); Console.WriteLine(deserialized !.Property); } } } Console.ReadKey(); }
public async Task Invoke(IIncomingPhysicalMessageContext context, Func <IIncomingPhysicalMessageContext, Task> next) { if (!context.MessageHeaders.ReadKeyAndIv(out var keyId, out var iv)) { await next(context).ConfigureAwait(false); return; } using (factory.GetDecryptSession(stateBuilder(keyId, iv))) { await next(context).ConfigureAwait(false); } }
public void ExampleUsage() { // per system (periodically rotated) var key = Encoding.UTF8.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"); // per app domain using (var factory = new EncryptionFactory()) { var serializer = new JsonSerializer { ContractResolver = factory.GetContractResolver() }; // transferred as meta data with the serialized payload byte[] initVector; string serialized; // per serialize session using (var algorithm = new RijndaelManaged { Key = key }) { initVector = algorithm.IV; using (factory.GetEncryptSession(algorithm)) { var instance = new ClassToSerialize { Property1 = "Property1Value", Property2 = "Property2Value" }; serialized = serializer.Serialize(instance); } } // per deserialize session using (var algorithm = new RijndaelManaged { IV = initVector, Key = key }) { using (factory.GetDecryptSession(algorithm)) { var deserialized = serializer.Deserialize <ClassToSerialize>(serialized); ObjectApprover.VerifyWithJson(deserialized); } } } }
public async Task Process(IncomingStepContext context, Func <Task> next) { var transportMessage = context.Load <TransportMessage>(); if (!transportMessage.Headers.ReadKeyAndIv(out var keyId, out var iv)) { await next(); return; } using (factory.GetDecryptSession(stateBuilder(keyId, iv))) { await next(); } }
public static T Run <T>(T instance) { using (var factory = new EncryptionFactory()) using (var algorithm = CryptoBuilder.Build()) { var serializer = new JsonSerializer { ContractResolver = factory.GetContractResolver() }; string result; using (factory.GetEncryptSession(algorithm)) { result = serializer.Serialize(instance); } Approvals.Verify(result); using (factory.GetDecryptSession(algorithm)) { return(serializer.Deserialize <T>(result)); } } }
public static async Task <T> Run <T>(T instance, [CallerFilePath] string sourceFile = "") { using var factory = new EncryptionFactory(); using var algorithm = CryptoBuilder.Build(); var serializer = new JsonSerializer { ContractResolver = factory.GetContractResolver() }; string result; using (factory.GetEncryptSession(algorithm)) { result = serializer.Serialize(instance); } await Verify(result, null, sourceFile); using (factory.GetDecryptSession(algorithm)) { return(serializer.Deserialize <T>(result)); } }
public T DeserializeDecrypt <T>(string key, byte[] initVector, string value) { var byteArrayKey = CryptoService.CreateByteArrayKey(key); var serializer = new JsonSerializer { ContractResolver = _encryptionFactory.GetContractResolver() }; using (var algorithm = new AesManaged { Key = byteArrayKey, IV = initVector }) { using (_encryptionFactory.GetDecryptSession(algorithm)) using (var stringReader = new StringReader(value)) using (var jsonReader = new JsonTextReader(stringReader)) { return(serializer.Deserialize <T>(jsonReader)); } } }