class type auth_protocol =object..end
method state : [ `Done of auth_session
       | `Emit
       | `Error
       | `Receive of Rtypes.uint4 ]`Emit: The client needs to emit another token`Receive xid: The client waits for another token (with
	  session identifier xid)`Done session: The protocol is finished and session can
	  be used for authenticating`Error: Something went wrong.method emit : Rtypes.uint4 -> Rtypes.uint4 -> Rtypes.uint4 -> Rpc_packer.packed_valuexid, prog_nr and vers_nr. 
	The returned packed value
	should have been created with Rpc_packer.pack_value. It is 
	possible that emit is called several times with different
	xid values. In this case, the returned packed value should
	be identical except that the new xid is included in the message.
	After emission, the state must change to `Receive.
method receive : Rpc_packer.packed_value -> unitxid announced in state. The passed
	packed value is the full RPC message. The message may also contain
	a server error - which may be processed by the protocol, or which
	may cause the reaction that receive raises an Rpc.Rpc_server
	exception.
	After receive, the state can change to `Emit, `Done or
	`Error. The latter is obligatory when receive raises an
	exception. It is also possible not to raise an exception but
	silently switch to `Error.
	Design limitation: there is right now no way to indicate that the
	next authentication method should be used instead.
method auth_method : auth_method