Пример #1
0
        public UsernamePasswordRequest(UNameField uName, PasswdField passwd)
        {
            Ver    = AuthVerField.Version1;
            UName  = Guard.NotNull(nameof(uName), uName);
            Passwd = Guard.NotNull(nameof(passwd), passwd);

            var pLen = new PLenField();
            var uLen = new ULenField();

            pLen.FromPasswdField(passwd);
            uLen.FromUNameField(uName);
            PLen = pLen;
            ULen = uLen;
        }
        public override void FromBytes(byte[] bytes)
        {
            Guard.NotNullOrEmpty(nameof(bytes), bytes);
            Guard.InRangeAndNotNull($"{nameof(bytes)}.{nameof(bytes.Length)}", bytes.Length, 6, 513);

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

            ULen = new ULenField();
            ULen.FromByte(bytes[1]);

            UName = new UNameField();
            UName.FromBytes(bytes.Skip(2).Take(ULen.Value).ToArray());

            PLen = new PLenField();
            PLen.FromByte(bytes[1 + ULen.Value]);
            int expectedPlenValue = bytes.Length - 3 + ULen.Value;

            if (PLen.Value != expectedPlenValue)
            {
                throw new FormatException($"{nameof(PLen)}.{nameof(PLen.Value)} must be {nameof(bytes)}.{nameof(bytes.Length)} - 3 + {nameof(ULen)}.{nameof(ULen.Value)} = {expectedPlenValue}. Actual: {PLen.Value}.");
            }
            Passwd.FromBytes(bytes.Skip(3 + ULen.Value).ToArray());
        }