Renci.SshNet.Security.Cryptography.Ciphers.Arc4Cipher.SetKey C# (CSharp) Method

SetKey() private method

private SetKey ( byte keyBytes ) : void
keyBytes byte
return void
        private void SetKey(byte[] keyBytes)
        {
            _workingKey = keyBytes;

            _x = 0;
            _y = 0;

            if (_engineState == null)
            {
                _engineState = new byte[STATE_LENGTH];
            }

            // reset the state of the engine
            for (var i = 0; i < STATE_LENGTH; i++)
            {
                _engineState[i] = (byte) i;
            }

            var i1 = 0;
            var i2 = 0;

            for (var i = 0; i < STATE_LENGTH; i++)
            {
                i2 = ((keyBytes[i1] & 0xff) + _engineState[i] + i2) & 0xff;
                // do the byte-swap inline
                var tmp = _engineState[i];
                _engineState[i] = _engineState[i2];
                _engineState[i2] = tmp;
                i1 = (i1 + 1) % keyBytes.Length;
            }
        }
    }