Пример #1
0
 public byte[] TestOverrideMessageEncapsulation(SinglecastKey sckey, SpanTable spanTable, SecurityS2CryptoProvider _securityS2CryptoProvider, SubstituteSettings substituteSettings, byte nodeId, byte[] data, InvariantPeerNodeId peerNodeId, Extensions extensions, byte[] encryptedMsg, byte[] initData)
 {
     byte[] ret = initData;
     if (TestFramesS2.ContainsKey(SecurityS2TestFrames.MessageEncapsulation))
     {
         var testData  = data;
         var testFrame = TestFramesS2[SecurityS2TestFrames.MessageEncapsulation];
         if (testFrame.DelaySpecified && testFrame.Delay > 0)
         {
             Thread.Sleep(testFrame.Delay);
         }
         if (testFrame.Command != null)
         {
             testData = testFrame.Command;
         }
         if (!testFrame.IsEncryptedSpecified || testFrame.IsEncrypted)
         {
             if (testFrame.IsTemp)
             {
                 if (testFrame.NetworkKey != null)
                 {
                     ActivateNetworkKeyS2CustomForNode(peerNodeId, testFrame.IsTemp, testFrame.NetworkKey);
                 }
                 else
                 {
                     ActivateNetworkKeyS2CustomForNode(peerNodeId, testFrame.IsTemp, GetActualNetworkKeyS2Temp());
                 }
             }
             else
             {
                 if (testFrame.NetworkKey != null)
                 {
                     ActivateNetworkKeyS2CustomForNode(peerNodeId, testFrame.IsTemp, testFrame.NetworkKey);
                 }
             }
             ret = _securityS2CryptoProvider.EncryptSinglecastCommand(sckey, spanTable, Network.NodeId, nodeId, Network.HomeId, testData, extensions, substituteSettings);
         }
         else
         {
             var msgEncapCryptedData = (COMMAND_CLASS_SECURITY_2.SECURITY_2_MESSAGE_ENCAPSULATION)encryptedMsg;
             msgEncapCryptedData.ccmCiphertextObject = new List <byte>(testData);
             ret = msgEncapCryptedData;
         }
     }
     return(ret);
 }
Пример #2
0
 internal SendDataSecureS2Task(SecurityManagerInfo securityManagerInfo,
                               SecurityS2CryptoProvider securityS2CryptoProvider, SinglecastKey sckey, SpanTable spanTable, MpanTable mpanTable,
                               byte nodeId,
                               byte[] data,
                               TransmitOptions txOptions)
     : base(false, null, false)
 {
     _securityManagerInfo      = securityManagerInfo;
     _securityS2CryptoProvider = securityS2CryptoProvider;
     _mpanTable = mpanTable;
     _spanTable = spanTable;
     _sckey     = sckey;
     SubstituteSettings.SetFlag(SubstituteFlags.DenySecurity);
     CommandToSecureSend = data;
     NodeId      = nodeId;
     _peerNodeId = new InvariantPeerNodeId(_securityManagerInfo.Network.NodeId, NodeId);
     TxOptions   = txOptions;
     _securityTestSettingsService = new SecurityTestSettingsService(_securityManagerInfo, false);
 }
Пример #3
0
 protected override byte[] GetPersonalizationArray(SinglecastKey sckey, SpanContainer spanContainer)
 {
     byte[] senderNonce = null;
     if (_securityManagerInfo.TestReceiverEntropyS2 != null)
     {
         senderNonce = GetRandomData();
         spanContainer.SetReceiversNonceState(_securityManagerInfo.TestReceiverEntropyS2);
         spanContainer.InstantiateWithSenderNonce(senderNonce, sckey.Personalization);
         if (_securityManagerInfo.NumOfTestReceiverEntropyUsage > 0)
         {
             _securityManagerInfo.NumOfTestReceiverEntropyUsage--;
             if (_securityManagerInfo.NumOfTestReceiverEntropyUsage == 0)
             {
                 _securityManagerInfo.SetTestReceiverEntropyS2(null);
             }
         }
     }
     else
     {
         senderNonce = base.GetPersonalizationArray(sckey, spanContainer);
     }
     return(senderNonce);
 }