/*
 * Course 2r890
 *
 * Assignment 0405-3
 *
 * Protocol b
 *
 * not nisynch, but still niagree
 */
const pk: Function;
secret sk: Function;
inversekeys (pk,sk);

protocol course2r890year0405ex3(X,Y,I)
{
	role I
	{
		fresh ni: Nonce;

		send_1(I,X, ni );
		recv_2(X,I, { I,ni }sk(X) );
		send_3(I,Y, ni );
		recv_4(Y,I, { ni,I }sk(Y) );

		claim_i1(I,Niagree);
		claim_i2(I,Nisynch);
	}	
	
	role X
	{
		var nx: Nonce;

		recv_1(I,X, nx );
		send_2(X,I, { I,nx }sk(X) );
	}

	role Y
	{
		var ny: Nonce;

		recv_3(I,Y, ny );
		send_4(Y,I, { ny,I }sk(Y) );
	}
}



