diff --git a/samples/AesSample.Fluent/DatabaseContext.cs b/samples/AesSample.Fluent/DatabaseContext.cs index 978777a..e68fab5 100644 --- a/samples/AesSample.Fluent/DatabaseContext.cs +++ b/samples/AesSample.Fluent/DatabaseContext.cs @@ -26,10 +26,14 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) userEntityBuilder.Property(x => x.FirstName).IsRequired(); userEntityBuilder.Property(x => x.LastName).IsRequired(); userEntityBuilder.Property(x => x.Email).IsRequired().IsEncrypted(); + userEntityBuilder.Property(x => x.Notes).IsRequired().HasColumnType("BLOB").IsEncrypted(StorageFormat.Binary); userEntityBuilder.Property(x => x.EncryptedData).IsRequired().IsEncrypted(); userEntityBuilder.Property(x => x.EncryptedDataAsString).IsRequired().HasColumnType("TEXT").IsEncrypted(StorageFormat.Base64); - modelBuilder.UseEncryption(_encryptionProvider); + if (_encryptionProvider is not null) + { + modelBuilder.UseEncryption(_encryptionProvider); + } base.OnModelCreating(modelBuilder); } diff --git a/samples/AesSample.Fluent/EncryptedDatabaseContext.cs b/samples/AesSample.Fluent/EncryptedDatabaseContext.cs new file mode 100644 index 0000000..03520a1 --- /dev/null +++ b/samples/AesSample.Fluent/EncryptedDatabaseContext.cs @@ -0,0 +1,11 @@ +using Microsoft.EntityFrameworkCore; + +namespace AesSample.Fluent; + +public class EncryptedDatabaseContext : DatabaseContext +{ + public EncryptedDatabaseContext(DbContextOptions options) + : base(options, null) + { + } +} \ No newline at end of file diff --git a/samples/AesSample.Fluent/Program.cs b/samples/AesSample.Fluent/Program.cs index f80f7df..539d827 100644 --- a/samples/AesSample.Fluent/Program.cs +++ b/samples/AesSample.Fluent/Program.cs @@ -23,25 +23,38 @@ static void Main(string[] args) byte[] encryptionIV = keyInfo.IV; var encryptionProvider = new AesProvider(encryptionKey, encryptionIV); - using var context = new DatabaseContext(options, encryptionProvider); - context.Database.EnsureCreated(); - - var user = new UserEntity + using (var context = new DatabaseContext(options, encryptionProvider)) { - FirstName = "John", - LastName = "Doe", - Email = "john@doe.com", - EncryptedData = new byte[2] { 1, 2 }, - EncryptedDataAsString = new byte[2] { 3, 4 } - }; + context.Database.EnsureCreated(); + + var user = new UserEntity + { + FirstName = "John", + LastName = "Doe", + Email = "john@doe.com", + Notes = "Hello world!", + EncryptedData = new byte[2] { 1, 2 }, + EncryptedDataAsString = new byte[2] { 3, 4 } + }; + + context.Users.Add(user); + context.SaveChanges(); - context.Users.Add(user); - context.SaveChanges(); + Console.WriteLine($"Users count: {context.Users.Count()}"); + } - Console.WriteLine($"Users count: {context.Users.Count()}"); + using (var context = new EncryptedDatabaseContext(options)) + { + UserEntity user = context.Users.First(); + + Console.WriteLine($"Encrypted User: {user.FirstName} {user.LastName} - {user.Email} (Notes: {user.Notes})"); + } - user = context.Users.First(); + using (var context = new DatabaseContext(options, encryptionProvider)) + { + UserEntity user = context.Users.First(); - Console.WriteLine($"User: {user.FirstName} {user.LastName} - {user.Email}"); + Console.WriteLine($"User: {user.FirstName} {user.LastName} - {user.Email} (Notes: {user.Notes})"); + } } } diff --git a/samples/AesSample.Fluent/UserEntity.cs b/samples/AesSample.Fluent/UserEntity.cs index 1df0b26..2e22cd6 100644 --- a/samples/AesSample.Fluent/UserEntity.cs +++ b/samples/AesSample.Fluent/UserEntity.cs @@ -12,6 +12,8 @@ public class UserEntity public string Email { get; set; } + public string Notes { get; set; } + public byte[] EncryptedData { get; set; } public byte[] EncryptedDataAsString { get; set; } diff --git a/samples/AesSample/Program.cs b/samples/AesSample/Program.cs index 6de605f..a227d2d 100644 --- a/samples/AesSample/Program.cs +++ b/samples/AesSample/Program.cs @@ -23,25 +23,31 @@ static void Main() byte[] encryptionIV = keyInfo.IV; var encryptionProvider = new AesProvider(encryptionKey, encryptionIV); - using var context = new DatabaseContext(options, encryptionProvider); - context.Database.EnsureCreated(); - - var user = new UserEntity + using (var context = new DatabaseContext(options, encryptionProvider)) { - FirstName = "John", - LastName = "Doe", - Email = "john@doe.com", - EncryptedData = new byte[2] { 1, 2 }, - EncryptedDataAsString = new byte[2] { 3, 4 } - }; + context.Database.EnsureCreated(); + + var user = new UserEntity + { + FirstName = "John", + LastName = "Doe", + Email = "john@doe.com", + Notes = "Hello world!", + EncryptedData = new byte[2] { 1, 2 }, + EncryptedDataAsString = new byte[2] { 3, 4 } + }; - context.Users.Add(user); - context.SaveChanges(); + context.Users.Add(user); + context.SaveChanges(); - Console.WriteLine($"Users count: {context.Users.Count()}"); + Console.WriteLine($"Users count: {context.Users.Count()}"); + } - user = context.Users.First(); + using (var context = new DatabaseContext(options, encryptionProvider)) + { + UserEntity user = context.Users.First(); - Console.WriteLine($"User: {user.FirstName} {user.LastName} - {user.Email}"); + Console.WriteLine($"User: {user.FirstName} {user.LastName} - {user.Email} (Notes: {user.Notes})"); + } } } diff --git a/samples/AesSample/UserEntity.cs b/samples/AesSample/UserEntity.cs index 31c7402..0a9ee26 100644 --- a/samples/AesSample/UserEntity.cs +++ b/samples/AesSample/UserEntity.cs @@ -20,6 +20,10 @@ public class UserEntity [Encrypted] public string Email { get; set; } + [Required] + [Encrypted(StorageFormat.Binary)] + public string Notes { get; set; } + [Required] [Encrypted] public byte[] EncryptedData { get; set; }