2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #ifndef _RXKAD_PROTOTYPES_H
11 #define _RXKAD_PROTOTYPES_H
13 /* till the typedefs are moved elsewhere */
18 extern afs_int32
rxkad_DecryptPacket(const struct rx_connection
*conn
,
19 const fc_KeySchedule
* schedule
,
20 const fc_InitializationVector
* ivec
,
21 const int len
, struct rx_packet
*packet
);
22 extern afs_int32
rxkad_EncryptPacket(const struct rx_connection
*conn
,
23 const fc_KeySchedule
* schedule
,
24 const fc_InitializationVector
* ivec
,
25 const int len
, struct rx_packet
*packet
);
29 extern int fc_keysched(struct ktc_encryptionKey
*key
,
30 fc_KeySchedule schedule
);
31 extern afs_int32
fc_ecb_encrypt(void * clear
, void * cipher
,
32 const fc_KeySchedule schedule
, int encrypt
);
33 extern afs_int32
fc_cbc_encrypt(void *input
, void *output
, afs_int32 length
,
34 const fc_KeySchedule key
, afs_uint32
* iv
,
38 extern int rxkad_AllocCID(struct rx_securityClass
*aobj
,
39 struct rx_connection
*aconn
);
40 extern struct rx_securityClass
*rxkad_NewClientSecurityObject(rxkad_level
47 extern int rxkad_GetResponse(struct rx_securityClass
*aobj
,
48 struct rx_connection
*aconn
,
49 struct rx_packet
*apacket
);
50 extern void rxkad_ResetState(void);
53 extern void rxkad_Init(void);
55 struct rxkad_endpoint
;
56 extern int rxkad_SetupEndpoint(struct rx_connection
*aconnp
,
57 struct rxkad_endpoint
*aendpointp
);
58 struct rxkad_v2ChallengeResponse
;
59 extern afs_uint32
rxkad_CksumChallengeResponse(struct
60 rxkad_v2ChallengeResponse
62 extern int rxkad_DeriveXORInfo(struct rx_connection
*aconnp
,
63 fc_KeySchedule
* aschedule
, char *aivec
,
65 extern void rxkad_SetLevel(struct rx_connection
*conn
, rxkad_level level
);
66 extern int rxkad_Close(struct rx_securityClass
*aobj
);
67 extern int rxkad_NewConnection(struct rx_securityClass
*aobj
,
68 struct rx_connection
*aconn
);
69 extern int rxkad_DestroyConnection(struct rx_securityClass
*aobj
,
70 struct rx_connection
*aconn
);
71 extern int rxkad_CheckPacket(struct rx_securityClass
*aobj
,
72 struct rx_call
*acall
,
73 struct rx_packet
*apacket
);
74 extern int rxkad_PreparePacket(struct rx_securityClass
*aobj
,
75 struct rx_call
*acall
,
76 struct rx_packet
*apacket
);
77 extern int rxkad_GetStats(struct rx_securityClass
*aobj
,
78 struct rx_connection
*aconn
,
79 struct rx_securityObjectStats
*astats
);
80 extern rxkad_level
rxkad_StringToLevel(char *string
);
81 extern char *rxkad_LevelToString(rxkad_level level
);
86 extern struct rx_securityClass
*rxkad_NewServerSecurityObject(rxkad_level
109 extern struct rx_securityClass
*rxkad_NewKrb5ServerSecurityObject
110 (rxkad_level level
, void *get_key_rock
,
111 int (*get_key
) (void *get_key_rock
, int kvno
,
112 struct ktc_encryptionKey
*serverKey
),
113 rxkad_get_key_enctype_func get_key_enctype
,
114 int (*user_ok
) (char *name
, char *instance
, char *cell
, afs_int32 kvno
));
115 extern int rxkad_CheckAuthentication(struct rx_securityClass
*aobj
,
116 struct rx_connection
*aconn
);
117 extern int rxkad_CreateChallenge(struct rx_securityClass
*aobj
,
118 struct rx_connection
*aconn
);
119 extern int rxkad_GetChallenge(struct rx_securityClass
*aobj
,
120 struct rx_connection
*aconn
,
121 struct rx_packet
*apacket
);
122 extern int rxkad_CheckResponse(struct rx_securityClass
*aobj
,
123 struct rx_connection
*aconn
,
124 struct rx_packet
*apacket
);
125 extern afs_int32
rxkad_GetServerInfo(struct rx_connection
*aconn
,
127 afs_uint32
* expiration
, char *name
,
128 char *instance
, char *cell
,
130 extern afs_int32
rxkad_SetConfiguration(struct rx_securityClass
*aobj
,
131 struct rx_connection
*aconn
,
132 rx_securityConfigVariables atype
,
133 void * avalue
, void **aresult
);
136 extern int tkt_DecodeTicket(char *asecret
, afs_int32 ticketLen
,
137 struct ktc_encryptionKey
*key
, char *name
,
138 char *inst
, char *cell
, struct ktc_encryptionKey
*sessionKey
,
139 afs_int32
* host
, afs_uint32
* start
,
141 extern int tkt_MakeTicket(char *ticket
, int *ticketLen
,
142 struct ktc_encryptionKey
*key
, char *name
,
143 char *inst
, char *cell
, afs_uint32 start
,
145 struct ktc_encryptionKey
*sessionKey
,
146 afs_uint32 host
, char *sname
, char *sinst
);
147 extern int tkt_CheckTimes(afs_uint32 start
, afs_uint32 end
, afs_uint32 now
);
148 extern afs_int32
ktohl(char flags
, afs_int32 l
);
149 extern afs_uint32
life_to_time(afs_uint32 start
, unsigned char life
);
150 extern unsigned char time_to_life(afs_uint32 start
, afs_uint32 end
);
153 extern void _rxkad_crc_init_table(void);
154 extern afs_uint32
_rxkad_crc_update(const char *p
, size_t len
, afs_uint32 res
);
157 extern int tkt_DecodeTicket5(char *ticket
, afs_int32 ticket_len
,
158 int (*get_key
) (void *, int,
159 struct ktc_encryptionKey
*),
160 rxkad_get_key_enctype_func get_key2
,
161 char *get_key_rock
, int serv_kvno
, char *name
,
162 char *inst
, char *cell
, struct ktc_encryptionKey
*session_key
,
163 afs_int32
* host
, afs_uint32
* start
,
164 afs_uint32
* end
, afs_int32 disableDotCheck
);
165 extern int tkt_MakeTicket5(char *ticket
, int *ticketLen
, int enctype
, int *kvno
,
166 void *key
, size_t keylen
,
167 char *name
, char *inst
, char *cell
, afs_uint32 start
,
168 afs_uint32 end
, struct ktc_encryptionKey
*sessionKey
,
169 char *sname
, char *sinst
);
171 * Compute a des key from a key of a semi-arbitrary kerberos 5 enctype.
172 * Modifies keydata if enctype is 3des.
174 extern int tkt_DeriveDesKey(int enctype
, void *keydata
, size_t keylen
, struct ktc_encryptionKey