public void TestDefaultOldLmks()
        {
            LmkStorage.LmkStorageFile = "nofile.txt";
            LmkStorage.GenerateTestLmks(false);

            LmkStorage.UseOldLmkStorage = true;

            Assert.AreEqual("101010101010101F7902CD1FD36EF8BA", LmkStorage.Lmk(LmkPair.Pair00_01));
            Assert.AreEqual("202020202020202F3131313131313131", LmkStorage.Lmk(LmkPair.Pair02_03));
            Assert.AreEqual("404040404040404F5151515151515151", LmkStorage.Lmk(LmkPair.Pair04_05));
            Assert.AreEqual("616161616161616E7070707070707070", LmkStorage.Lmk(LmkPair.Pair06_07));
            Assert.AreEqual("808080808080808F9191919191919191", LmkStorage.Lmk(LmkPair.Pair08_09));
            Assert.AreEqual("A1A1A1A1A1A1A1AEB0B0B0B0B0B0B0B0", LmkStorage.Lmk(LmkPair.Pair10_11));
            Assert.AreEqual("C1C101010101010ED0D0010101010101", LmkStorage.Lmk(LmkPair.Pair12_13));
            Assert.AreEqual("E0E001010101010EF1F1010101010101", LmkStorage.Lmk(LmkPair.Pair14_15));
            Assert.AreEqual("1C587F1C13924FFE0101010101010101", LmkStorage.Lmk(LmkPair.Pair16_17));
            Assert.AreEqual("010101010101010E0101010101010101", LmkStorage.Lmk(LmkPair.Pair18_19));
            Assert.AreEqual("020202020202020E0404040404040404", LmkStorage.Lmk(LmkPair.Pair20_21));
            Assert.AreEqual("070707070707070E1010101010101010", LmkStorage.Lmk(LmkPair.Pair22_23));
            Assert.AreEqual("131313131313131F1515151515151515", LmkStorage.Lmk(LmkPair.Pair24_25));
            Assert.AreEqual("161616161616161F1919191919191919", LmkStorage.Lmk(LmkPair.Pair26_27));
            Assert.AreEqual("1A1A1A1A1A1A1A1F1C1C1C1C1C1C1C1C", LmkStorage.Lmk(LmkPair.Pair28_29));
            Assert.AreEqual("232323232323232F2525252525252525", LmkStorage.Lmk(LmkPair.Pair30_31));
            Assert.AreEqual("262626262626262F2929292929292929", LmkStorage.Lmk(LmkPair.Pair32_33));
            Assert.AreEqual("2A2A2A2A2A2A2A2F2C2C2C2C2C2C2C2C", LmkStorage.Lmk(LmkPair.Pair34_35));
            Assert.AreEqual("2F2F2F2F2F2F2FFE3131313131313131", LmkStorage.Lmk(LmkPair.Pair36_37));
            Assert.AreEqual("010101010101010E0101010101010101", LmkStorage.Lmk(LmkPair.Pair38_39));

            Assert.IsTrue(LmkStorage.CheckLmkStorage());

            LmkStorage.UseOldLmkStorage = false;
        }
        public void TestDefaultLmks()
        {
            LmkStorage.LmkStorageFile = "nofile.txt";
            LmkStorage.GenerateTestLmks(false);

            Assert.AreEqual("01010101010101017902CD1FD36EF8BA", LmkStorage.Lmk(LmkPair.Pair00_01));
            Assert.AreEqual("20202020202020203131313131313131", LmkStorage.Lmk(LmkPair.Pair02_03));
            Assert.AreEqual("40404040404040405151515151515151", LmkStorage.Lmk(LmkPair.Pair04_05));
            Assert.AreEqual("61616161616161617070707070707070", LmkStorage.Lmk(LmkPair.Pair06_07));
            Assert.AreEqual("80808080808080809191919191919191", LmkStorage.Lmk(LmkPair.Pair08_09));
            Assert.AreEqual("A1A1A1A1A1A1A1A1B0B0B0B0B0B0B0B0", LmkStorage.Lmk(LmkPair.Pair10_11));
            Assert.AreEqual("C1C1010101010101D0D0010101010101", LmkStorage.Lmk(LmkPair.Pair12_13));
            Assert.AreEqual("E0E0010101010101F1F1010101010101", LmkStorage.Lmk(LmkPair.Pair14_15));
            Assert.AreEqual("1C587F1C13924FEF0101010101010101", LmkStorage.Lmk(LmkPair.Pair16_17));
            Assert.AreEqual("01010101010101010101010101010101", LmkStorage.Lmk(LmkPair.Pair18_19));
            Assert.AreEqual("02020202020202020404040404040404", LmkStorage.Lmk(LmkPair.Pair20_21));
            Assert.AreEqual("07070707070707071010101010101010", LmkStorage.Lmk(LmkPair.Pair22_23));
            Assert.AreEqual("13131313131313131515151515151515", LmkStorage.Lmk(LmkPair.Pair24_25));
            Assert.AreEqual("16161616161616161919191919191919", LmkStorage.Lmk(LmkPair.Pair26_27));
            Assert.AreEqual("1A1A1A1A1A1A1A1A1C1C1C1C1C1C1C1C", LmkStorage.Lmk(LmkPair.Pair28_29));
            Assert.AreEqual("23232323232323232525252525252525", LmkStorage.Lmk(LmkPair.Pair30_31));
            Assert.AreEqual("26262626262626262929292929292929", LmkStorage.Lmk(LmkPair.Pair32_33));
            Assert.AreEqual("2A2A2A2A2A2A2A2A2C2C2C2C2C2C2C2C", LmkStorage.Lmk(LmkPair.Pair34_35));
            Assert.AreEqual("2F2F2F2F2F2F2F2F3131313131313131", LmkStorage.Lmk(LmkPair.Pair36_37));
            Assert.AreEqual("01010101010101010101010101010101", LmkStorage.Lmk(LmkPair.Pair38_39));

            Assert.IsTrue(LmkStorage.CheckLmkStorage());
        }
