Пример #1
0
        private string TestTran(string input, AHostCommand HC)
        {
            MessageResponse retMsg;

            Message.Message msg = new Message.Message(input);

            string trailingChars = "";

            if (ExpectTrailers())
            {
                trailingChars = msg.GetTrailers();
            }

            HC.AcceptMessage(msg);

            if (HC.XMLParseResult != ErrorCodes.ER_00_NO_ERROR)
            {
                retMsg = new MessageResponse();
                retMsg.AddElement(HC.XMLParseResult);
            }
            else
            {
                retMsg = HC.ConstructResponse();
            }

            retMsg.AddElement(trailingChars);

            HC.Terminate();
            HC = null;
            return(retMsg.MessageData);
        }
Пример #2
0
        public override MessageResponse ConstructResponse()
        {
            MessageResponse mr = new MessageResponse();

            Log.Logger.MajorInfo("HSM");
            mr.AddElement(ErrorCodes.ER_00_NO_ERROR);
            return(mr);
        }
Пример #3
0
        public override MessageResponse ConstructResponse()
        {
            MessageResponse mr = new MessageResponse();

            if (!IsInAuthorizedState())
            {
                Log.Logger.MajorInfo("Exiting from AUTHORIZED state");
            }
            else
            {
                Log.Logger.MajorInfo("Already out of the AUTHORIZED state");
            }
            Resources.UpdateResource(Resources.AUTHORIZED_STATE, false);
            mr.AddElement(ErrorCodes.ER_00_NO_ERROR);
            return(mr);
        }
Пример #4
0
        public override MessageResponse ConstructResponse()
        {
            MessageResponse mr = new MessageResponse();

            mr.AddElement(ErrorCodes.ER_00_NO_ERROR);

            if (_modeFlag == "00")
            {
                mr.AddElement("3");
                mr.AddElement("1");
                mr.AddElement(Convert.ToInt32(Resources.GetResource(Resources.MAX_CONS)).ToString());
                mr.AddElement(Convert.ToString(Resources.GetResource(Resources.FIRMWARE_NUMBER)));
                mr.AddElement("0");
                mr.AddElement(Convert.ToString(Resources.GetResource(Resources.DSP_FIRMWARE_NUMBER)));
            }
            return(mr);
        }
Пример #5
0
        public override MessageResponse ConstructResponse()
        {
            MessageResponse mr = new MessageResponse();

            LMKPairs.LMKPair LMKKeyPair;
            string           var = "";

            KeySchemeTable.KeyScheme ks     = KeySchemeTable.KeyScheme.Unspecified;
            KeySchemeTable.KeyScheme zmk_ks = KeySchemeTable.KeyScheme.Unspecified;

            if (!ValidateKeyTypeCode(_keyType, out LMKKeyPair, ref var, ref mr))
            {
                return(mr);
            }

            if (!ValidateKeySchemeCode(_keyScheme, ref ks, ref mr))
            {
                return(mr);
            }

            if (_zmkScheme != "")
            {
                if (!ValidateKeySchemeCode(_zmkScheme, ref zmk_ks, ref mr))
                {
                    return(mr);
                }
            }

            if (!ValidateFunctionRequirement(KeyTypeTable.KeyFunction.Generate, LMKKeyPair, var, mr))
            {
                return(mr);
            }

            string rndKey      = Utility.CreateRandomKey(ks);
            string cryptRndKey = Utility.EncryptUnderLMK(rndKey, ks, LMKKeyPair, var);
            string chkVal      = TripleDES.TripleDESEncrypt(new HexKey(rndKey), Constants.ZEROES);

            Log.Logger.MinorInfo("Key generated (clear): " + rndKey);
            Log.Logger.MinorInfo("Key generated (LMK): " + cryptRndKey);
            Log.Logger.MinorInfo("Check value: " + chkVal.Substring(0, 6));

            string clearZMK;
            string cryptUnderZMK = "";

            if (_zmk != "")
            {
                HexKey cryptZMK = new HexKey(_zmk);

                clearZMK = Utility.DecryptZMKEncryptedUnderLMK(cryptZMK.ToString(), cryptZMK.Scheme, 0);

                if (!Utility.IsParityOK(clearZMK, Utility.ParityCheck.OddParity))
                {
                    mr.AddElement(ErrorCodes.ER_10_SOURCE_KEY_PARITY_ERROR);
                    return(mr);
                }

                cryptUnderZMK = Utility.EncryptUnderZMK(clearZMK, rndKey, zmk_ks);

                Log.Logger.MinorInfo("ZMK (clear): " + clearZMK);
                Log.Logger.MinorInfo("Key under ZMK: " + cryptUnderZMK);
            }

            mr.AddElement(ErrorCodes.ER_00_NO_ERROR);
            mr.AddElement(cryptRndKey);
            mr.AddElement(cryptUnderZMK);
            mr.AddElement(chkVal.Substring(0, 6));

            return(mr);
        }