Exemple #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SecurityHeadersMiddleware"/> class.
 /// </summary>
 /// <param name="next">The next middleware in the pipeline.</param>
 /// <param name="service">An instance of <see cref="ICustomHeaderService"/>.</param>
 /// <param name="policies">A <see cref="HeaderPolicyCollection"/> containing the policies to be applied.</param>
 /// <param name="nonceGenerator">Used to generate nonce (number used once) values for headers</param>
 internal SecurityHeadersMiddleware(RequestDelegate next, ICustomHeaderService service, HeaderPolicyCollection policies, INonceGenerator nonceGenerator)
 {
     _next           = next ?? throw new ArgumentNullException(nameof(next));
     _service        = service ?? throw new ArgumentNullException(nameof(service));
     _policy         = policies ?? throw new ArgumentNullException(nameof(policies));
     _nonceGenerator = nonceGenerator ?? throw new ArgumentException(nameof(nonceGenerator));
 }
        public AuthKeyNegotiator(
            [NotNull] IClientTransportConfig clientTransportConfig,
            [NotNull] IMTProtoClientBuilder mtProtoBuilder,
            [NotNull] TLRig tlRig,
            [NotNull] INonceGenerator nonceGenerator,
            [NotNull] IHashServices hashServices,
            [NotNull] IEncryptionServices encryptionServices,
            [NotNull] IKeyChain keyChain)
        {
            Argument.IsNotNull(() => clientTransportConfig);
            Argument.IsNotNull(() => mtProtoBuilder);
            Argument.IsNotNull(() => tlRig);
            Argument.IsNotNull(() => nonceGenerator);
            Argument.IsNotNull(() => hashServices);
            Argument.IsNotNull(() => encryptionServices);
            Argument.IsNotNull(() => keyChain);

            _clientTransportConfig = clientTransportConfig;
            _mtProtoBuilder        = mtProtoBuilder;
            _tlRig              = tlRig;
            _nonceGenerator     = nonceGenerator;
            _hashServices       = hashServices;
            _encryptionServices = encryptionServices;
            _keyChain           = keyChain;
        }
 public GeneratePushNonceCommandHandler(CoronaContext context, IRepository repository, INonceGenerator nonceGenerator, IInstanceIdService instanceIdService, IMediator mediator)
 {
     this.context           = context ?? throw new ArgumentNullException(nameof(context));
     this.repository        = repository ?? throw new ArgumentNullException(nameof(repository));
     this.nonceGenerator    = nonceGenerator ?? throw new ArgumentNullException(nameof(nonceGenerator));
     this.instanceIdService = instanceIdService ?? throw new ArgumentNullException(nameof(instanceIdService));
     this.mediator          = mediator ?? throw new ArgumentNullException(nameof(mediator));
 }
Exemple #4
0
 public SignatureCreator(
     ISigningStringComposer signingStringComposer,
     IBase64Converter base64Converter,
     INonceGenerator nonceGenerator,
     ILogger <SignatureCreator> logger = null)
 {
     _signingStringComposer = signingStringComposer ?? throw new ArgumentNullException(nameof(signingStringComposer));
     _base64Converter       = base64Converter ?? throw new ArgumentNullException(nameof(base64Converter));
     _nonceGenerator        = nonceGenerator ?? throw new ArgumentNullException(nameof(nonceGenerator));
     _logger = logger;
 }
 public HmacClientHandler(
     string client,
     SecureString secret,
     ISigningAlgorithm signingAlgorithm,
     INonceGenerator nonceGenerator = null,
     ITime time = null)
 {
     this.client           = client;
     this.secret           = secret;
     this.signingAlgorithm = signingAlgorithm;
     this.nonceGenerator   = nonceGenerator ?? GuidNonceGenerator.Instance;
     this.time             = time ?? SystemTime.Instance;
 }
Exemple #6
0
 // for service collection
 public HmacClientHandler(
     string appId,
     SecureString secret,
     ISigningAlgorithm signingAlgorithm = null,
     INonceGenerator nonceGenerator     = null,
     ITime time = null)
 {
     this.appId            = appId;
     this.secret           = secret;
     this.signingAlgorithm = signingAlgorithm ?? HmacSigningAlgorithm.Default;
     this.nonceGenerator   = nonceGenerator ?? GuidNonceGenerator.Instance;
     this.time             = time ?? SystemTime.Instance;
 }
