コード例 #1
0
        /// <param name="bytes">2 bytes are required to be passed in.</param>
        public MethodSelectionResponse(byte[] bytes)
        {
            Guard.Same($"{nameof(bytes)}.{nameof(bytes.Length)}", 2, bytes.Length);

            Ver    = new VerField(bytes[0]);
            Method = new MethodField(bytes[1]);
        }
コード例 #2
0
        public override void FromBytes(byte[] bytes)
        {
            Guard.NotNullOrEmpty(nameof(bytes), bytes);
            Guard.Same($"{nameof(bytes)}.{nameof(bytes.Length)}", 2, bytes.Length);

            Ver    = new VerField(bytes[0]);
            Method = new MethodField(bytes[1]);
        }
コード例 #3
0
        public TorSocks5Response(byte[] bytes)
        {
            Guard.NotNullOrEmpty(nameof(bytes), bytes);
            Guard.MinimumAndNotNull($"{nameof(bytes)}.{nameof(bytes.Length)}", bytes.Length, smallest: 6);

            Ver     = new VerField(bytes[0]);
            Rep     = new RepField(bytes[1]);
            Rsv     = new RsvField(bytes[2]);
            Atyp    = new AtypField(bytes[3]);
            BndAddr = new AddrField(bytes[4..^ 2]);
コード例 #4
0
        public TorSocks5Request(byte[] bytes)
        {
            Guard.NotNullOrEmpty(nameof(bytes), bytes);
            Guard.MinimumAndNotNull($"{nameof(bytes)}.{nameof(bytes.Length)}", bytes.Length, 6);

            Ver     = new VerField(bytes[0]);
            Cmd     = new CmdField(bytes[1]);
            Rsv     = new RsvField(bytes[2]);
            Atyp    = new AtypField(bytes[3]);
            DstAddr = new AddrField(bytes[4..^ 2]);
コード例 #5
0
        public VersionMethodRequest(byte[] bytes)
        {
            Guard.NotNullOrEmpty(nameof(bytes), bytes);
            Guard.InRangeAndNotNull($"{nameof(bytes)}.{nameof(bytes.Length)}", bytes.Length, 3, 257);

            Ver      = new VerField(bytes[0]);
            NMethods = new NMethodsField(bytes[1]);

            if (NMethods.Value != bytes.Length - 2)
            {
                throw new FormatException($"{nameof(NMethods)}.{nameof(NMethods.Value)} must be {nameof(bytes)}.{nameof(bytes.Length)} - 2 = {bytes.Length - 2}. Actual: {NMethods.Value}.");
            }

            Methods = new MethodsField(bytes.Skip(2).ToArray());
        }
コード例 #6
0
        public override void FromBytes(byte[] bytes)
        {
            Guard.NotNullOrEmpty(nameof(bytes), bytes);
            Guard.MinimumAndNotNull($"{nameof(bytes)}.{nameof(bytes.Length)}", bytes.Length, 6);

            Ver = new VerField(bytes[0]);

            Rep = new RepField();
            Rep.FromByte(bytes[1]);

            Rsv = new RsvField();
            Rsv.FromByte(bytes[2]);

            Atyp = new AtypField(bytes[3]);

            BndAddr = new AddrField();
            BndAddr.FromBytes(bytes[4..^ 2]);
コード例 #7
0
        public override void FromBytes(byte[] bytes)
        {
            Guard.NotNullOrEmpty(nameof(bytes), bytes);
            Guard.MinimumAndNotNull($"{nameof(bytes)}.{nameof(bytes.Length)}", bytes.Length, 6);

            Ver = new VerField();
            Ver.FromByte(bytes[0]);

            Cmd = new CmdField();
            Cmd.FromByte(bytes[1]);

            Rsv = new RsvField();
            Rsv.FromByte(bytes[2]);

            Atyp = new AtypField();
            Atyp.FromByte(bytes[3]);

            DstAddr = new AddrField();
            DstAddr.FromBytes(bytes.Skip(4).Take(bytes.Length - 4 - 2).ToArray());

            DstPort = new PortField();
            DstPort.FromBytes(bytes.Skip(bytes.Length - 2).ToArray());
        }