System.Net.Security.SecureChannel.Encrypt C# (CSharp) Method

Encrypt() private method

private Encrypt ( byte buffer, int offset, int size, byte &output, int &resultSize ) : SecurityStatusPal
buffer byte
offset int
size int
output byte
resultSize int
return SecurityStatusPal
        internal SecurityStatusPal Encrypt(byte[] buffer, int offset, int size, ref byte[] output, out int resultSize)
        {
            if (NetEventSource.IsEnabled)
            {
                NetEventSource.Enter(this, buffer, offset, size);
                NetEventSource.DumpBuffer(this, buffer, 0, Math.Min(buffer.Length, 128));
            }

            byte[] writeBuffer = output;

            try
            {
                if (offset < 0 || offset > (buffer == null ? 0 : buffer.Length))
                {
                    throw new ArgumentOutOfRangeException(nameof(offset));
                }

                if (size < 0 || size > (buffer == null ? 0 : buffer.Length - offset))
                {
                    throw new ArgumentOutOfRangeException(nameof(size));
                }

                resultSize = 0;
            }
            catch (Exception e) when (!ExceptionCheck.IsFatal(e))
            {
                NetEventSource.Fail(this, "Arguments out of range.");
                throw;
            }

            SecurityStatusPal secStatus = SslStreamPal.EncryptMessage(
                _securityContext,
                buffer,
                offset,
                size,
                _headerSize,
                _trailerSize,
                ref writeBuffer,
                out resultSize);

            if (secStatus.ErrorCode != SecurityStatusPalErrorCode.OK)
            {
                if (NetEventSource.IsEnabled) NetEventSource.Exit(this, $"ERROR {secStatus}");
            }
            else
            {
                output = writeBuffer;
                if (NetEventSource.IsEnabled) NetEventSource.Exit(this, $"OK data size:{resultSize}");
            }

            return secStatus;
        }