Exemple #3
0
 public void Setup()
 {
     CommandExplorer.Discover();
     LmkStorage.LmkStorageFile = "nofile.txt";
     LmkStorage.GenerateTestLmks(false);
     ConfigHelpers.SetAuthorizedState(true);
 }
Exemple #4
0
 public void Setup()
 {
     LmkStorage.LmkStorageFile = "nofile.txt";
     LmkStorage.GenerateTestLmks(false);
 }
Exemple #5
0
        /// <summary>
        /// Process a message.
        /// </summary>
        /// <param name="message">Byte array with request message.</param>
        /// <param name="resp">Host command response.</param>
        /// <param name="respAfterIo">Host command response after doing printer I/O.</param>
        public void ProcessMessage(byte[] message, out StreamResponse resp, out StreamResponse respAfterIo)
        {
            DumpMessage(message, "Incoming message");

            var msg = new StreamMessage(message);

            resp        = null;
            respAfterIo = null;

            try
            {
                if (msg.CharsLeft < Properties.Settings.Default.HeaderLength + 2)
                {
                    _log.ErrorFormat("Too small message, must be at least {0} bytes long",
                                     Properties.Settings.Default.HeaderLength + 2);
                    return;
                }

                var msgHeader  = msg.Substring(Properties.Settings.Default.HeaderLength);
                var code       = msg.Substring(2);
                var msgTrailer = Properties.Settings.Default.ExpectTrailers ? msg.GetTrailer() : string.Empty;

                _log.DebugFormat("Header {0}, command code {1}", msgHeader, code);

                var command = (HostCommand)CommandExplorer.GetCommand(CommandType.Host, code);
                if (command == null)
                {
                    _log.ErrorFormat("No implementor for {0}.", code);
                    return;
                }

                if (Properties.Settings.Default.CheckLMKParity && !LmkStorage.CheckLmkStorage())
                {
                    _log.Error("LMK storage check failed");
                    resp = new StreamResponse();
                    resp.Append(ErrorCodes.ER_13_MASTER_KEY_PARITY_ERROR);
                    resp.AppendFront(command.ResponseCode);
                    resp.AppendFront(msgHeader);
                    resp.Append(msgTrailer);
                    return;
                }

                _log.Debug("Instantiating command...");
                var o = (AHostCommand)Activator.CreateInstance(command.DeclaringType);

                _log.Debug("Calling AcceptMessage()...");
                o.AcceptMessage(msg);

                _log.Debug(o.DumpFields());

                if (o.XmlParseResult != ErrorCodes.ER_00_NO_ERROR)
                {
                    _log.DebugFormat("Error code {0} return while parsing message", o.XmlParseResult);
                    resp = new StreamResponse();
                    resp.Append(o.XmlParseResult);
                }
                else
                {
                    _log.Debug("Calling ConstructResponse()...");
                    resp = o.ConstructResponse();

                    _log.Debug("Calling ConstructResponseAfterIo()...");
                    respAfterIo = o.ConstructResponseAfterIo();
                }

                resp.AppendFront(command.ResponseCode);
                resp.AppendFront(msgHeader);
                resp.Append(msgTrailer);

                DumpMessage(resp.GetBytes(), "Response message");

                if (respAfterIo != null && !string.IsNullOrEmpty(command.ResponseCodeAfterIo))
                {
                    respAfterIo.AppendFront(command.ResponseCodeAfterIo);
                    respAfterIo.AppendFront(msgHeader);
                    respAfterIo.Append(msgTrailer);
                    DumpMessage(respAfterIo.GetBytes(), "Response message after I/O");
                }

                if (!string.IsNullOrEmpty(o.PrinterData))
                {
                    _log.InfoFormat("Printer data\r\n{0}", o.PrinterData);
                }
            }
            catch (Exception ex)
            {
                _log.Debug("Exception while processing message", ex);
                resp        = null;
                respAfterIo = null;
            }
        }