8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / lib / gss_mechs / mech_krb5 / krb5 / ccache / scc.h
blob05728322ba2f44db4e84e2da962f9a5df87086d1
1 #pragma ident "%Z%%M% %I% %E% SMI"
3 /*
4 * lib/krb5/ccache/stdio/scc.h
6 * Copyright 1990,1991 by the Massachusetts Institute of Technology.
7 * All Rights Reserved.
9 * Export of this software from the United States of America may
10 * require a specific license from the United States Government.
11 * It is the responsibility of any person or organization contemplating
12 * export to obtain such a license before exporting.
14 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
15 * distribute this software and its documentation for any purpose and
16 * without fee is hereby granted, provided that the above copyright
17 * notice appear in all copies and that both that copyright notice and
18 * this permission notice appear in supporting documentation, and that
19 * the name of M.I.T. not be used in advertising or publicity pertaining
20 * to distribution of the software without specific, written prior
21 * permission. Furthermore if you modify this software you must label
22 * your software as modified software and not distribute it in such a
23 * fashion that it might be confused with the original M.I.T. software.
24 * M.I.T. makes no representations about the suitability of
25 * this software for any purpose. It is provided "as is" without express
26 * or implied warranty.
29 * This file contains constant and function declarations used in the
30 * file-based credential cache routines.
33 #ifndef __KRB5_FILE_CCACHE__
34 #define __KRB5_FILE_CCACHE__
36 #include "k5-int.h"
37 #include <stdio.h>
39 #define KRB5_OK 0
41 #define KRB5_SCC_MAXLEN 100
44 * SCC version 2 contains type information for principals. SCC
45 * version 1 does not. The code will accept either, and depending on
46 * what KRB5_SCC_DEFAULT_FVNO is set to, it will create version 1 or
47 * version 2 SCC caches.
51 #define KRB5_SCC_FVNO_1 0x0501 /* krb v5, scc v1 */
52 #define KRB5_SCC_FVNO_2 0x0502 /* krb v5, scc v2 */
53 #define KRB5_SCC_FVNO_3 0x0503 /* krb v5, scc v3 */
54 #define KRB5_SCC_FVNO_4 0x0504 /* krb v5, scc v4 */
56 #define SCC_OPEN_AND_ERASE 1
57 #define SCC_OPEN_RDWR 2
58 #define SCC_OPEN_RDONLY 3
60 /* Credential file header tags.
61 * The header tags are constructed as:
62 * krb5_ui_2 tag
63 * krb5_ui_2 len
64 * krb5_octet data[len]
65 * This format allows for older versions of the fcc processing code to skip
66 * past unrecognized tag formats.
68 #define SCC_TAG_DELTATIME 1
70 #ifndef TKT_ROOT
71 #define TKT_ROOT "/tmp/tkt"
72 #endif
74 /* macros to make checking flags easier */
75 #define OPENCLOSE(id) (((krb5_scc_data *)id->data)->flags & KRB5_TC_OPENCLOSE)
77 typedef struct _krb5_scc_data {
78 char *filename;
79 FILE *file;
80 krb5_flags flags;
81 char stdio_buffer[BUFSIZ];
82 int version;
83 } krb5_scc_data;
85 /* An off_t can be arbitrarily complex */
86 typedef struct _krb5_scc_cursor {
87 long pos;
88 } krb5_scc_cursor;
90 #define MAYBE_OPEN(context, ID, MODE) \
91 { \
92 if (OPENCLOSE (ID)) { \
93 krb5_error_code maybe_open_ret = krb5_scc_open_file (context, ID,MODE); \
94 if (maybe_open_ret) return maybe_open_ret; } }
96 #define MAYBE_CLOSE(context, ID, RET) \
97 { \
98 if (OPENCLOSE (ID)) { \
99 krb5_error_code maybe_close_ret = krb5_scc_close_file (context, ID); \
100 if (!(RET)) RET = maybe_close_ret; } }
102 /* DO NOT ADD ANYTHING AFTER THIS #endif */
103 #endif /* __KRB5_FILE_CCACHE__ */