public async Task Write()
        {
            var endpointConfiguration = new EndpointConfiguration(endpointName);
            var encryptionService     = new RijndaelEncryptionService(
                encryptionKeyIdentifier: "2015-10",
                key: Convert.FromBase64String("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

            endpointConfiguration.EnableMessagePropertyEncryption(
                encryptionService: encryptionService,
                encryptedPropertyConvention: propertyInfo =>
            {
                return(propertyInfo.Name.EndsWith("EncryptedProperty"));
            }
                );

            var conventions = endpointConfiguration.Conventions();
            var typesToScan = TypeScanner.NestedTypes <HeaderWriterEncryption>();

            endpointConfiguration.SetTypesToScan(typesToScan);
            endpointConfiguration.UseTransport(new LearningTransport());
            endpointConfiguration.RegisterMessageMutator(new Mutator());

            var endpointInstance = await Endpoint.Start(endpointConfiguration)
                                   .ConfigureAwait(false);

            var messageToSend = new MessageToSend
            {
                EncryptedProperty1 = "String 1",
                EncryptedProperty2 = "String 2"
            };
            await endpointInstance.SendLocal(messageToSend)
            .ConfigureAwait(false);

            ManualResetEvent.WaitOne();
        }
Пример #2
0
    static async Task Main()
    {
        Console.Title = "Samples.Store.Sales";
        var endpointConfiguration = new EndpointConfiguration("Store.Sales");

        endpointConfiguration.UseTransport <RabbitMQTransport>()
        .ConnectionString("host=localhost");

        endpointConfiguration.UsePersistence <MongoDbPersistence>()
        .SetConnectionString("mongodb://localhost/samples-store-sales");

        var defaultKey        = "2015-10";
        var ascii             = Encoding.ASCII;
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: defaultKey,
            key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);

        var endpointInstance = await Endpoint.Start(endpointConfiguration)
                               .ConfigureAwait(false);

        Console.WriteLine("Press any key to exit");
        Console.ReadKey();
        await endpointInstance.Stop()
        .ConfigureAwait(false);
    }
Пример #3
0
    static async Task AsyncStart()
    {
        var endpointConfiguration = new EndpointConfiguration("Store.ECommerce");

        endpointConfiguration.PurgeOnStartup(true);

        var transport = endpointConfiguration.UseTransport <RabbitMQTransport>();

        transport.ConnectionString("host=localhost");
        var routing = transport.Routing();

        routing.RouteToEndpoint(typeof(SubmitOrder).Assembly, "Store.Messages.Commands", "Store.Sales");

        endpointConfiguration.UsePersistence <MongoDbPersistence>()
        .SetConnectionString("mongodb://localhost/samples-store-sales");

        var defaultKey        = "2015-10";
        var ascii             = Encoding.ASCII;
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: defaultKey,
            key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);

        EndpointInstance = await Endpoint.Start(endpointConfiguration)
                           .ConfigureAwait(false);

        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
Пример #4
0
    public static void ApplyCommonConfiguration(this EndpointConfiguration endpointConfiguration,
                                                Action <TransportExtensions <AzureStorageQueueTransport> > messageEndpointMappings = null)
    {
        var connectionString = CloudConfigurationManager.GetSetting("NServiceBus.ConnectionString");

        if (string.IsNullOrWhiteSpace(connectionString))
        {
            connectionString = "UseDevelopmentStorage=true";
        }

        var transport = endpointConfiguration.UseTransport <AzureStorageQueueTransport>();

        transport.ConnectionString(connectionString);
        var delayedDelivery = transport.DelayedDelivery();

        delayedDelivery.DisableTimeoutManager();

        messageEndpointMappings?.Invoke(transport);

        var persistence = endpointConfiguration.UsePersistence <AzureStoragePersistence>();

        persistence.ConnectionString(connectionString);
        var defaultKey        = "2015-10";
        var ascii             = Encoding.ASCII;
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: defaultKey,
            key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);
        endpointConfiguration.AuditProcessedMessagesTo("audit");
        endpointConfiguration.SendFailedMessagesTo("error");
        endpointConfiguration.EnableInstallers();
    }
    public static void ConfigurationEncryption(this EndpointConfiguration endpointConfiguration)
    {
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: "2015-10",
            key: Convert.FromBase64String("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);
    }
    public static void ConfigurationEncryption(this EndpointConfiguration endpointConfiguration)
    {
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: "2015-10",
            key: Encoding.ASCII.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);
    }
        public void Encrypt_using_missing_key_identifier_must_throw()
        {
            var encryptionKey1 = Encoding.ASCII.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6");
            var service1       = new RijndaelEncryptionService(null, new Dictionary <string, byte[]>
            {
                { "some-key", encryptionKey1 }
            }, new List <byte[]>());

            Assert.Catch <InvalidOperationException>(() => service1.Encrypt("string to encrypt", null), "It is required to set the rijndael key identifier.");
        }
