role applicationserver (Ui, AS: agent, | SKuas: symmetric_key, | H, F: function, | SND, RCV: channel(dy)) | | played_by AS def= | | local State: nat, | IDi, PWi, BIOi, RPWi, DPWi, T, Ai: text, | Hi, Vi, VVi, R, S, Xi, Yi, Wi: text, | CIDi, Zi, T1, T3, SK, Y2, Ys, Zs: text | const as_ui_y2, | sc1, sc2, sc3, sc4: protocol_id | | init State:= 1 | | transition | | (1) State = 1 ∧ RCV(IDi.xor(H(PWi.Ai),T’)) =|> | State’ ≔ 3 ∧ Hi’ ≔ H(S.IDi) | ∧ Vi’ ≔ xor(H(IDi.xor(H(PWi.Ai),T’)),F(R.H(S.IDi))) | ∧ Yi’ ≔ new() | ∧ Xi’ ≔ xor((Yi’.H(Yi’.S)),xor(H(PWi.Ai),T’)) | ∧ secret(F(R.H(S.IDi)), sc4, , ) | ∧ SND(_SKuas) | | (2) State = 5 ∧ RCV(xor(IDi,H(Yi’.S).Yi’.H(IDi.F(R.H(S.IDi).Yi’.T1’)).T1’)) =|> | State’ ≔ 7 ∧ Hi’ ≔ H(S.IDi) | ∧ Y2’ ≔ new() | ∧ T3’ ≔ new() | ∧ SK’ ≔ H(IDi.F(R.H(S.IDi)).H(Y2’.S).T1’.T3’) | ∧ Ys’ ≔ xor((Y2’.H(Y2’.S)),F(R.H(S.IDi))) | ∧ Zs’ ≔ H(SK’.F(R.H(S.IDi)).T1’.T3’) | ∧ SND(Ys’.Zs’.T3’) | ∧ witness(AS, Ui, as_ui_y2, Y2’) | | end role |
|