Message encryption leverages the pipeline to encrypt the entire serialized message body.
Data in the message headers is not encrypted.
One way of achieving this is by using a transport message mutator.
public class MessageEncryptor :
IMutateTransportMessages
{
public void MutateIncoming(TransportMessage transportMessage)
{
transportMessage.Body = transportMessage.Body.Reverse().ToArray();
}
public void MutateOutgoing(LogicalMessage logicalMessage, TransportMessage transportMessage)
{
transportMessage.Body = transportMessage.Body.Reverse().ToArray();
}
}
The encrypting mutator must be injected via dependency injection:
busConfiguration.RegisterComponents(
registration: components =>
{
components.ConfigureComponent<MessageEncryptor>(DependencyLifecycle.InstancePerCall);
});