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

通讯/手机编程

开发平台:

Windows_Unix

  1. /*  C K U A T H . H --  "C-Kermit to Authentication" interface  */
  2. /*
  3.   Author: Jeffrey Altman <jaltman@columbia.edu>,
  4.   Columbia University Academic Information Systems, New York City.
  5.   Copyright (C) 1999, 2000,
  6.     Trustees of Columbia University in the City of New York.
  7.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  8.     copyright text in the ckcmai.c module for disclaimer and permissions.
  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_KERMIT_H
  15. #define KRB5_KERMIT_H
  16. #ifndef BOOL
  17. #define BOOL int
  18. #endif
  19. /* Header file for encrypted-stream library.
  20.  * Written by Ken Raeburn (Raeburn@Cygnus.COM).
  21.  * Copyright (C) 1991, 1992, 1994 by Cygnus Support.
  22.  *
  23.  * Permission to use, copy, modify, and
  24.  * distribute this software and its documentation for any purpose and
  25.  * without fee is hereby granted, provided that the above copyright
  26.  * notice appear in all copies and that both that copyright notice and
  27.  * this permission notice appear in supporting documentation.
  28.  * Cygnus Support makes no representations about the suitability of
  29.  * this software for any purpose.  It is provided "as is" without express
  30.  * or implied warranty.
  31.  */
  32. #ifndef K5STREAM_H
  33. #define K5STREAM_H
  34. typedef void *kstream_ptr;                      /* Data send on the kstream */
  35. struct kstream_data_block {
  36.   kstream_ptr ptr;
  37.   size_t length;
  38. };
  39. typedef struct kstream_int {                    /* Object we pass around */
  40.     int fd;                                       /* Open socket descriptor */
  41.     int (*encrypt)(struct kstream_data_block *, /* output */
  42.                    struct kstream_data_block *); /* input */
  43.     int encrypt_type;
  44.     int (*decrypt)(struct kstream_data_block *, /* output */
  45.                    struct kstream_data_block *); /* input */
  46.     int decrypt_type;
  47. } *kstream;
  48. struct kstream_crypt_ctl_block {
  49.   int (*encrypt)(struct kstream_data_block *, /* output */
  50.  struct kstream_data_block *); /* input */
  51.   int (*decrypt)(struct kstream_data_block *, /* output */
  52.  struct kstream_data_block *); /* input */
  53.   int (*init)(kstream);
  54.   void (*destroy)(void);
  55. };
  56. /* Prototypes */
  57. int  kstream_destroy();
  58. void kstream_set_buffer_mode(int);
  59. int  kstream_create_from_fd(int fd,
  60.        const struct kstream_crypt_ctl_block *,
  61.        kstream_ptr);
  62. int kstream_write(void *, size_t);
  63. int kstream_read(void *, size_t);
  64. #endif /* K5STREAM_H */
  65. /*
  66.  * Implements Telnet authentication and encryption
  67.  */
  68. #ifndef TELNET_AUTH_H
  69. #define TELNET_AUTH_H
  70. int auth_parse(unsigned char *, int);
  71. int auth_init(kstream);
  72. void auth_destroy(void);
  73. int auth_encrypt(struct kstream_data_block *, struct kstream_data_block *);
  74. int auth_decrypt(struct kstream_data_block *, struct kstream_data_block *);
  75. extern BOOL forward_flag;
  76. extern BOOL forwardable_flag;
  77. extern BOOL forwarded_tickets;
  78. #endif /* TEL_AUTH_H */
  79. /* C-Kermit specific functions */
  80. _PROTOTYP(int ck_auth_init, (char *, char *, char *, int));
  81. #ifdef OS2
  82. _PROTOTYP(int ck_auth_loaddll, (VOID));
  83. _PROTOTYP(int ck_auth_unloaddll, (VOID));
  84. #endif /* OS2 */
  85. _PROTOTYP(int ck_tn_auth_in_progress,(VOID));
  86. _PROTOTYP(int ck_tn_sb_auth, (char *, int));
  87. _PROTOTYP(int ck_tn_sb_encrypt, (char *, int));
  88. _PROTOTYP(int ck_tn_auth_request, (VOID));
  89. _PROTOTYP(void ck_tn_encrypt, (char *, int));
  90. _PROTOTYP(void ck_tn_decrypt, (char *, int));
  91. _PROTOTYP(void ck_tn_encrypt_start, (VOID));
  92. _PROTOTYP(void ck_tn_encrypt_stop, (VOID));
  93. #ifdef CK_SSL
  94. _PROTOTYP(int  ck_tn_tls_negotiate, (VOID));
  95. #endif /* CK_SSL */
  96. #ifdef CK_KERBEROS
  97.     /* Define MIT_CURRENT to compile the code for use with versions of */
  98.     /* Kerberos later than KRB5 1.0.5.  Note.  This will not compile   */
  99.     /* successfully in Kermit 95 due to the segmentation of crypto     */
  100.     /* into a separate DLL.                                            */
  101. #define KRB_DEFTIM 600 /* Default lifetime (minutes) */
  102. /* Kerberos structure definitions */
  103. struct krb_op_data { /* Operational data for all actions */
  104.     int version; /* Kerberos version    */
  105.     char * cache; /* Kerberos cache file */
  106. };
  107. struct krb4_init_data { /* INITIALIZE data structure */
  108.     int lifetime;
  109.     char * principal; /* Principal string */
  110.     char * instance;
  111.     char * realm;                       /* Realm string */
  112.     char * password; /* Kerberos password */
  113.     int    preauth;                     /* Use preauth mode? */
  114.     int    verbose;                     /* Verbose output? */
  115. };
  116. #define KRB5_NUM_OF_ADDRS 16
  117. struct krb5_init_data { /* INITIALIZE data structure */
  118.     int forwardable; /* Switch values */
  119.     int proxiable; /* Correspond to switch names... */
  120.     int lifetime;
  121.     int renew;
  122.     int renewable;
  123.     int validate;
  124.     char * postdate;
  125.     char * service;
  126.     char * principal; /* Principal string */
  127.     char * instance;
  128.     char * realm;                       /* Realm string */
  129.     char * password; /* Kerberos password */
  130.     int    preauth;                     /* Use preauth mode? */
  131.     int    verbose;                     /* Verbose output? */
  132.     int    getk4;                       /* Get K4 TGT? */
  133.     char * addrs[KRB5_NUM_OF_ADDRS+1];  /* List of IP Addresses */
  134. };
  135. struct krb5_list_cred_data { /* List Credentials data */
  136.     int encryption;
  137.     int flags;
  138.     int addr;
  139. };
  140. _PROTOTYP(int ck_krb5_autoget_TGT, (char *));
  141. _PROTOTYP(int ck_krb5_initTGT, (struct krb_op_data *,struct krb5_init_data *));
  142. _PROTOTYP(int ck_krb5_destroy, (struct krb_op_data *));
  143. _PROTOTYP(int ck_krb5_list_creds, (struct krb_op_data *,
  144.                                     struct krb5_list_cred_data *));
  145. _PROTOTYP(char * ck_krb5_getrealm, (char *));
  146. _PROTOTYP(char * ck_krb5_getprincipal, (char *));
  147. _PROTOTYP(char * ck_krb5_get_cc_name, (VOID));
  148. _PROTOTYP(int ck_krb4_autoget_TGT, (char *));
  149. _PROTOTYP(int ck_krb4_initTGT, (struct krb_op_data *,struct krb4_init_data *));
  150. _PROTOTYP(int ck_krb4_destroy, (struct krb_op_data *));
  151. _PROTOTYP(int ck_krb4_list_creds, (struct krb_op_data *));
  152. _PROTOTYP(char * ck_krb4_getrealm, (VOID));
  153. _PROTOTYP(char * ck_krb4_getprincipal, (VOID));
  154. _PROTOTYP(int ck_krb4_get_tkts, (VOID));
  155. _PROTOTYP(char * ck_krb4_get_next_tkt, (VOID));
  156. _PROTOTYP(int ck_krb4_tkt_isvalid,(char *));
  157. _PROTOTYP(int ck_krb4_is_tgt_valid,(VOID));
  158. _PROTOTYP(int ck_krb4_tkt_time,(char *));
  159. _PROTOTYP(int ck_krb5_get_tkts, (char *));
  160. _PROTOTYP(char * ck_krb5_get_next_tkt, (VOID));
  161. _PROTOTYP(int ck_krb5_tkt_isvalid,(char *,char *));
  162. _PROTOTYP(char * ck_krb5_tkt_flags,(char *,char *));
  163. _PROTOTYP(int ck_krb5_is_tgt_valid,(VOID));
  164. _PROTOTYP(int ck_krb5_tkt_time,(char *,char *));
  165. _PROTOTYP(int krb4_des_avail,(int));
  166. _PROTOTYP(int krb4_des_write,(int,char *,int));
  167. _PROTOTYP(int krb4_des_read, (int,char *,int));
  168. _PROTOTYP(int krb5_des_avail,(int));
  169. _PROTOTYP(int krb5_des_write,(int,char *,int));
  170. _PROTOTYP(int krb5_des_read, (int,char *,int));
  171. #endif /* CK_KERBEROS */
  172. _PROTOTYP(int ck_krb5_is_installed,(void));
  173. _PROTOTYP(int ck_krb4_is_installed,(void));
  174. _PROTOTYP(int ck_srp_is_installed,(void));
  175. _PROTOTYP(int ck_ntlm_is_installed,(void));
  176. _PROTOTYP(int ck_crypt_is_installed,(void));
  177. _PROTOTYP(int ck_ssleay_is_installed,(void));
  178. _PROTOTYP(VOID ck_encrypt_send_support,(VOID));
  179. _PROTOTYP(int ck_get_crypt_table,(struct keytab **, int *));
  180. _PROTOTYP(char * ck_krb4_realmofhost,(char *));
  181. _PROTOTYP(char * ck_krb5_realmofhost,(char *));
  182. #define AUTHTYPLSTSZ 8
  183. #define HEXDISP
  184. #endif /*KRB5_KERMIT_H*/