Research Article

On Formal and Automatic Security Verification of WSN Transport Protocols

Algorithm 2

subA1() =
  /* A1 sends a data packet to I, without receiving any message, OR */
  A1NotRcvSndPck2I()
  /* After receiving a data packet on channel chSAPck */
      chSAPck?seq.ear.rtx.seq1.seq2.Kack.seq3.seq4.Knack ->
(
    /* A1 sends a data packet to I, OR */
    A1RcvPckSndPck2I()
    /* A1 forwards the packet unchanged to I */
        chIAPck!seq.ear.rtx.seq1.seq2.Kack.seq3.seq4.Knack -> subA1()
  )
subA2() =
  /* A2 sends a data packet to I, without receiving any message, OR */
  A2NotRcvSndAck2I()
  /* After getting a data on channel chIAPck, A2 sends ACK with seqA2 to I */
      chIAPck?seq.ear.rtx.seq1.seq2.Kack.seq3.seq4.Knack -> A2RcvPckSndAck2I()
SDTPsubA1subA2() =
UpLayer() procS() subA1() procI() subA2() procD()