(*—-SNj process—-*) |
let SNj = |
out(privateChannel2, SIDj); |
in(privateChannel2, (XTSIDj:bitstring, XXTIDi:bitstring, XXSi2:bitstring)); |
event startSNj(SIDj); |
in(publicChannel2, (XGM1:bitstring, XGM2:bitstring, XGM3:bitstring, XGM4:bitstring, |
XXUiM7:bitstring)); |
let Xrgw5 = xor(XGM1, XTSIDj) in |
let XXTIDi = xor(XGM2, Xrgw5) in |
let XXTIDinew = xor(XGM3, Xrgw5) in |
let Xru3 = xor(XXUiM7, XXSi2) in |
if h(concat(concat(concat(Xrgw5, XTSIDj), XXTIDi), XXTIDinew)) = XGM4 then |
new SK:bitstring; |
let SNjM1 = xor(SK, XXSi2) in |
let SNjM2 = h(concat(concat(SK, XXTIDinew), Xru3)) in |
let SNjM3 = h(concat(concat(SNjM1, SNjM2), XTSIDj)) in |
let XXTIDi = XXTIDinew in |
out(publicChannel2, (SNjM1, SNjM2, SNjM3)); |
event endSNj(SIDj). |