Exemple #7
0
        public HardCodedSettings(INonceGenerator nonceGenerator = null, IEpochGenerator epochGenerator = null, AppScope appScope = AppScope.Autonomous)
        {
            this.AppScope = appScope;
            if (nonceGenerator != null)
            {
                this.NonceGenerator = nonceGenerator;
            }

            if (epochGenerator != null)
            {
                this.EpochGenerator = epochGenerator;
            }
        }
 public HmacClientHandler(
     HttpMessageHandler innerHandler,
     string appId,
     SecureString secret,
     ISigningAlgorithm signingAlgorithm,
     INonceGenerator nonceGenerator = null,
     ITime time = null)
     : base(innerHandler)
 {
     this.appId = appId;
     this.secret = secret;
     this.signingAlgorithm = signingAlgorithm;
     this.nonceGenerator = nonceGenerator ?? GuidNonceGenerator.Instance;
     this.time = time ?? SystemTime.Instance;
 }
        /// <summary>
        /// Inicializa una nueva instancia de la clase <see cref="ServiceLocator" />
        /// </summary>
        /// <param name="nonceGenerator">Instancia de <see cref="INonceGenerator" /> que se utiliza para inicializar el proveedor de valores nonce o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="epochGenerator">Instancia de <see cref="IEpochGenerator" /> que se utiliza para inicializar el proveedor de valores epoch o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="headersManager">Instancia de <see cref="IHeadersManager" /> que se utiliza para inicializar el proveedor de cabeceras para las solicitudes al servicio o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="requestHeaderNames">Instancia de <see cref="IHeaderElement" /> que se utiliza para inicializar el proveedor de los nombres de cabeceras personalizadas o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="payloadClaimNames">Instancia de <see cref="IPayloadClaimElement" /> que se utiliza para inicializar el proveedor de los nombres para las reclamaciones usadas en la carga útil del servicio o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="payloadClaimsManager">Instancia de <see cref="IPayloadClaimsManager" /> que se utiliza para inicializar el proveedor de reclamaciones de la carga útil o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="jwtJsonSerializer">Instancia de <see cref="IJsonSerializer" /> que se utiliza para inicializar el proveedor de serialización y deserialización de JWT o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="webProxy">Instancia de <see cref="IWebProxy" /> que se utiliza para inicializar el proveedor del servidor proxy o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="loggingProvider">Instancia de <see cref="ILoggingProvider" /> que se utiliza para inicializar el proveedor de escritura de trazas de seguimiento o <c>null</c> para utilizar la instancia predeterminada.</param>
        /// <param name="endpointProvider">Instancia que implementa <see cref="IEndpointProvider"/> para la obtención de valores de configuración.</param>
        /// <param name="appIdentity">Instancia que implementa <see cref="IAppIdentity"/> para la obtención de valores de configuración.</param>
        private void RegisterInstance(
            INonceGenerator nonceGenerator             = null,
            IEpochGenerator epochGenerator             = null,
            IHeadersManager headersManager             = null,
            IHeaderElement requestHeaderNames          = null,
            IPayloadClaimElement payloadClaimNames     = null,
            IPayloadClaimsManager payloadClaimsManager = null,
            IJsonSerializer jwtJsonSerializer          = null,
            IWebProxy webProxy = null,
            ILoggingProvider loggingProvider   = null,
            IEndpointProvider endpointProvider = null,
            IAppIdentity appIdentity           = null)
        {
            lock (padlock)
            {
                INonceGenerator       instanceOfNonceGenerator       = nonceGenerator ?? this.NonceGenerator ?? new GuidNonceGenerator();
                IEpochGenerator       instanceOfEpochGenerator       = epochGenerator ?? this.EpochGenerator ?? new UnixEpochGenerator();
                IHeaderElement        instanceOfRequestHeaderNames   = requestHeaderNames ?? this.RequestHeaderNames ?? new DefaultHeaderElement();
                IPayloadClaimElement  instanceOfPayloadClaimNames    = payloadClaimNames ?? this.PayloadClaimNames ?? new DefaultPayloadClaimElement();
                IPayloadClaimsManager instanceOfPayloadClaimsManager = payloadClaimsManager ?? this.PayloadClaimsManager ?? new DefaultPayloadClaimsManager();
                IHeadersManager       instanceOfHeadersManager       = headersManager ?? this.HeadersManager ?? new DefaultHeadersManager();
                IJsonSerializer       instanceOfJwtJsonSerializer    = jwtJsonSerializer ?? this.JwtJsonSerializer ?? new JsonNetSerializer();
                IWebProxy             instanceOfWebProxy             = webProxy ?? this.WebProxy ?? new NullWebProxy();
                ILoggingProvider      instanceOfLoggingProvider      = loggingProvider ?? this.LoggingProvider ?? new NullLoggingProvider();
                IEndpointProvider     instanceOfEndpointProvider     = endpointProvider ?? new EnvironmentEndpoint();
                IAppIdentity          instanceOfAppIdentity          = appIdentity ?? new EnvironmentIdentity();

                if (this.container != null)
                {
                    this.container.Dispose();
                    this.container = null;
                }

                this.container = new Container();
                this.container.RegisterInstance <IEnvironmentRuntime>(new EnvironmentRuntime());
                this.container.RegisterInstance(instanceOfNonceGenerator);
                this.container.RegisterInstance(instanceOfEpochGenerator);
                this.container.RegisterInstance(instanceOfRequestHeaderNames);
                this.container.RegisterInstance(instanceOfHeadersManager);
                this.container.RegisterInstance(instanceOfPayloadClaimNames);
                this.container.RegisterInstance(instanceOfPayloadClaimsManager);
                this.container.RegisterInstance(instanceOfJwtJsonSerializer);
                this.container.RegisterInstance(instanceOfWebProxy);
                this.container.RegisterInstance(instanceOfLoggingProvider);
                this.container.RegisterInstance(instanceOfEndpointProvider);
                this.container.RegisterInstance(instanceOfAppIdentity);
            }
        }
        /// <summary>
        /// Inicializa una nueva instancia de la clase <see cref="AspenClient"/>
        /// </summary>
        /// <param name="settings">Configuración de inicialización.</param>
        private AspenClient(ISettings settings)
        {
            this.nonceGenerator      = settings?.NonceGenerator ?? new GuidNonceGenerator();
            this.epochGenerator      = settings?.EpochGenerator ?? new UnixEpochGenerator();
            this.customHeaderManager = settings?.CustomHeaderManager ?? new CustomHeaderManager();
            IJsonSerializer serializer = settings?.JsonSerializer ?? new JsonNetSerializer();

            this.settings = settings;
            this.proxy    = settings?.Proxy;
            this.encoder  = new JwtEncoder(this.algorithm, serializer, this.urlEncoder);
            JwtValidator validator = new JwtValidator(serializer, this.datetimeProvider);

            this.decoder    = new JwtDecoder(serializer, validator, this.urlEncoder);
            this.AppScope   = settings?.AppScope ?? AppScope.Autonomous;
            this.DeviceInfo = settings?.DeviceInfo ?? new DeviceInfo();
        }
 public AuthKeyNegotiator(
     [NotNull] IClientTransportConfig clientTransportConfig,
     [NotNull] IMTProtoClientBuilder mtProtoBuilder,
     [NotNull] TLRig tlRig,
     [NotNull] INonceGenerator nonceGenerator,
     [NotNull] IHashServices hashServices,
     [NotNull] IEncryptionServices encryptionServices,
     [NotNull] IKeyChain keyChain)
 {
     _clientTransportConfig = clientTransportConfig;
     _mtProtoBuilder = mtProtoBuilder;
     _tlRig = tlRig;
     _nonceGenerator = nonceGenerator;
     _hashServices = hashServices;
     _encryptionServices = encryptionServices;
     _keyChain = keyChain;
 }
