private void OnRequestFirstEncData(ActionCompletedUnit ou)
        {
            AddTraceLogItems(sendFirstEncData.SpecificResult.TraceLog);
            if (sendFirstEncData.Result.State == ActionStates.Completed)
            {
                COMMAND_CLASS_SECURITY.SECURITY_NONCE_REPORT cmd = sendFirstEncData.SpecificResult.Command;
                if (cmd.nonceByte != null && cmd.nonceByte.Count == 8)
                {
                    byte[] secondFragmentCmd = CommandToSecureSend.Skip(MaxBytesPerFrameSize).Take(MaxBytesPerFrameSize).ToArray();
                    COMMAND_CLASS_SECURITY.SECURITY_MESSAGE_ENCAPSULATION.Tproperties1 property = 0;
                    property.sequenceCounter = SequenceCounter;
                    property.sequenced       = 1;
                    property.secondFrame     = 1;
                    byte[] msg = _securityS0CryptoProvider.Encrypt(property, secondFragmentCmd, _securityManagerInfo.Network.NodeId, NodeId, cmd.nonceByte.ToArray());

                    COMMAND_CLASS_SECURITY.SECURITY_MESSAGE_ENCAPSULATION msgCmd = msg;
                    sendSecondEncData.Data = msgCmd;
                    //sendSecondEncData.OnHandledCallback = OnHandledCallback;
                    if (_securityManagerInfo.DelaysS0.ContainsKey(SecurityS0Delays.Command))
                    {
                        Thread.Sleep(_securityManagerInfo.DelaysS0[SecurityS0Delays.Command]);
                    }
                }
                else
                {
                    SetStateFailed(ou);
                }
            }
            else
            {
                SetStateFailed(ou);
            }
        }
Example #2
0
 private void OnNonceReport(ActionCompletedUnit ou)
 {
     AddTraceLogItems(requestNonce.SpecificResult.TraceLog);
     if (requestNonce.Result.State == ActionStates.Completed)
     {
         COMMAND_CLASS_SECURITY.SECURITY_NONCE_REPORT cmd = requestNonce.SpecificResult.Command;
         "NONCE REPORT {0}"._DLOG(requestNonce.SpecificResult.Command.GetHex());
         if (cmd.nonceByte != null && cmd.nonceByte.Count == 8)
         {
             byte[] msg = _securityS0CryptoProvider.Encrypt(0, CommandToSecureSend, SrcNodeId, DestNodeId, cmd.nonceByte.ToArray());
             sendEncData.Data = msg;
             //sendEncData.OnHandledCallback = OnHandledCallback;
             if (_securityManagerInfo.DelaysS0.ContainsKey(SecurityS0Delays.Command))
             {
                 Thread.Sleep(_securityManagerInfo.DelaysS0[SecurityS0Delays.Command]);
             }
         }
         else
         {
             SetStateFailed(ou);
         }
     }
     else
     {
         SetStateFailed(ou);
     }
 }