# Class type Netsys_gssapi.GSSAPI.gss_api

    class type gss_api = [[credential, name
           , context]] Netsys_gssapi.poly_gss_api

The methods have generally a type of the form

           m : 't . arg1 -> ... -> argN -> out:( ret1 -> ... -> retM -> 't ) -> 't

where `arg`s are input arguments (with the exception of `context` which is in/out), and where outputs are passed back by calling the `out` functions with the outputs. The return value of `out` is the return value of the method call.

For example, if only `output_token` of the `accept_sec_context` method is needed, one could call this method as in

          let output_token =
    	gss_api # accept_sec_context
    	   ...
    	   ~out:(fun ~src_name ~mech_type ~output_token ~ret_flags
    		     ~time_rec ~delegated_cred_handle ~minor_status
    		     ~major_status ->
    		  output_token
    		)

Output values may not be defined when `major_status` indicates an error. (But see the RFC for details; especially `init_sec_contect` and `accept_sec_context` may emit tokens even when `major_status` indicates an error.)

The names of the parameters are taken from RFC 2744, only suffixes like `_handle` have been removed. When the prefixes `input_` and `output_` are meaningless, they are also removed. All prefixes like "GSS" are removed anyway.