Ejemplo n.º 1
0
        public ShadowosocksAeadCipher(string password, ValueTuple <int, int> key_salt_size, NonceLength nonceLength = NonceLength.LEN_12, ILogger logger = null)
            : base(password)
        {
            _keySize_SaltSize = key_salt_size;
            _nonceLength      = nonceLength;
            _nonceZero        = new byte[(int)_nonceLength];
            _logger           = logger;

            _masterKeyBytes = MasterKeyGenerator.PasswordToKey(password, _keySize_SaltSize.Item1);

            _logger?.LogInformation($"ShadowosocksAeadCipher ctor " +
                                    $"_keySize_SaltSize={_keySize_SaltSize.Item1},{_keySize_SaltSize.Item2}");
            _tcpCtx加密 = new TcpCipherContext(_keySize_SaltSize.Item1, _keySize_SaltSize.Item2, (int)_nonceLength);
            _tcpCtx解密 = new TcpCipherContext(_keySize_SaltSize.Item1, _keySize_SaltSize.Item2, (int)_nonceLength);
        }
Ejemplo n.º 2
0
        public AeadChaChaPoly1305(string password, ValueTuple <int, int> key_salt_size, NonceLength nonceLength = NonceLength.LEN_12, ILogger logger = null)
            : base(password, key_salt_size, nonceLength, logger)
        {
            if (null == MemoryStreamManager)
            {
                int blockSize           = 1024;
                int largeBufferMultiple = 2048 * 16;
                int maxBufferSize       = 16 * largeBufferMultiple;

                var manager = new RecyclableMemoryStreamManager(blockSize,
                                                                largeBufferMultiple,
                                                                maxBufferSize);

                //manager.GenerateCallStacks = true;
                manager.AggressiveBufferReturn    = true;
                manager.MaximumFreeLargePoolBytes = maxBufferSize * 4 * 5;
                manager.MaximumFreeSmallPoolBytes = blockSize * 1024 * 5;

                MemoryStreamManager = manager;
            }
        }