protected override void action_QKD(IAutomataStateFinite state)
 {
     //// BB84 GENERATE COMMON KEY
     //IBB84Protocol BB84Protocol = BB84ProtocolFactory.generateBB84Protocol();
     //BB84Protocol.AgentMaster = Master.AgentBB84;
     //BB84Protocol.AgentSlave = this.AgentBB84;
     //BB84Protocol.BeforeStart += new EventHandlerProtocol(PropagateBB84BeforeStart);
     //BB84Protocol.AfterFinish += new EventHandlerProtocol(PropagateBB84AfterFinish);
     //BB84Protocol.GenerationStep1BeforeStart += new EventHandlerProtocol(PropagateBB84GenerationStep1BeforeStart);
     //BB84Protocol.GenerationStep1AfterFinish += new EventHandlerProtocol(PropagateBB84GenerationStep1AfterFinish);
     //BB84Protocol.GenerationStep2BeforeStart += new EventHandlerProtocol(PropagateBB84GenerationStep2BeforeStart);
     //BB84Protocol.GenerationStep2AfterFinish += new EventHandlerProtocol(PropagateBB84GenerationStep2AfterFinish);
     //BB84Protocol.GenerationStep3BeforeStart += new EventHandlerProtocol(PropagateBB84GenerationStep3BeforeStart);
     //BB84Protocol.GenerationStep3AfterFinish += new EventHandlerProtocol(PropagateBB84GenerationStep3AfterFinish);
     //BB84Protocol.VerifyKeyBeforeStart += new EventHandlerProtocol(PropagateBB84VerifyKeyBeforeStart);
     //BB84Protocol.VerifyKeyAfterFinish += new EventHandlerProtocol(PropagateBB84VerifyKeyAfterFinish);
     //BB84Protocol.ComparisonStep1BeforeStart += new EventHandlerProtocol(PropagateBB84ComparisonStep1BeforeStart);
     //BB84Protocol.ComparisonStep1AfterFinish += new EventHandlerProtocol(PropagateBB84ComparisonStep1AfterFinish);
     //BB84Protocol.ComparisonStep2BeforeStart += new EventHandlerProtocol(PropagateBB84ComparisonStep2BeforeStart);
     //BB84Protocol.ComparisonStep2AfterFinish += new EventHandlerProtocol(PropagateBB84ComparisonStep2AfterFinish);
     //BB84Protocol.ComparisonStep3BeforeStart += new EventHandlerProtocol(PropagateBB84ComparisonStep3BeforeStart);
     //BB84Protocol.ComparisonStep3AfterFinish += new EventHandlerProtocol(PropagateBB84ComparisonStep3AfterFinish);
     //BB84Protocol.DecisionBeforeStart += new EventHandlerProtocol(PropagateBB84DecisionBeforeStart);
     //BB84Protocol.DecisionAfterFinish += new EventHandlerProtocol(PropagateBB84DecisionAfterFinish);
     //BB84Protocol.OnBurstLogStart += new EventHandlerProtocol(PropagateOnBurstLogStart);
     //BB84Protocol.OnBurstLogFinish += new EventHandlerProtocol(PropagateOnBurstLogFinish);
     //BB84ProtocolFactory.generateSecretKey(BB84Protocol, keySize);
 }
 protected override void action_Encoding(IAutomataStateFinite state)
 {
     //// MASTER ENCODES
     //byte[] masterKey = ArrayTools.BoolArrayToByteArray(BB84Protocol.AgentMaster.SecretSecureKey);
     //IVernamCryptosystem masterVernam = CryptosystemFactory.generateVernam(masterKey);
     //byte[] materData = ArrayTools.EncodingASCII_StringToArrayByte(Master.TransmitData);
     //byte[] masterCiphered = masterVernam.Cipher(materData);
     //bool[] masterBoolEncoded = ArrayTools.ByteArrayToBoolArray(masterCiphered);
 }
 protected override void action_Decoding(IAutomataStateFinite state)
 {
     //// SLAVE DECODES
     //bool[] slaveBoolEncoded = this.AgentBurst.exportReceivedData();
     //byte[] slaveCiphered = ArrayTools.BoolArrayToByteArray(slaveBoolEncoded);
     //byte[] slaveKey = ArrayTools.BoolArrayToByteArray(BB84Protocol.AgentSlave.SecretSecureKey);
     //IVernamCryptosystem slaveVernam = CryptosystemFactory.generateVernam(slaveKey);
     //byte[] slaveData = slaveVernam.Decipher(slaveCiphered);
     //this.Buffer = ArrayTools.EncodingASCII_ArrayByteToString(slaveData);
 }
 public AutomataTransitionFiniteAbstract(IAutomataStateFinite statestart, IAutomataStateFinite stateend, params FiniteAutomataTransitionConditionDecision[] decisions)
     : base()
 {
     if (statestart.Automata != stateend.Automata) { new ExceptionAutomataFinite(); };
     _statestart = statestart;
     _stateend = stateend;
     _automata = statestart.Automata;
     _conditions = FactoryAutomataFinite.GenerateAutomataTransitionConditionCollection();
     Automata.Transitions.addObject(this);
     this.GenerateCondition(decisions);
 }
 protected override void action_Transmission(IAutomataStateFinite state)
 {
     //// DATA TRANSMISSION
     //IBurstProtocolAgent DataMaster = Master.AgentBurst;
     //IBurstProtocolAgent DataSlave = this.AgentBurst;
     //IBurstProtocol DataProtocol = BurstProtocolFactory.generateBurstProtocol();
     //DataMaster.Reset();
     //DataMaster.importTransmitData(masterBoolEncoded);
     //DataSlave.Reset();
     //DataProtocol.Master = DataMaster;
     //DataProtocol.Slave = DataSlave;
     //DataProtocol.BeforeStart += new EventHandlerProtocol(PropagateDataTransmissionBeforeStart);
     //DataProtocol.AfterFinish += new EventHandlerProtocol(PropagateDataTransmissionAfterFinish);
     ////DataProtocol.OnBurstLogStart += new EventHandlerProtocol(PropagateOnBurstLogStart);
     ////DataProtocol.OnBurstLogFinish += new EventHandlerProtocol(PropagateOnBurstLogFinish);
     //DataProtocol.Process();
 }
 protected override void action_Init(IAutomataStateFinite state)
 {
     //// STRING BAD; BOOL OK ;)
     //bool[] ASCIIBoolArray = ArrayTools.EncodingASCII_StringToArrayBool(this.Buffer);
     //int keySize = ASCIIBoolArray.Length; // debería ser múltiplo de 8
 }
 protected void eventExecuteAction(IAutomataStateFinite state)
 {
     string ID;
     if (state != null) { ID = state.ID; } else { ID = "<null>"; };
     TesterLog("eventExecuteAction", ID);
 }
 protected void InitBasic()
 {
     CheckInitialFinal();
     _state = FindInitialState();
     _active = true;
     DoOnStateEnter(State);
     if (State != null) { State.DoOnEnter(); }
     PerformExecution();
     Eval();
 }
 public void DoOnStateEnter(IAutomataStateFinite state)
 {
     if (OnStateEnter != null)
     {
         OnStateEnter(state);
     }
 }
 //private void action_Init(IFiniteAutomataState state)
 //{
 //    if ((Master == null) && (Slave == null))
 //    { throw new ProtocolException(); }
 //    DoBeforeStart();
 //    // STRING BAD; BOOL OK ;)
 //    bool[] ASCIIBoolArray = ArrayTools.EncodingASCII_StringToArrayBool(Master.TransmitData);
 //    int keySize = ASCIIBoolArray.Length; // debería ser múltiplo de 8
 //}
 //private void action_QKD(IFiniteAutomataState state)
 //{
 //    // BB84 GENERATE COMMON KEY
 //    IBB84Protocol BB84Protocol = BB84ProtocolFactory.generateBB84Protocol();
 //    BB84Protocol.AgentMaster = Master.AgentBB84;
 //    BB84Protocol.AgentSlave = Slave.AgentBB84;
 //    BB84Protocol.BeforeStart += new EventHandlerProtocol(PropagateBB84BeforeStart);
 //    BB84Protocol.AfterFinish += new EventHandlerProtocol(PropagateBB84AfterFinish);
 //    BB84Protocol.GenerationStep1BeforeStart += new EventHandlerProtocol(PropagateBB84GenerationStep1BeforeStart);
 //    BB84Protocol.GenerationStep1AfterFinish += new EventHandlerProtocol(PropagateBB84GenerationStep1AfterFinish);
 //    BB84Protocol.GenerationStep2BeforeStart += new EventHandlerProtocol(PropagateBB84GenerationStep2BeforeStart);
 //    BB84Protocol.GenerationStep2AfterFinish += new EventHandlerProtocol(PropagateBB84GenerationStep2AfterFinish);
 //    BB84Protocol.GenerationStep3BeforeStart += new EventHandlerProtocol(PropagateBB84GenerationStep3BeforeStart);
 //    BB84Protocol.GenerationStep3AfterFinish += new EventHandlerProtocol(PropagateBB84GenerationStep3AfterFinish);
 //    BB84Protocol.VerifyKeyBeforeStart += new EventHandlerProtocol(PropagateBB84VerifyKeyBeforeStart);
 //    BB84Protocol.VerifyKeyAfterFinish += new EventHandlerProtocol(PropagateBB84VerifyKeyAfterFinish);
 //    BB84Protocol.ComparisonStep1BeforeStart += new EventHandlerProtocol(PropagateBB84ComparisonStep1BeforeStart);
 //    BB84Protocol.ComparisonStep1AfterFinish += new EventHandlerProtocol(PropagateBB84ComparisonStep1AfterFinish);
 //    BB84Protocol.ComparisonStep2BeforeStart += new EventHandlerProtocol(PropagateBB84ComparisonStep2BeforeStart);
 //    BB84Protocol.ComparisonStep2AfterFinish += new EventHandlerProtocol(PropagateBB84ComparisonStep2AfterFinish);
 //    BB84Protocol.ComparisonStep3BeforeStart += new EventHandlerProtocol(PropagateBB84ComparisonStep3BeforeStart);
 //    BB84Protocol.ComparisonStep3AfterFinish += new EventHandlerProtocol(PropagateBB84ComparisonStep3AfterFinish);
 //    BB84Protocol.DecisionBeforeStart += new EventHandlerProtocol(PropagateBB84DecisionBeforeStart);
 //    BB84Protocol.DecisionAfterFinish += new EventHandlerProtocol(PropagateBB84DecisionAfterFinish);
 //    BB84Protocol.OnBurstLogStart += new EventHandlerProtocol(PropagateOnBurstLogStart);
 //    BB84Protocol.OnBurstLogFinish += new EventHandlerProtocol(PropagateOnBurstLogFinish);
 //    BB84ProtocolFactory.generateSecretKey(BB84Protocol, keySize);
 //}
 //private void action_Encoding(IFiniteAutomataState state)
 //{
 //    // MASTER ENCODES
 //    byte[] masterKey = ArrayTools.BoolArrayToByteArray(BB84Protocol.AgentMaster.SecretSecureKey);
 //    IVernamCryptosystem masterVernam = CryptosystemFactory.generateVernam(masterKey);
 //    byte[] materData = ArrayTools.EncodingASCII_StringToArrayByte(Master.TransmitData);
 //    byte[] masterCiphered = masterVernam.Cipher(materData);
 //    bool[] masterBoolEncoded = ArrayTools.ByteArrayToBoolArray(masterCiphered);
 //}
 //private void action_Transmission(IFiniteAutomataState state)
 //{
 //    // DATA TRANSMISSION
 //    IBurstProtocolAgent DataMaster = Master.AgentBurst;
 //    IBurstProtocolAgent DataSlave = Slave.AgentBurst;
 //    IBurstProtocol DataProtocol = BurstProtocolFactory.generateBurstProtocol();
 //    DataMaster.Reset();
 //    DataMaster.importTransmitData(masterBoolEncoded);
 //    DataSlave.Reset();
 //    DataProtocol.Master = DataMaster;
 //    DataProtocol.Slave = DataSlave;
 //    DataProtocol.BeforeStart += new EventHandlerProtocol(PropagateDataTransmissionBeforeStart);
 //    DataProtocol.AfterFinish += new EventHandlerProtocol(PropagateDataTransmissionAfterFinish);
 //    //DataProtocol.OnBurstLogStart += new EventHandlerProtocol(PropagateOnBurstLogStart);
 //    //DataProtocol.OnBurstLogFinish += new EventHandlerProtocol(PropagateOnBurstLogFinish);
 //    DataProtocol.Process();
 //}
 //private void action_Decoding(IFiniteAutomataState state)
 //{
 //    // SLAVE DECODES
 //    bool[] slaveBoolEncoded = DataSlave.exportReceivedData();
 //    byte[] slaveCiphered = ArrayTools.BoolArrayToByteArray(slaveBoolEncoded);
 //    byte[] slaveKey = ArrayTools.BoolArrayToByteArray(BB84Protocol.AgentMaster.SecretSecureKey);
 //    IVernamCryptosystem slaveVernam = CryptosystemFactory.generateVernam(slaveKey);
 //    byte[] slaveData = slaveVernam.Decipher(slaveCiphered);
 //    Slave.ReceivedData = ArrayTools.EncodingASCII_ArrayByteToString(slaveData);
 //}
 private void beforeStart(IAutomataStateFinite state)
 {
     DoBeforeStart();
 }
 public AutomataTransitionFiniteBasic(IAutomataStateFinite statestart, IAutomataStateFinite stateend, params FiniteAutomataTransitionConditionDecision[] decisions)
     : base(statestart, stateend, decisions)
 {
 }
 protected void eventStateExit(IAutomataStateFinite state)
 {
     //TesterLog("eventStateExit", ID);
 }
 protected void eventExecuteAction(IAutomataStateFinite state)
 {
     //TesterLog("eventExecuteAction", ID);
 }
 public void state_Sending_OnExecution(IAutomataStateFinite state)
 {
     Transmit();
 }
 protected void eventStateEnter(IAutomataStateFinite state)
 {
     string ID;
     if (state != null) { ID = state.ID; } else { ID = "<null>"; };
     TesterLog("eventStateEnter", ID);
 }
 protected virtual void action_Decoding(IAutomataStateFinite state)
 {
     // SLAVE DECODES
 }
 protected virtual void action_Encoding(IAutomataStateFinite state)
 {
     // MASTER ENCODES
 }
 private void afterFinish(IAutomataStateFinite state)
 {
     DoAfterFinish();
 }
 protected virtual void action_Init(IAutomataStateFinite state)
 {
 }
 protected void eventStateExit(IAutomataStateFinite state)
 {
     string ID;
     if (state != null) { ID = state.ID; } else { ID = "<null>"; };
     TesterLog(DateTime.UtcNow.ToString("o"), "eventStateExit", ID);
 }
 protected virtual void action_QKD(IAutomataStateFinite state)
 {
     // BB84 GENERATE COMMON KEY
 }
 public void DoOnStateExit(IAutomataStateFinite state)
 {
     if (OnStateExit != null)
     {
         OnStateExit(state);
     }
 }
 protected virtual void action_Transmission(IAutomataStateFinite state)
 {
     // DATA TRANSMISSION
 }
 private void PerformTransition(IAutomataTransitionFinite transition)
 {
     if ((_state == transition.StateStart) && (_state != transition.StateEnd))
     {
         if (State != null) { State.DoOnExit(); }
         DoOnStateExit(State);
         _state = transition.StateEnd;
         DoOnTransition(transition);
         DoOnStateEnter(State);
         if (State != null) { State.DoOnEnter(); }
     }
 }
 public static IAutomataTransitionFinite GenerateAutomataTransition(IAutomataStateFinite statestart, IAutomataStateFinite stateend, params FiniteAutomataTransitionConditionDecision[] decisions)
 {
     IAutomataTransitionFinite transition = new AutomataTransitionFiniteBasic(statestart, stateend, decisions);
     return transition;
 }