예제 #1
0
        public             RawEntry24[] GetRawEntries()
        {
            List <RawEntry24> re = new List <RawEntry24>();
            int pos = 0;

            while (pos < Length)
            {
                byte[] byteArray = BinaryUtil.Extract(Data, pos, 3);
                uint   len       = (uint)(
                    byteArray[0] | (byteArray[1] << 8) | (byteArray[2] << 16) | (0 << 24));

                pos += 3;
                byte[]     d = BinaryUtil.Extract(Data, pos, (int)len);
                RawEntry24 r = new RawEntry24(d);
                pos += (int)r.Length;
                re.Add(r);
            }
            return(re.ToArray());
        }
예제 #2
0
        public ReplayHeader(byte[] data)
        {
            int pos = 0;

            _length       = (ushort)data.Length;
            ClientVersion = Version64.Parse(BitConverter.ToInt64(data, 0));  // 8 bytes
            ServerVersion = Version24.Parse(BinaryUtil.Extract(data, 8, 3)); // 3 bytes
            byte blen = data[11];

            ObserverKey = new RawEntry8(BinaryUtil.Extract(data, 12, (int)blen)); // 1+blen bytes
            pos         = 12 + blen;
            if (data.Length > pos)
            {
                ushort len = BitConverter.ToUInt16(data, pos);
                pos        += 2;
                Signature   = new RawEntry16(BinaryUtil.Extract(data, pos, (int)len));
                pos        += len;
                len         = BitConverter.ToUInt16(data, pos);
                pos        += 2;
                Certificate = new RawEntry16(BinaryUtil.Extract(data, pos, (int)len));
                pos        += len;
            }
        }