usertype Data; const pk: Function; secret sk: Function; inversekeys (pk,sk); protocol ccitt509(I,R) { role I { fresh xi,yi: Data; fresh ni: Nonce; var nr: Nonce; var yr,xr: Data; send_1(I,R, I,{ni, R, xi, {yi}pk(R) }sk(I) ); recv_2(R,I, R,{nr, I, ni, xr, {yr}pk(I) }sk(R) ); send_3(I,R, I,{R,nr}sk(I) ); claim_4(I,Secret,yi); claim_5(I,Secret,yr); claim_6(I,Nisynch); claim_7(I,Niagree); } role R { var xi,yi: Data; var ni: Nonce; fresh nr: Nonce; fresh yr,xr: Data; recv_1(I,R, I,{ni, R, xi, {yi}pk(R) }sk(I) ); send_2(R,I, R,{nr, I, ni, xr, {yr}pk(I) }sk(R) ); recv_3(I,R, I,{R,nr}sk(I) ); claim_8(R,Secret,yi); claim_9(R,Secret,yr); claim_10(R,Nisynch); claim_11(R,Niagree); } } const de: Data;