Пример #8
0
        public void Should_encrypt_and_decrypt()
        {
            var service        = new RijndaelEncryptionService("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6", new List <string>());
            var encryptedValue = service.Encrypt("string to encrypt");

            Assert.AreNotEqual("string to encrypt", encryptedValue.EncryptedBase64Value);
            var decryptedValue = service.Decrypt(encryptedValue);

            Assert.AreEqual("string to encrypt", decryptedValue);
        }
    public static void ConfigurationEncryption(this EndpointConfiguration endpointConfiguration)
    {
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: "2015-10",
            key: Convert.FromBase64String("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService,
                                                              encryptedPropertyConvention: info =>
        {
            return(info.Name.StartsWith("Encrypted"));
        });
    }
Пример #10
0
        Usage(EndpointConfiguration endpointConfiguration)
        {
            #region EncryptionServiceSimple

            var defaultKey        = "2015-10";
            var encryptionService = new RijndaelEncryptionService(
                encryptionKeyIdentifier: defaultKey,
                key: Convert.FromBase64String("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

            endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);

            #endregion
        }
    public static void ApplyCustomConventions(this EndpointConfiguration endpointConfiguration)
    {
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: "2015-10",
            key: Encoding.ASCII.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService,
                                                              encryptedPropertyConvention: info =>
        {
            return(info.Name.StartsWith("Encrypted"));
        });

        var conventions = endpointConfiguration.Conventions();

        conventions.DefiningCommandsAs(
            type =>
        {
            return(type.Namespace != null &&
                   type.Namespace.EndsWith("Commands"));
        });
        conventions.DefiningEventsAs(
            type =>
        {
            return(type.Namespace != null &&
                   type.Namespace.EndsWith("Events"));
        });
        conventions.DefiningMessagesAs(
            type =>
        {
            return(type.Namespace == "Messages");
        });
        conventions.DefiningDataBusPropertiesAs(
            property =>
        {
            return(property.Name.EndsWith("DataBus"));
        });
        conventions.DefiningExpressMessagesAs(
            type =>
        {
            return(type.Name.EndsWith("Express"));
        });
        conventions.DefiningTimeToBeReceivedAs(
            type =>
        {
            if (type.Name.EndsWith("Expires"))
            {
                return(TimeSpan.FromSeconds(30));
            }
            return(TimeSpan.MaxValue);
        });
    }
Пример #12
0
        Usage(EndpointConfiguration endpointConfiguration)
        {
            #region EncryptionServiceSimple

            var defaultKey        = "2015-10";
            var ascii             = Encoding.ASCII;
            var encryptionService = new RijndaelEncryptionService(
                encryptionKeyIdentifier: defaultKey,
                key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

            endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);

            #endregion
        }
Пример #13
0
    public static void ApplyCommonConfiguration(this EndpointConfiguration endpointConfiguration)
    {
        endpointConfiguration.UseTransport <MsmqTransport>();
        endpointConfiguration.UsePersistence <InMemoryPersistence>();
        var defaultKey        = "2015-10";
        var ascii             = Encoding.ASCII;
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: defaultKey,
            key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);
        endpointConfiguration.AuditProcessedMessagesTo("audit");
        endpointConfiguration.SendFailedMessagesTo("error");
        endpointConfiguration.EnableInstallers();
    }
Пример #14
0
    public static void ApplyCommonConfiguration(this EndpointConfiguration endpointConfiguration,
                                                Action <TransportExtensions <LearningTransport> > messageEndpointMappings = null)
    {
        var transport = endpointConfiguration.UseTransport <LearningTransport>();

        messageEndpointMappings?.Invoke(transport);
        endpointConfiguration.UsePersistence <LearningPersistence>();
        var defaultKey        = "2015-10";
        var ascii             = Encoding.ASCII;
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: defaultKey,
            key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);
    }