Exemple #12
0
        public Block(byte[] minerAddress, byte[] previousHash, ICollection <Transaction> transactions, IHashFactory hashFactory)
        {
            MinerAddress = minerAddress;

            Transactions = transactions;
            CreationTime = DateTime.Now;

            IDigest         digest         = hashFactory.GetDigest();
            INonceGenerator nonceGenerator = hashFactory.GetNonceGenerator();

            PreviousHash = new byte[previousHash.Length];
            Array.Copy(previousHash, PreviousHash, previousHash.Length);

            MerkleRoot = ComputeMerkleRoot(hashFactory);
            Nonce      = nonceGenerator.GetNextNonce();
            Hash       = ComputeHash(hashFactory);
        }
 public MTProtoClientBuilder(
     [NotNull] IClientTransportFactory clientTransportFactory,
     [NotNull] TLRig tlRig,
     [NotNull] IMessageIdGenerator messageIdGenerator,
     [NotNull] IMessageCodec messageCodec,
     [NotNull] IHashServices hashServices,
     [NotNull] IEncryptionServices encryptionServices,
     [NotNull] INonceGenerator nonceGenerator,
     [NotNull] IKeyChain keyChain)
 {
     _clientTransportFactory = clientTransportFactory;
     _tlRig = tlRig;
     _messageIdGenerator = messageIdGenerator;
     _messageCodec = messageCodec;
     _hashServices = hashServices;
     _encryptionServices = encryptionServices;
     _nonceGenerator = nonceGenerator;
     _keyChain = keyChain;
 }
 public MTProtoClientBuilder(
     [NotNull] IClientTransportFactory clientTransportFactory,
     [NotNull] TLRig tlRig,
     [NotNull] IMessageIdGenerator messageIdGenerator,
     [NotNull] IMessageCodec messageCodec,
     [NotNull] IHashServices hashServices,
     [NotNull] IEncryptionServices encryptionServices,
     [NotNull] INonceGenerator nonceGenerator,
     [NotNull] IKeyChain keyChain)
 {
     _clientTransportFactory = clientTransportFactory;
     _tlRig = tlRig;
     _messageIdGenerator = messageIdGenerator;
     _messageCodec = messageCodec;
     _hashServices = hashServices;
     _encryptionServices = encryptionServices;
     _nonceGenerator = nonceGenerator;
     _keyChain = keyChain;
 }
