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 */