Пример #15
0
        public void Should_encrypt_and_decrypt_for_expired_key()
        {
            var service1       = new RijndaelEncryptionService("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6", new List <string>());
            var encryptedValue = service1.Encrypt("string to encrypt");

            Assert.AreNotEqual("string to encrypt", encryptedValue.EncryptedBase64Value);


            var expiredKeys = new List <string> {
                "gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"
            };
            var service2 = new RijndaelEncryptionService("adDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6", expiredKeys);

            var decryptedValue = service2.Decrypt(encryptedValue);

            Assert.AreEqual("string to encrypt", decryptedValue);
        }
Пример #16
0
        Usage(EndpointConfiguration endpointConfiguration)
        {
            #region SplitDefiningEncryptedPropertiesAs

            var encryptionService = new RijndaelEncryptionService(
                encryptionKeyIdentifier: "2015-10",
                key: Convert.FromBase64String("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

            endpointConfiguration.EnableMessagePropertyEncryption(
                encryptionService: encryptionService,
                encryptedPropertyConvention: propertyInfo =>
            {
                return(propertyInfo.Name.EndsWith("EncryptedProperty"));
            }
                );

            #endregion
        }
Пример #17
0
        void FromCode(EndpointConfiguration endpointConfiguration)
        {
            #region EncryptionFromCode

            var defaultKey = "2015-10";

            var keys = new Dictionary <string, byte[]>
            {
                { "2015-10", Convert.FromBase64String("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6") },
                { "2015-09", Convert.FromBase64String("abDbqRpQdRbTs3mhdZh9qCaDaxJXl+e6") },
                { "2015-08", Convert.FromBase64String("cdDbqRpQdRbTs3mhdZh9qCaDaxJXl+e6") },
            };
            var encryptionService = new RijndaelEncryptionService(defaultKey, keys);

            endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);

            #endregion
        }
Пример #18
0
    public static void ApplyCommonConfiguration(this EndpointConfiguration endpointConfiguration)
    {
        var connectionString = "UseDevelopmentStorage=true";

        var transport = endpointConfiguration.UseTransport <AzureStorageQueueTransport>();

        transport.ConnectionString(connectionString);
        var persistence       = endpointConfiguration.UsePersistence <AzureStoragePersistence>();
        var defaultKey        = "2015-10";
        var ascii             = Encoding.ASCII;
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: defaultKey,
            key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);
        endpointConfiguration.AuditProcessedMessagesTo("audit");
        endpointConfiguration.SendFailedMessagesTo("error");
        endpointConfiguration.EnableInstallers();
    }
Пример #19
0
        public static void ConfigurationEncryption(this EndpointConfiguration endpointConfiguration)
        {
            var defaultKey = "2015-10";

            var keys = new Dictionary <string, byte[]>
            {
                { "2015-10", Convert.FromBase64String("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6") },
                { "2015-09", Convert.FromBase64String("abDbqRpQdRbTs3mhdZh9qCaDaxJXl+e6") },
                { "2015-08", Convert.FromBase64String("cdDbqRpQdRbTs3mhdZh9qCaDaxJXl+e6") },
            };

            var encryptionService = new RijndaelEncryptionService(defaultKey, keys);

            endpointConfiguration.EnableMessagePropertyEncryption(encryptionService,
                                                                  encryptedPropertyConvention: info =>
            {
                return(info.Name.StartsWith("Encrypted"));
            });
        }
Пример #20
0
    public static void ApplyCommonConfiguration(this EndpointConfiguration endpointConfiguration,
                                                Action <TransportExtensions <LearningTransport> > messageEndpointMappings = null)
    {
        var serilogTracing = endpointConfiguration.EnableSerilogTracing(Log.Logger);
        var transport      = endpointConfiguration.UseTransport <LearningTransport>();

        messageEndpointMappings?.Invoke(transport);
        endpointConfiguration.UsePersistence <LearningPersistence>();
        var defaultKey        = "2015-10";
        var ascii             = Encoding.ASCII;
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: defaultKey,
            key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);
        endpointConfiguration.RegisterMessageMutator(new DebugFlagMutator());
        endpointConfiguration.AuditProcessedMessagesTo("audit");
        endpointConfiguration.SendFailedMessagesTo("error");
    }
