Home | History | Annotate | Download | only in in.ftpd
      1 /*
      2  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
      3  * Use is subject to license terms.
      4  */
      5 
      6 #ifndef _GSSUTIL_H
      7 #define	_GSSUTIL_H
      8 
      9 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     10 
     11 #ifdef __cplusplus
     12 extern "C" {
     13 #endif
     14 
     15 #include <gssapi/gssapi.h>
     16 #ifdef SOLARIS_2
     17 #include <gssapi/gssapi_ext.h>
     18 #else
     19 #include <gssapi/gssapi_generic.h>
     20 #endif
     21 
     22 #ifndef SOLARIS_2
     23 #define	GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
     24 #endif
     25 
     26 #ifndef g_OID_equal
     27 #define	g_OID_equal(o1, o2) \
     28 	(((o1)->length == (o2)->length) && \
     29 	(memcmp((o1)->elements, (o2)->elements, (int)(o1)->length) == 0))
     30 #endif /* g_OID_equal */
     31 
     32 #define	GSS_AUTH_NONE 0x00
     33 #define	GSS_ADAT_DONE 0x01
     34 #define	GSS_USER_DONE 0x02
     35 #define	GSS_PWD_DONE  0x04
     36 
     37 typedef struct gss_inforec {
     38 	gss_ctx_id_t	context;
     39 	gss_OID		mechoid;
     40 	gss_name_t	client;
     41 	char		*display_name;
     42 	unsigned char	data_prot;
     43 	unsigned char	ctrl_prot;
     44 	unsigned char	authstate;
     45 	unsigned char	want_creds;
     46 	unsigned char	have_creds;
     47 	unsigned char	must_gss_auth;
     48 } gss_info_t;
     49 
     50 #define	GSSUSERAUTH_OK(x) (((x).authstate & (GSS_ADAT_DONE|GSS_USER_DONE)) \
     51 == (GSS_ADAT_DONE|GSS_USER_DONE))
     52 
     53 #define	IS_GSSAUTH(s) ((s) != NULL && (strcmp((s), "GSSAPI") == 0))
     54 
     55 int gss_user(struct passwd *);
     56 int gss_adat(char *adatstr);
     57 unsigned int gss_setpbsz(char *pbszstr);
     58 int sec_write(int fd, char *buf, int len);
     59 void ccc(void);
     60 int sec_putc(int c, FILE *stream);
     61 int sec_getc(FILE *stream);
     62 int sec_fprintf(FILE *stream, char *fmt, ...);
     63 int sec_fflush(FILE *stream);
     64 int sec_read(int fd, char *buf, int maxlen);
     65 int sec_reply(char *buf, int bufsiz, int n);
     66 char *sec_decode_command(char *cmd);
     67 size_t gss_getinbufsz(void);
     68 void gss_adjust_buflen(void);
     69 
     70 #ifdef __cplusplus
     71 }
     72 #endif
     73 
     74 #endif /* _GSSUTIL_H */
     75