Skip to content

Commit

Permalink
(#195) Message Bus Encryption: RabbitMQ
Browse files Browse the repository at this point in the history
  • Loading branch information
phongnguyend committed Sep 14, 2023
1 parent e5bfbc8 commit 5255833
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,15 @@ public Task ReceiveAsync(Func<T, MetaData, Task> action, CancellationToken cance
if (_options.MessageEncryptionEnabled)
{
bodyText = ea.Body.Span.ToArray().UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.ECB)
var parts = Encoding.UTF8.GetString(ea.Body.Span).Split('.');
var iv = parts[0].FromBase64String();
var encryptedBytes = parts[1].FromBase64String();
bodyText = encryptedBytes.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.CBC)
.WithIV(iv)
.WithPadding(PaddingMode.PKCS7)
.Decrypt()
.GetString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,12 @@ public async Task SendAsync(T message, MetaData metaData = null, CancellationTok
if (_options.MessageEncryptionEnabled)
{
body = body.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.ECB)
.Encrypt();
var iv = SymmetricCrypto.GenerateKey(16);
body = (iv.ToBase64String() + "." + body.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.CBC)
.WithIV(iv)
.WithPadding(PaddingMode.PKCS7)
.Encrypt().ToBase64String()).GetBytes();
}
var properties = channel.CreateBasicProperties();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,15 @@ public Task ReceiveAsync(Func<T, MetaData, Task> action, CancellationToken cance
if (_options.MessageEncryptionEnabled)
{
bodyText = ea.Body.Span.ToArray().UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.ECB)
var parts = Encoding.UTF8.GetString(ea.Body.Span).Split('.');
var iv = parts[0].FromBase64String();
var encryptedBytes = parts[1].FromBase64String();
bodyText = encryptedBytes.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.CBC)
.WithIV(iv)
.WithPadding(PaddingMode.PKCS7)
.Decrypt()
.GetString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,12 @@ public async Task SendAsync(T message, MetaData metaData = null, CancellationTok
if (_options.MessageEncryptionEnabled)
{
body = body.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.ECB)
.Encrypt();
var iv = SymmetricCrypto.GenerateKey(16);
body = (iv.ToBase64String() + "." + body.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.CBC)
.WithIV(iv)
.WithPadding(PaddingMode.PKCS7)
.Encrypt().ToBase64String()).GetBytes();
}
var properties = channel.CreateBasicProperties();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,15 @@ public Task ReceiveAsync(Func<T, MetaData, Task> action, CancellationToken cance
if (_options.MessageEncryptionEnabled)
{
bodyText = ea.Body.Span.ToArray().UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.ECB)
var parts = Encoding.UTF8.GetString(ea.Body.Span).Split('.');
var iv = parts[0].FromBase64String();
var encryptedBytes = parts[1].FromBase64String();
bodyText = encryptedBytes.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.CBC)
.WithIV(iv)
.WithPadding(PaddingMode.PKCS7)
.Decrypt()
.GetString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,12 @@ public async Task SendAsync(T message, MetaData metaData = null, CancellationTok
if (_options.MessageEncryptionEnabled)
{
body = body.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.ECB)
.Encrypt();
var iv = SymmetricCrypto.GenerateKey(16);
body = (iv.ToBase64String() + "." + body.UseAES(_options.MessageEncryptionKey.FromBase64String())
.WithCipher(CipherMode.CBC)
.WithIV(iv)
.WithPadding(PaddingMode.PKCS7)
.Encrypt().ToBase64String()).GetBytes();
}
var properties = channel.CreateBasicProperties();
Expand Down

0 comments on commit 5255833

Please sign in to comment.