示例#1
0
        public byte[] CalcAu3MAC(MaslAu3Frame frame, uint destAddress)
        {
            using (var memStream = new MemoryStream(30))
            {
                // L
                memStream.WriteByte(0x00);
                memStream.WriteByte(0x14);

                // DA
                memStream.WriteByte((byte)((destAddress >> 16) & 0xFF));
                memStream.WriteByte((byte)((destAddress >> 8) & 0xFF));
                memStream.WriteByte((byte)((destAddress) & 0xFF));

                // ETY+MTI+DF
                memStream.WriteByte(frame.GetHeaderByte());

                // RB + RA
                memStream.Write(_macCalc.RandomB, 0, _macCalc.RandomB.Length);
                memStream.Write(_macCalc.RandomA, 0, _macCalc.RandomA.Length);

                var mac = _macCalc.CalcMac(memStream.ToArray());

                return(mac);
            }
        }
示例#2
0
        public byte[] BuildAu3Packet()
        {
            var frame = new MaslAu3Frame();

            frame.MAC = this.CalcAu3MAC(frame, _rsspEndPoint.RemoteID);

            return(frame.GetBytes());
        }
示例#3
0
        public void Test1()
        {
            var mac    = new byte[] { 0x2e, 0x93, 0x89, 0x47, 0x97, 0xec, 0x28, 0x74 };
            var frame1 = new MaslAu3Frame();

            frame1.MAC = mac;

            var bytes = frame1.GetBytes();

            var frame2 = new MaslAu3Frame();

            frame2.ParseBytes(bytes, 0, bytes.Length);

            Assert.AreEqual(frame1.DeviceType, frame2.DeviceType);
            Assert.AreEqual(frame1.Direction, frame2.Direction);
            Assert.AreEqual(frame1.FrameType, frame2.FrameType);
            CollectionAssert.AreEqual(frame1.MAC, frame2.MAC);
        }
示例#4
0
 public override void HandleAu3Frame(MaslAu3Frame frame)
 {
     throw new SequenceIntegrityException();
 }
示例#5
0
 public override void HandleAu3Frame(MaslAu3Frame frame)
 {
     throw new NotArObtainedAfterAu3Exception();
 }
 public override void HandleAu3Frame(MaslAu3Frame frame)
 {
     throw new MaslException(MaslErrorCode.SequenceIntegrityFailure);
 }
示例#7
0
 public virtual void HandleAu3Frame(MaslAu3Frame frame)
 {
     LogUtility.Error(string.Format("{0}: {1}.{2} not implement!",
                                    this.Context.RsspEP.ID, this.GetType().Name,
                                    new StackFrame(0).GetMethod().Name.Split('.').Last()));
 }