Exemple #15
0
        public AuthKeyNegotiator([NotNull] IMTProtoConnectionFactory connectionFactory, [NotNull] TLRig tlRig, [NotNull] INonceGenerator nonceGenerator,
                                 [NotNull] IHashServices hashServices, [NotNull] IEncryptionServices encryptionServices, [NotNull] IKeyChain keyChain,
                                 [NotNull] ITransportConfigProvider transportConfigProvider)
        {
            Argument.IsNotNull(() => connectionFactory);
            Argument.IsNotNull(() => tlRig);
            Argument.IsNotNull(() => nonceGenerator);
            Argument.IsNotNull(() => hashServices);
            Argument.IsNotNull(() => encryptionServices);
            Argument.IsNotNull(() => keyChain);
            Argument.IsNotNull(() => transportConfigProvider);

            _connectionFactory       = connectionFactory;
            _tlRig                   = tlRig;
            _nonceGenerator          = nonceGenerator;
            _hashServices            = hashServices;
            _encryptionServices      = encryptionServices;
            _keyChain                = keyChain;
            _transportConfigProvider = transportConfigProvider;
        }
 public SigningStringCompositionRequestFactory(INonceGenerator nonceGenerator)
 {
     _nonceGenerator = nonceGenerator ?? throw new ArgumentNullException(nameof(nonceGenerator));
 }
 public StoreNonceCommandHandler(IMemoryCache memoryCache, INonceGenerator nonceGenerator)
 {
     this.memoryCache    = memoryCache;
     this.nonceGenerator = nonceGenerator;
 }
 /// <summary>
 /// Registra una instancia de <see cref="INonceGenerator" /> para la generación de valores Nonce.
 /// </summary>
 /// <param name="nonceGenerator">Instancia que implementa <see cref="INonceGenerator" />.</param>
 public void RegisterNonceGenerator(INonceGenerator nonceGenerator)
 {
     Throw.IfNull(nonceGenerator, nameof(nonceGenerator));
     this.RegisterInstance(nonceGenerator);
 }
Exemple #19
0
        public void MineBlock(Block block)
        {
            INonceGenerator nonceGenerator = HashFactory.GetNonceGenerator();
            IByteConverter  converter      = HashFactory.GetByteConverter();

            if (Difficulty >= HashFactory.GetDigest().HashLength)
            {
                throw new ArgumentException("Difficulty can not be greater or equal to hash length.");
            }

            if (Difficulty <= 0)
            {
                throw new ArgumentException("Difficulty can not be greater or equal to zero.");
            }

            byte[] target = new byte[Difficulty];

            block.HashAlgorithmId = HashAlgorithmId;
            block.Difficulty      = Difficulty;

            nonceGenerator.Reset();

            #region Parallel mining.

            CancellationTokenSource tokenSource = new CancellationTokenSource();
            object locker        = new object();
            byte[] solutionNonce = null;
            byte[] solutionHash  = null;

            string immutableData = converter.ConvertToString(block.PreviousHash) +
                                   block.CreationTime.ToString() +
                                   converter.ConvertToString(block.MerkleRoot) +
                                   converter.ConvertToString(block.MinerAddress) +
                                   block.HashAlgorithmId +
                                   block.Difficulty;
            try
            {
                Parallel.ForEach(nonceGenerator, new ParallelOptions()
                {
                    CancellationToken = tokenSource.Token
                }, (byte[] nonce) =>
                {
                    IDigest digest = HashFactory.GetDigest();

                    converter = HashFactory.GetByteConverter();

                    string dataWithNonce = converter.ConvertToString(nonce) + immutableData;
                    byte[] rawData       = Encoding.ASCII.GetBytes(dataWithNonce);
                    byte[] hash          = digest.GetHash(rawData);

                    if (hash.Take(Difficulty).SequenceEqual(target))
                    {
                        lock (locker)
                        {
                            solutionNonce = nonce;
                            solutionHash  = hash;
                        }

                        tokenSource.Cancel();
                    }
                });
            }
            catch (OperationCanceledException)
            {
            }

            block.Nonce = solutionNonce ?? throw new MiningFailureException("Couldn't resolve block", block);
            block.Hash  = solutionHash;

            #endregion
        }