import cyrus-sasl-2.1.23
[cyrus-sasl.git] / mac / CommonKClient / mac_kclient / KrbDriver.h
1 /*
2         KrbDriver.h -- This is the KClient driver's direct call interface.
3         This file defines all of the csCodes used by the driver and the three
4         structures used for passing information to and from the driver.
5                 
6         © Copyright 1992,95 by Cornell University
7         
8         Initial coding                                          1/92 Peter Bosanko
9         Moved some constants to kclient.h       8/95 PCB
10 */
11
12 #ifndef _KrbDriver_     
13 #define _KrbDriver_
14
15 #ifndef _KCLIENT_
16 #include "KClient.h"
17 #endif
18
19 /* csCodes for Control Calls */
20 enum {
21         cKrbKillIO = 1,
22         cKrbGetLocalRealm,
23         cKrbSetLocalRealm,
24         cKrbGetRealm,
25         cKrbAddRealmMap,
26         cKrbDeleteRealmMap,
27         cKrbGetNthRealmMap,
28         cKrbGetNthServer,
29         cKrbAddServerMap,
30         cKrbDeleteServerMap,
31         cKrbGetNthServerMap,
32         cKrbGetNumSessions,
33         cKrbGetNthSession,
34         cKrbDeleteSession,
35         cKrbGetCredentials,
36         cKrbAddCredentials,
37         cKrbDeleteCredentials,
38         cKrbGetNumCredentials,
39         cKrbGetNthCredentials,
40         cKrbDeleteAllSessions,
41         cKrbGetTicketForService,
42         cKrbGetAuthForService,
43         cKrbCheckServiceResponse,
44         cKrbEncrypt,
45         cKrbDecrypt,
46         cKrbCacheInitialTicket,
47         cKrbGetUserName,
48         cKrbSetUserName,
49         cKrbSetPassword,
50         cKrbGetDesPointers,
51         cKrbGetErrorText,
52         cKrbLogin,
53         cKrbSetKey,
54         cKrbKerberos,
55         cKrbGetNthServerPort,
56         cKrbSetNthServerPort,
57         cKrbDriverVersion,
58         cKrbPasswordToKey,
59         cKrbNewClientSession,
60         cKrbNewServerSession,
61         cKrbDisposeSession,
62         cKrbServerVerifyTicket,
63         cKrbServerGetReplyTkt,
64         cKrbGetServiceKey,
65         cKrbAddServiceKey,
66         cKrbGetOption,
67         cKrbSetOption,
68         cKrbAdditionalLogin,
69         cKrbControlPanelEnter,
70         cKrbControlPanelLeave,
71         cKrbGetSessionTimeRemaining,
72         cKrbGetSessionUserName,
73         cKrbGetNumSpecials,
74         cKrbGetNthSpecial,
75         cKrbAddSpecial,
76         cKrbDeleteSpecial
77 };
78
79 /* Need to switch to short word alignment on power pc */
80
81 #if defined(powerc) || defined(__powerc)
82 #pragma options align=mac68k
83 #endif
84
85 /* Parameter block for high level calls */
86
87 struct krbHiParmBlock   {
88                         char                    *service;               /* full name -- combined service, instance, realm */
89                         char                    *buf;
90                         unsigned long   buflen;
91                         long                    checksum;
92                         unsigned long   lAddr;
93                         unsigned short  lPort;
94                         unsigned long   fAddr;
95                         unsigned short  fPort;
96                         unsigned long   decryptOffset;
97                         unsigned long   decryptLength;
98                         char                    *encryptBuf;
99                         unsigned long   encryptLength;
100                         char                    *applicationVersion;    /* Version string must be 8 bytes long!  */
101                         char                    sessionKey[8];                  /* for internal use                      */
102                         char                    schedule[128];                  /* for internal use                      */
103                         char                    *user;
104 };
105 typedef struct krbHiParmBlock krbHiParmBlock;
106 typedef krbHiParmBlock *KrbParmPtr;
107 typedef KrbParmPtr *KrbParmHandle;
108
109 /* New KClient record */
110
111 #define         NEW_KCLIENT_TAG 0xF7FAF7FA
112
113 struct KClientRec       {
114                         long                    tag;
115                         krbHiParmBlock  hiParm;
116                         long                    libVersion;
117                         void                    *serverContext;
118                         char                    *filename;
119                         long                    keyVersion;
120                         char                    serverKey[8];
121                         char                    *prompt;
122                         short                   nameType;
123 };
124 typedef struct KClientRec KClientRec;
125
126 /* ********************************************************* */
127 /* The rest of these defs are for low level calls            */
128 /* ********************************************************* */
129
130 /* Parameter block for low level calls */               
131 struct krbParmBlock     {
132                         char    *uName;
133                         char    *uInstance;
134                         char    *uRealm;                        /* also where local realm or mapping realm passed */
135                         char    *sName;
136                         char    *sInstance;
137                         char    *sRealm;
138                         char    *host;                          /* also netorhost */
139                         long    admin;                          /* isadmin, mustadmin */
140                         long    *itemNumber;
141                         long    *adminReturn;           /* when it needs to be passed back */
142                         CREDENTIALS *cred;
143                         short   port;
144 };
145 typedef struct krbParmBlock krbParmBlock;
146
147 #if defined(powerc) || defined(__powerc)
148 #pragma options align=reset
149 #endif
150
151 #endif