global protocol Proto(role A, role C, role S) { start(Int) from C to S; redirect(Int) from S to C; login(Int) from C to A; auth(Int) from A to C; password(Int) from C to A; choice at A { success(Int) from A to C; success(Int) from C to S; get(Token) from S to A; put(Token) from A to S; put(Token) from S to C; } or { fail(Int) from A to C; fail(Int) from C to S; received(Int) from S to C; } }