Пример #21
0
        Usage(EndpointConfiguration endpointConfiguration)
        {
            #region DefiningEncryptedPropertiesAs

            var ascii             = Encoding.ASCII;
            var encryptionService = new RijndaelEncryptionService(
                encryptionKeyIdentifier: "2015-10",
                key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

            endpointConfiguration.EnableMessagePropertyEncryption(
                encryptionService: encryptionService,
                encryptedPropertyConvention: propertyInfo =>
            {
                return(propertyInfo.Name.EndsWith("EncryptedProperty"));
            }
                );

            #endregion
        }
        public async Task Write()
        {
            var endpointConfiguration = new EndpointConfiguration(endpointName);
            var ascii             = Encoding.ASCII;
            var encryptionService = new RijndaelEncryptionService(
                encryptionKeyIdentifier: "2015-10",
                key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

            endpointConfiguration.EnableMessagePropertyEncryption(
                encryptionService: encryptionService,
                encryptedPropertyConvention: propertyInfo =>
            {
                return(propertyInfo.Name.EndsWith("EncryptedProperty"));
            }
                );

            var conventions = endpointConfiguration.Conventions();
            var typesToScan = TypeScanner.NestedTypes <HeaderWriterEncryption>();

            endpointConfiguration.SetTypesToScan(typesToScan);
            endpointConfiguration.UsePersistence <LearningPersistence>();
            endpointConfiguration.UseTransport <LearningTransport>();
            endpointConfiguration.RegisterComponents(
                registration: components =>
            {
                components.ConfigureComponent <Mutator>(DependencyLifecycle.InstancePerCall);
            });
            var endpointInstance = await Endpoint.Start(endpointConfiguration)
                                   .ConfigureAwait(false);

            var messageToSend = new MessageToSend
            {
                EncryptedProperty1 = "String 1",
                EncryptedProperty2 = "String 2"
            };
            await endpointInstance.SendLocal(messageToSend)
            .ConfigureAwait(false);

            ManualResetEvent.WaitOne();
        }
Пример #23
0
        public void Should_throw_when_decrypt_with_wrong_key()
        {
            var validKey       = "gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6";
            var service1       = new RijndaelEncryptionService(validKey, new List <string>());
            var encryptedValue = service1.Encrypt("string to encrypt");

            Assert.AreNotEqual("string to encrypt", encryptedValue.EncryptedBase64Value);

            var invalidKey         = "adDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6";
            var invalidExpiredKeys = new List <string> {
                "bdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"
            };
            var service2 = new RijndaelEncryptionService(invalidKey, invalidExpiredKeys);

            var exception = Assert.Throws <AggregateException>(() => service2.Decrypt(encryptedValue));

            Assert.AreEqual("Could not decrypt message. Tried 2 keys.", exception.Message);
            Assert.AreEqual(2, exception.InnerExceptions.Count);
            foreach (var inner in exception.InnerExceptions)
            {
                Assert.IsInstanceOf <CryptographicException>(inner);
            }
        }
    public static void ApplyCommonConfiguration(this EndpointConfiguration endpointConfiguration,
                                                Action <TransportExtensions <RabbitMQTransport> > messageEndpointMappings = null)
    {
        var transport = endpointConfiguration.UseTransport <RabbitMQTransport>();

        transport.ConnectionString("host=localhost");

        messageEndpointMappings?.Invoke(transport);

        var persistence = endpointConfiguration.UsePersistence <MongoDbPersistence>();

        persistence.SetConnectionString("mongodb://localhost");


        var defaultKey        = "2015-10";
        var ascii             = Encoding.ASCII;
        var encryptionService = new RijndaelEncryptionService(
            encryptionKeyIdentifier: defaultKey,
            key: ascii.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"));

        endpointConfiguration.EnableMessagePropertyEncryption(encryptionService);
        endpointConfiguration.RegisterMessageMutator(new DebugFlagMutator());
    }
        public void Encrypt_using_missing_key_identifier_must_throw()
        {
            var encryptionKey1 = Encoding.ASCII.GetBytes("gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6");
            var service1 = new RijndaelEncryptionService(null, new Dictionary<string, byte[]>
            {
                {"some-key", encryptionKey1}
            }, new List<byte[]>());

            Assert.Catch<InvalidOperationException>(() => service1.Encrypt("string to encrypt", null), "It is required to set the rijndael key identifier.");
        }
 public void SetUp()
 {
     _rijndaelEncryptionService = new RijndaelEncryptionService(SecretKey);
 }