role sensor (Ui, Sj, GW : agent, | Kxj: symmetric_key, | H: hash_func, | P: text, | SND_US,RCV_US,SND_SG,RCV_SG: channel(dy)) | played_by Sj | def= | local State : nat, | T1,T2,K2, Na,Nb,SK : text, | Y,X,Z : message | const user_sensor_sk:protocol_id | initState 1 | transition | (1) State= 1 RCV_US(Na.Y.Z.T1) => | State ≔ 3 T2 ≔ new() | K2 ≔ new() | Nb ≔ exp(P,K2) | SND_SG( Na | .Y | .Z | .T1 | .Nb | .H(Nb.Z.Kxj.T2) | .T2 ) | (2) State = 2 RCV_SG( H(Na.Kxj.H(Nb.Z.Kxj.T2).T2) | .X ) => | State ≔ 4 SK ≔ H(exp(Na,K2)) | witness(Sj,Ui,user_sensor_sk,SK) | request(Sj,Ui,user_sensor_sk,SK) | SND_US(Nb | .X) | end role |
|