ckuat2.h
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:11k
源码类别:

通讯/手机编程

开发平台:

Windows_Unix

  1. /*
  2.   C K U A T 2 . H  --  Kerberos headers for C-Kermit
  3.   Copyright (C) 1985, 2000,
  4.     Trustees of Columbia University in the City of New York.
  5.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  6.     copyright text in the ckcmai.c module for disclaimer and permissions.
  7.   Author:
  8.   Jeffrey E Altman (jaltman@columbia.edu) -- Kerberos IV and V intergration.
  9. */
  10. /*
  11.  * Based on a concatenation of all necessary include files distributed with
  12.  * the Kerberos 5 NT Alpha 2 Telnet package from MIT.
  13.  */
  14. #ifndef KRB5_TELNET_H
  15. #define KRB5_TELNET_H
  16. /*-
  17.  * Copyright (c) 1991, 1993
  18.  * The Regents of the University of California.  All rights reserved.
  19.  *
  20.  * Redistribution and use in source and binary forms, with or without
  21.  * modification, are permitted provided that the following conditions
  22.  * are met:
  23.  * 1. Redistributions of source code must retain the above copyright
  24.  *    notice, this list of conditions and the following disclaimer.
  25.  * 2. Redistributions in binary form must reproduce the above copyright
  26.  *    notice, this list of conditions and the following disclaimer in the
  27.  *    documentation and/or other materials provided with the distribution.
  28.  * 3. All advertising materials mentioning features or use of this software
  29.  *    must display the following acknowledgement:
  30.  * This product includes software developed by the University of
  31.  * California, Berkeley and its contributors.
  32.  * 4. Neither the name of the University nor the names of its contributors
  33.  *    may be used to endorse or promote products derived from this software
  34.  *    without specific prior written permission.
  35.  *
  36.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  37.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  38.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  39.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  40.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  41.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  42.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  43.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  44.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  45.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46.  * SUCH DAMAGE.
  47.  *
  48.  * @(#)encrypt.h 8.1 (Berkeley) 6/4/93
  49.  */
  50. /*
  51.  * Copyright (C) 1990 by the Massachusetts Institute of Technology
  52.  *
  53.  * Export of this software from the United States of America may
  54.  * require a specific license from the United States Government.
  55.  * It is the responsibility of any person or organization contemplating
  56.  * export to obtain such a license before exporting.
  57.  *
  58.  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
  59.  * distribute this software and its documentation for any purpose and
  60.  * without fee is hereby granted, provided that the above copyright
  61.  * notice appear in all copies and that both that copyright notice and
  62.  * this permission notice appear in supporting documentation, and that
  63.  * the name of M.I.T. not be used in advertising or publicity pertaining
  64.  * to distribution of the software without specific, written prior
  65.  * permission.  M.I.T. makes no representations about the suitability of
  66.  * this software for any purpose.  It is provided "as is" without express
  67.  * or implied warranty.
  68.  */
  69. #ifdef CK_ENCRYPTION
  70. #ifndef __ENCRYPTION__
  71. #define __ENCRYPTION__
  72. #define DIR_DECRYPT 1
  73. #define DIR_ENCRYPT 2
  74. #ifndef CK_DES_C
  75. #ifndef NOBLOCKDEF
  76. typedef unsigned char Block[8];
  77. #endif /* NOBLOCKDEF */
  78. typedef unsigned char *BlockT;
  79. #ifndef KRB4    /* already defined in kerberosiv/des.h */
  80. typedef struct des_ks_struct { Block _; } Schedule[16];
  81. #else /* KRB4 */
  82. #ifndef OS2
  83. #ifndef NOBLOCKDEF    /* already defined in kerberosiv/des.h */
  84. typedef struct des_ks_struct { Block _; } Schedule[16];
  85. #endif /* NOBLOCKDEF */
  86. #endif /* OS2 */
  87. #endif /* KRB4 */
  88. #define VALIDKEY(key) (key[0]|key[1]|key[2]|key[3]|key[4]|key[5]|key[6]|key[7])
  89. #define SAMEKEY(k1, k2) (!memcmp((void *)k1, (void *)k2, sizeof(Block)))
  90. typedef struct {
  91.   short type;
  92.   int length;
  93.   unsigned char *data;
  94. } Session_Key;
  95. #endif /* CK_DES_C */
  96. #if !defined(P)
  97. #ifdef __STDC__
  98. #define P(x) x
  99. #else
  100. #define P(x) ()
  101. #endif
  102. #endif
  103. #ifdef DEBUG
  104. int printsub(char, unsigned char *, size_t);
  105. #endif
  106. int encrypt_parse(unsigned char *, int);
  107. typedef struct {
  108.   char *name;
  109.   int type;
  110.   void (*output) P((unsigned char *, int));
  111.   int (*input) P((int));
  112.   void (*init) P((int));
  113.   int (*start) P((int, int));
  114.   int (*is) P((unsigned char *, int));
  115.   int (*reply) P((unsigned char *, int));
  116.   int (*session) P((Session_Key *, int));
  117.   int (*keyid) P((int, unsigned char *, int *));
  118.   void (*printsub) P((unsigned char *, int, unsigned char *, int));
  119. } Encryptions;
  120. #define SK_GENERIC      0       /* Just a string of bits */
  121. #define SK_DES 1 /* Matched Kerberos v5 ENCTYPE_DES */
  122. void encrypt_init P((kstream,int));
  123. Encryptions *findencryption P((int));
  124. void encrypt_send_support P((void));
  125. void encrypt_auto P((int));
  126. void decrypt_auto P((int));
  127. int  encrypt_is P((unsigned char *, int));
  128. int  encrypt_reply P((unsigned char *, int));
  129. void encrypt_start_input P((int));
  130. int  encrypt_session_key P((Session_Key *, int));
  131. void encrypt_end_input P((void));
  132. void encrypt_start_output P((int));
  133. void encrypt_end_output P((void));
  134. void encrypt_send_request_start P((void));
  135. void encrypt_send_request_end P((void));
  136. void encrypt_send_end P((void));
  137. void encrypt_wait P((void));
  138. int  encrypt_is_encrypting P((void));
  139. void encrypt_send_support P((void));
  140. int  encrypt_send_keyid P((int, unsigned char *, int, int));
  141. int encrypt_cmd P((int, char **));
  142. void encrypt_display P((void));
  143. #ifdef CK_KERBEROS
  144. void krbdes_encrypt P((unsigned char *, int));
  145. int  krbdes_decrypt P((int));
  146. int  krbdes_is P((unsigned char *, int));
  147. int  krbdes_reply P((unsigned char *, int));
  148. void krbdes_init P((int));
  149. int  krbdes_start P((int, int));
  150. void krbdes_session P((Session_Key *, int));
  151. void krbdes_printsub P((unsigned char *, int, unsigned char *, int));
  152. #endif /* CK_KERBEROS */
  153. void cfb64_encrypt P((unsigned char *, int));
  154. int cfb64_decrypt P((int));
  155. void cfb64_init P((int));
  156. int cfb64_start P((int, int));
  157. int cfb64_is P((unsigned char *, int));
  158. int cfb64_reply P((unsigned char *, int));
  159. int cfb64_session P((Session_Key *, int));
  160. int cfb64_keyid P((int, unsigned char *, int *));
  161. void cfb64_printsub P((unsigned char *, int, unsigned char *, int));
  162. void ofb64_encrypt P((unsigned char *, int));
  163. int ofb64_decrypt P((int));
  164. void ofb64_init P((int));
  165. int ofb64_start P((int, int));
  166. int ofb64_is P((unsigned char *, int));
  167. int ofb64_reply P((unsigned char *, int));
  168. int ofb64_session P((Session_Key *, int));
  169. int ofb64_keyid P((int, unsigned char *, int *));
  170. void ofb64_printsub P((unsigned char *, int, unsigned char *, int));
  171. void des3_cfb64_encrypt P((unsigned char *, int));
  172. int  des3_cfb64_decrypt P((int));
  173. void des3_cfb64_init P((int));
  174. int  des3_cfb64_start P((int, int));
  175. int  des3_cfb64_is P((unsigned char *, int));
  176. int  des3_cfb64_reply P((unsigned char *, int));
  177. int  des3_cfb64_session P((Session_Key *, int));
  178. int  des3_cfb64_keyid P((int, unsigned char *, int *));
  179. void des3_cfb64_printsub P((unsigned char *, int, unsigned char *, int));
  180. void des3_ofb64_encrypt P((unsigned char *, int));
  181. int  des3_ofb64_decrypt P((int));
  182. void des3_ofb64_init P((int));
  183. int  des3_ofb64_start P((int, int));
  184. int  des3_ofb64_is P((unsigned char *, int));
  185. int  des3_ofb64_reply P((unsigned char *, int));
  186. int  des3_ofb64_session P((Session_Key *, int));
  187. int  des3_ofb64_keyid P((int, unsigned char *, int *));
  188. void des3_ofb64_printsub P((unsigned char *, int, unsigned char *, int));
  189. #ifdef CAST_ENCRYPTION
  190. void cast_cfb64_encrypt P((unsigned char *, int));
  191. int  cast_cfb64_decrypt P((int));
  192. void cast_cfb64_init P((int));
  193. int  cast_cfb64_start P((int, int));
  194. int  cast_cfb64_is P((unsigned char *, int));
  195. int  cast_cfb64_reply P((unsigned char *, int));
  196. int  cast_cfb64_session P((Session_Key *, int));
  197. int  cast_cfb64_keyid P((int, unsigned char *, int *));
  198. void cast_cfb64_printsub P((unsigned char *, int, unsigned char *, int));
  199. void cast_ofb64_encrypt P((unsigned char *, int));
  200. int  cast_ofb64_decrypt P((int));
  201. void cast_ofb64_init P((int));
  202. int  cast_ofb64_start P((int, int));
  203. int  cast_ofb64_is P((unsigned char *, int));
  204. int  cast_ofb64_reply P((unsigned char *, int));
  205. int  cast_ofb64_session P((Session_Key *, int));
  206. int  cast_ofb64_keyid P((int, unsigned char *, int *));
  207. void cast_ofb64_printsub P((unsigned char *, int, unsigned char *, int));
  208. void castexp_cfb64_encrypt P((unsigned char *, int));
  209. int  castexp_cfb64_decrypt P((int));
  210. void castexp_cfb64_init P((int));
  211. int  castexp_cfb64_start P((int, int));
  212. int  castexp_cfb64_is P((unsigned char *, int));
  213. int  castexp_cfb64_reply P((unsigned char *, int));
  214. int  castexp_cfb64_session P((Session_Key *, int));
  215. int  castexp_cfb64_keyid P((int, unsigned char *, int *));
  216. void castexp_cfb64_printsub P((unsigned char *, int, unsigned char *, int));
  217. void castexp_ofb64_encrypt P((unsigned char *, int));
  218. int  castexp_ofb64_decrypt P((int));
  219. void castexp_ofb64_init P((int));
  220. int  castexp_ofb64_start P((int, int));
  221. int  castexp_ofb64_is P((unsigned char *, int));
  222. int  castexp_ofb64_reply P((unsigned char *, int));
  223. int  castexp_ofb64_session P((Session_Key *, int));
  224. int  castexp_ofb64_keyid P((int, unsigned char *, int *));
  225. void castexp_ofb64_printsub P((unsigned char *, int, unsigned char *, int));
  226. #endif /* CAST_ENCRYPTION */
  227. /* int des_string_to_key P((char *, Block)); */
  228. #ifdef DEBUG
  229. extern int encrypt_debug_mode;
  230. #endif
  231. #ifndef CRYPT_DLL
  232. extern int (*decrypt_input) P((int));
  233. extern void (*encrypt_output) P((unsigned char *, int));
  234. #endif /* CRYPT_DLL */
  235. int decrypt_ks_hack(unsigned char *, int);
  236. #endif /* __ENCRYPTION__ */
  237. #endif /* ENCRYPTION */
  238. #define FORWARD
  239. /* allow forwarding of credentials */
  240. #ifdef CRYPT_DLL
  241. struct _crypt_dll_init {
  242.     int version;
  243.     /* Version 1 variables */
  244.     int (*p_ttol)(char *,int);
  245.     void (*p_dodebug)(int,char *,char *,long);
  246.     void (*p_dohexdump)(char *,char *,int);
  247.     void (*p_tn_debug)(char *);
  248.     int (*p_vscrnprintf)(char *, ...);
  249.     /* Version 2 variables */
  250.     void * p_k5_context;
  251.     /* Version 3 variables */
  252.     void (*p_install_funcs)(char *,void *);
  253. };
  254. #endif /* CRYPT_DLL */
  255. /* per Kerberos v5 protocol spec */
  256. #ifndef ENCTYPE_NULL
  257. #define ENCTYPE_NULL            0x0000
  258. #endif
  259. #ifndef  ENCTYPE_DES_CBC_CRC
  260. #define ENCTYPE_DES_CBC_CRC     0x0001  /* DES cbc mode with CRC-32 */
  261. #endif
  262. #ifndef  ENCTYPE_DES_CBC_MD4
  263. #define ENCTYPE_DES_CBC_MD4     0x0002  /* DES cbc mode with RSA-MD4 */
  264. #endif
  265. #ifndef  ENCTYPE_DES_CBC_MD5
  266. #define ENCTYPE_DES_CBC_MD5     0x0003  /* DES cbc mode with RSA-MD5 */
  267. #endif
  268. #ifndef  ENCTYPE_DES_CBC_RAW
  269. #define ENCTYPE_DES_CBC_RAW     0x0004  /* DES cbc mode raw */
  270. #endif
  271. /* XXX deprecated? */
  272. #ifndef  ENCTYPE_DES3_CBC_SHA
  273. #define ENCTYPE_DES3_CBC_SHA    0x0005  /* DES-3 cbc mode with NIST-SHA */
  274. #endif
  275. #ifndef  ENCTYPE_DES3_CBC_RAW
  276. #define ENCTYPE_DES3_CBC_RAW    0x0006  /* DES-3 cbc mode raw */
  277. #endif
  278. #ifndef  ENCTYPE_DES3_HMAC_SHA1
  279. #define ENCTYPE_DES3_HMAC_SHA1  0x0007
  280. #endif
  281. #ifndef  ENCTYPE_DES_HMAC_SHA1
  282. #define ENCTYPE_DES_HMAC_SHA1   0x0008
  283. #endif
  284. #ifndef  ENCTYPE_UNKNOWN
  285. #define ENCTYPE_UNKNOWN         0x01ff
  286. #endif
  287. /* local crud */
  288. /* marc's DES-3 with 32-bit length */
  289. #ifndef  ENCTYPE_LOCAL_DES3_HMAC_SHA1
  290. #define ENCTYPE_LOCAL_DES3_HMAC_SHA1 0x7007
  291. #endif
  292. #endif /* KRB5_TELNET_H */