# Woo and Lam Pi 2
#
# Modelled after the description in the SPORE library
# http://www.lsv.ens-cachan.fr/spore/wooLamPi2.html
#

protocol woolamPi-2(I,R,S)
{
    role I
    {
        var Nr: Nonce;

        send_1(I,R, I); 
        recv_2(R,I, Nr);
        send_3(I,R, {I,Nr}k(I,S));

    }    
    
    role R
    {
        fresh Nr: Nonce;
        var T: Ticket;

        recv_1(I,R, I);
        send_2(R,I, Nr);
        recv_3(I,R, T);
        send_4(R,S, {I, T}k(R,S)); 
        recv_5(S,R, {I, Nr}k(R,S));
        
        claim_R1(R,Nisynch);
    }

    role S
    {
        var Nr: Nonce;
        
        recv_4(R,S, {I, {I,Nr}k(I,S)}k(R,S));
        send_5(S,R, {I,Nr}k(R,S));
    }
}

