/// <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)); }
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; }
// 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; }
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; }
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 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); }
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 }