Пример #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);
        }
        public ShadowosocksAeadCipher(string password, ValueTuple <int, int> key_salt_size, ILogger logger = null)
            : base(password)
        {
            _keySize_SaltSize = key_salt_size;
            _logger           = logger;

            _hkdf           = new HkdfBytesGenerator(new Sha1Digest());
            _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);
            _tcpCtx解密 = new TcpCipherContext(_keySize_SaltSize.Item1, _keySize_SaltSize.Item2);

            _tcp_decrypt_crumb = SmartBuffer.Rent(LEN_TCP_OVERHEAD_PER_CHUNK * 2);
        }