public static IServiceCollection Create()
        {
            var services = new ServiceCollection();

            // core
            services.AddTLS();

            services.AddSingleton <IRandom, DefaultRandomGenerator>();
            services.AddTransient <IStreamAccessor, StreamAccessor>();
            services.AddTransient <INegotiatior, DefaultNegotiator>();

            // features
            services.AddAES();
            services.AddDHKeyExchange(CreateDHParameters());
            services.AddEC();
            services.AddGCM();
            services.AddRC4();
            services.AddRSAKeyReaders();
            services.AddRSAKeyExchange();
            services.AddSHA();

            services.AddCipherSuites();

            return(services);
        }