| /* |
| C K U A T 2 . H -- Kerberos headers for C-Kermit |
| |
| Copyright (C) 1985, 2004, |
| Trustees of Columbia University in the City of New York. |
| All rights reserved. See the C-Kermit COPYING.TXT file or the |
| copyright text in the ckcmai.c module for disclaimer and permissions. |
| |
| Author: |
| Kerberos IV and V intergration. |
| Jeffrey E Altman (jaltman@secure-endpoints.com) |
| Secure Endpoints Inc., New York City |
| */ |
| /* |
| * Based on a concatenation of all necessary include files distributed with |
| * the Kerberos 5 NT Alpha 2 Telnet package from MIT. |
| */ |
| |
| #ifndef KRB5_TELNET_H |
| #define KRB5_TELNET_H |
| /*- |
| * Copyright (c) 1991, 1993 |
| * The Regents of the University of California. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * 3. All advertising materials mentioning features or use of this software |
| * must display the following acknowledgement: |
| * This product includes software developed by the University of |
| * California, Berkeley and its contributors. |
| * 4. Neither the name of the University nor the names of its contributors |
| * may be used to endorse or promote products derived from this software |
| * without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| * |
| * @(#)encrypt.h 8.1 (Berkeley) 6/4/93 |
| */ |
| |
| /* |
| * Copyright (C) 1990 by the Massachusetts Institute of Technology |
| * |
| * Export of this software from the United States of America may |
| * require a specific license from the United States Government. |
| * It is the responsibility of any person or organization contemplating |
| * export to obtain such a license before exporting. |
| * |
| * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and |
| * distribute this software and its documentation for any purpose and |
| * without fee is hereby granted, provided that the above copyright |
| * notice appear in all copies and that both that copyright notice and |
| * this permission notice appear in supporting documentation, and that |
| * the name of M.I.T. not be used in advertising or publicity pertaining |
| * to distribution of the software without specific, written prior |
| * permission. M.I.T. makes no representations about the suitability of |
| * this software for any purpose. It is provided "as is" without express |
| * or implied warranty. |
| */ |
| |
| #ifdef CK_ENCRYPTION |
| |
| #ifndef __ENCRYPTION__ |
| #define __ENCRYPTION__ |
| |
| #define DIR_DECRYPT 1 |
| #define DIR_ENCRYPT 2 |
| |
| #ifndef CK_DES_C |
| #ifndef NOBLOCKDEF |
| typedef unsigned char Block[8]; |
| #endif /* NOBLOCKDEF */ |
| typedef unsigned char *BlockT; |
| #ifndef KRB4 /* already defined in kerberosiv/des.h */ |
| typedef struct des_ks_struct { Block _; } Schedule[16]; |
| #else /* KRB4 */ |
| #ifndef OS2 |
| #ifndef NOBLOCKDEF /* already defined in kerberosiv/des.h */ |
| typedef struct des_ks_struct { Block _; } Schedule[16]; |
| #endif /* NOBLOCKDEF */ |
| #endif /* OS2 */ |
| #endif /* KRB4 */ |
| |
| #define VALIDKEY(key) (key[0]|key[1]|key[2]|key[3]|key[4]|key[5]|key[6]|key[7]) |
| |
| #define SAMEKEY(k1, k2) (!memcmp((void *)k1, (void *)k2, sizeof(Block))) |
| #endif /* CK_DES_C */ |
| |
| typedef struct _session_key { |
| short type; |
| int length; |
| unsigned char *data; |
| } Session_Key; |
| |
| #ifdef __STDC__ |
| typedef struct { |
| char *name; |
| int type; |
| void (*output)(unsigned char *, int); |
| int (*input)(int); |
| void (*init)(int); |
| int (*start)(int, int); |
| int (*is)(unsigned char *, int); |
| int (*reply)(unsigned char *, int); |
| int (*session)(Session_Key *, int); |
| int (*keyid)(int, unsigned char *, int *); |
| void (*printsub)(unsigned char *, int, unsigned char *, int); |
| } Encryptions; |
| #if !defined(P) |
| #define P(x) x |
| #endif |
| #else |
| typedef struct { |
| char *name; |
| int type; |
| void (*output)(); |
| int (*input)(); |
| void (*init)(); |
| int (*start)(); |
| int (*is)(); |
| int (*reply)(); |
| int (*session)(); |
| int (*keyid)(); |
| void (*printsub)(); |
| } Encryptions; |
| #if !defined(P) |
| #define P(x) () |
| #endif |
| #endif |
| |
| int encrypt_parse(unsigned char *, int); |
| |
| #ifdef DEBUG |
| int printsub(char, unsigned char *, size_t); |
| #endif |
| |
| #define SK_GENERIC 0 /* Just a string of bits */ |
| #define SK_DES 1 /* Matched Kerberos v5 ENCTYPE_DES */ |
| |
| void encrypt_init P((kstream,int)); |
| Encryptions *findencryption P((int)); |
| void encrypt_send_support P((void)); |
| void encrypt_auto P((int)); |
| void decrypt_auto P((int)); |
| int encrypt_is P((unsigned char *, int)); |
| int encrypt_reply P((unsigned char *, int)); |
| void encrypt_start_input P((int)); |
| int encrypt_session_key P((Session_Key *, int)); |
| int encrypt_dont_support P((int)); |
| void encrypt_end_input P((void)); |
| void encrypt_start_output P((int)); |
| void encrypt_end_output P((void)); |
| void encrypt_send_request_start P((void)); |
| void encrypt_send_request_end P((void)); |
| void encrypt_send_end P((void)); |
| void encrypt_wait P((void)); |
| int encrypt_is_encrypting P((void)); |
| void encrypt_send_support P((void)); |
| int encrypt_send_keyid P((int, unsigned char *, int, int)); |
| |
| int encrypt_cmd P((int, char **)); |
| void encrypt_display P((void)); |
| |
| #ifdef CK_KERBEROS |
| void krbdes_encrypt P((unsigned char *, int)); |
| int krbdes_decrypt P((int)); |
| int krbdes_is P((unsigned char *, int)); |
| int krbdes_reply P((unsigned char *, int)); |
| void krbdes_init P((int)); |
| int krbdes_start P((int, int)); |
| void krbdes_session P((Session_Key *, int)); |
| void krbdes_printsub P((unsigned char *, int, unsigned char *, int)); |
| #endif /* CK_KERBEROS */ |
| |
| void cfb64_encrypt P((unsigned char *, int)); |
| int cfb64_decrypt P((int)); |
| void cfb64_init P((int)); |
| int cfb64_start P((int, int)); |
| int cfb64_is P((unsigned char *, int)); |
| int cfb64_reply P((unsigned char *, int)); |
| int cfb64_session P((Session_Key *, int)); |
| int cfb64_keyid P((int, unsigned char *, int *)); |
| void cfb64_printsub P((unsigned char *, int, unsigned char *, int)); |
| |
| void ofb64_encrypt P((unsigned char *, int)); |
| int ofb64_decrypt P((int)); |
| void ofb64_init P((int)); |
| int ofb64_start P((int, int)); |
| int ofb64_is P((unsigned char *, int)); |
| int ofb64_reply P((unsigned char *, int)); |
| int ofb64_session P((Session_Key *, int)); |
| int ofb64_keyid P((int, unsigned char *, int *)); |
| void ofb64_printsub P((unsigned char *, int, unsigned char *, int)); |
| |
| void des3_cfb64_encrypt P((unsigned char *, int)); |
| int des3_cfb64_decrypt P((int)); |
| void des3_cfb64_init P((int)); |
| int des3_cfb64_start P((int, int)); |
| int des3_cfb64_is P((unsigned char *, int)); |
| int des3_cfb64_reply P((unsigned char *, int)); |
| int des3_cfb64_session P((Session_Key *, int)); |
| int des3_cfb64_keyid P((int, unsigned char *, int *)); |
| void des3_cfb64_printsub P((unsigned char *, int, unsigned char *, int)); |
| |
| void des3_ofb64_encrypt P((unsigned char *, int)); |
| int des3_ofb64_decrypt P((int)); |
| void des3_ofb64_init P((int)); |
| int des3_ofb64_start P((int, int)); |
| int des3_ofb64_is P((unsigned char *, int)); |
| int des3_ofb64_reply P((unsigned char *, int)); |
| int des3_ofb64_session P((Session_Key *, int)); |
| int des3_ofb64_keyid P((int, unsigned char *, int *)); |
| void des3_ofb64_printsub P((unsigned char *, int, unsigned char *, int)); |
| |
| #ifdef CAST_ENCRYPTION |
| void cast_cfb64_encrypt P((unsigned char *, int)); |
| int cast_cfb64_decrypt P((int)); |
| void cast_cfb64_init P((int)); |
| int cast_cfb64_start P((int, int)); |
| int cast_cfb64_is P((unsigned char *, int)); |
| int cast_cfb64_reply P((unsigned char *, int)); |
| int cast_cfb64_session P((Session_Key *, int)); |
| int cast_cfb64_keyid P((int, unsigned char *, int *)); |
| void cast_cfb64_printsub P((unsigned char *, int, unsigned char *, int)); |
| |
| void cast_ofb64_encrypt P((unsigned char *, int)); |
| int cast_ofb64_decrypt P((int)); |
| void cast_ofb64_init P((int)); |
| int cast_ofb64_start P((int, int)); |
| int cast_ofb64_is P((unsigned char *, int)); |
| int cast_ofb64_reply P((unsigned char *, int)); |
| int cast_ofb64_session P((Session_Key *, int)); |
| int cast_ofb64_keyid P((int, unsigned char *, int *)); |
| void cast_ofb64_printsub P((unsigned char *, int, unsigned char *, int)); |
| |
| void castexp_cfb64_encrypt P((unsigned char *, int)); |
| int castexp_cfb64_decrypt P((int)); |
| void castexp_cfb64_init P((int)); |
| int castexp_cfb64_start P((int, int)); |
| int castexp_cfb64_is P((unsigned char *, int)); |
| int castexp_cfb64_reply P((unsigned char *, int)); |
| int castexp_cfb64_session P((Session_Key *, int)); |
| int castexp_cfb64_keyid P((int, unsigned char *, int *)); |
| void castexp_cfb64_printsub P((unsigned char *, int, unsigned char *, int)); |
| |
| void castexp_ofb64_encrypt P((unsigned char *, int)); |
| int castexp_ofb64_decrypt P((int)); |
| void castexp_ofb64_init P((int)); |
| int castexp_ofb64_start P((int, int)); |
| int castexp_ofb64_is P((unsigned char *, int)); |
| int castexp_ofb64_reply P((unsigned char *, int)); |
| int castexp_ofb64_session P((Session_Key *, int)); |
| int castexp_ofb64_keyid P((int, unsigned char *, int *)); |
| void castexp_ofb64_printsub P((unsigned char *, int, unsigned char *, int)); |
| #endif /* CAST_ENCRYPTION */ |
| |
| /* int des_string_to_key P((char *, Block)); */ |
| |
| #ifdef DEBUG |
| extern int encrypt_debug_mode; |
| #endif |
| |
| #ifndef CRYPT_DLL |
| extern int (*decrypt_input) P((int)); |
| extern void (*encrypt_output) P((unsigned char *, int)); |
| #endif /* CRYPT_DLL */ |
| |
| int decrypt_ks_hack(unsigned char *, int); |
| |
| #endif /* __ENCRYPTION__ */ |
| #endif /* ENCRYPTION */ |
| |
| #ifdef CRYPT_DLL |
| struct _crypt_dll_init { |
| int version; |
| |
| /* Version 1 variables */ |
| int (*p_ttol)(char *,int); |
| int (*p_dodebug)(int,char *,char *,long); |
| int (*p_dohexdump)(char *,char *,int); |
| void (*p_tn_debug)(char *); |
| int (*p_vscrnprintf)(char *, ...); |
| |
| /* Version 2 variables */ |
| void * p_k5_context; |
| |
| /* Version 3 variables */ |
| void (*p_install_funcs)(char *,void *); |
| |
| /* Version 5 variables */ |
| unsigned long (*p_reqtelmutex)(unsigned long); |
| unsigned long (*p_reltelmutex)(void); |
| }; |
| #endif /* CRYPT_DLL */ |
| |
| /* per Kerberos v5 protocol spec */ |
| #ifndef ENCTYPE_NULL |
| #define ENCTYPE_NULL 0x0000 |
| #endif |
| #ifndef ENCTYPE_DES_CBC_CRC |
| #define ENCTYPE_DES_CBC_CRC 0x0001 /* DES cbc mode with CRC-32 */ |
| #endif |
| #ifndef ENCTYPE_DES_CBC_MD4 |
| #define ENCTYPE_DES_CBC_MD4 0x0002 /* DES cbc mode with RSA-MD4 */ |
| #endif |
| #ifndef ENCTYPE_DES_CBC_MD5 |
| #define ENCTYPE_DES_CBC_MD5 0x0003 /* DES cbc mode with RSA-MD5 */ |
| #endif |
| #ifndef ENCTYPE_DES_CBC_RAW |
| #define ENCTYPE_DES_CBC_RAW 0x0004 /* DES cbc mode raw */ |
| #endif |
| /* XXX deprecated? */ |
| #ifndef ENCTYPE_DES3_CBC_SHA |
| #define ENCTYPE_DES3_CBC_SHA 0x0005 /* DES-3 cbc mode with NIST-SHA */ |
| #endif |
| #ifndef ENCTYPE_DES3_CBC_RAW |
| #define ENCTYPE_DES3_CBC_RAW 0x0006 /* DES-3 cbc mode raw */ |
| #endif |
| #ifndef ENCTYPE_DES_HMAC_SHA1 |
| #define ENCTYPE_DES_HMAC_SHA1 0x0008 |
| #endif |
| #ifndef ENCTYPE_DES3_CBC_SHA1 |
| #define ENCTYPE_DES3_CBC_SHA1 0x0010 |
| #endif |
| #ifndef ENCTYPE_AES128_CTS_HMAC_SHA1_96 |
| #define ENCTYPE_AES128_CTS_HMAC_SHA1_96 0x0011 |
| #endif |
| #ifndef ENCTYPE_AES256_CTS_HMAC_SHA1_96 |
| #define ENCTYPE_AES256_CTS_HMAC_SHA1_96 0x0012 |
| #endif |
| #ifndef ENCTYPE_ARCFOUR_HMAC |
| #define ENCTYPE_ARCFOUR_HMAC 0x0017 |
| #endif |
| #ifndef ENCTYPE_ARCFOUR_HMAC_EXP |
| #define ENCTYPE_ARCFOUR_HMAC_EXP 0x0018 |
| #endif |
| #ifndef ENCTYPE_LOCAL_RC4_MD4 |
| #define ENCTYPE_LOCAL_RC4_MD4 0xFFFFFF80 |
| #endif |
| #ifndef ENCTYPE_UNKNOWN |
| #define ENCTYPE_UNKNOWN 0x01ff |
| #endif |
| /* local crud */ |
| /* marc's DES-3 with 32-bit length */ |
| #ifndef ENCTYPE_LOCAL_DES3_HMAC_SHA1 |
| #define ENCTYPE_LOCAL_DES3_HMAC_SHA1 0x7007 |
| #endif |
| #endif /* KRB5_TELNET_H */ |