181cb6ddcSMark Murray /*- 281cb6ddcSMark Murray * Copyright (c) 1991, 1993 381cb6ddcSMark Murray * The Regents of the University of California. All rights reserved. 481cb6ddcSMark Murray * 581cb6ddcSMark Murray * Redistribution and use in source and binary forms, with or without 681cb6ddcSMark Murray * modification, are permitted provided that the following conditions 781cb6ddcSMark Murray * are met: 881cb6ddcSMark Murray * 1. Redistributions of source code must retain the above copyright 981cb6ddcSMark Murray * notice, this list of conditions and the following disclaimer. 1081cb6ddcSMark Murray * 2. Redistributions in binary form must reproduce the above copyright 1181cb6ddcSMark Murray * notice, this list of conditions and the following disclaimer in the 1281cb6ddcSMark Murray * documentation and/or other materials provided with the distribution. 1381cb6ddcSMark Murray * 3. All advertising materials mentioning features or use of this software 1481cb6ddcSMark Murray * must display the following acknowledgement: 1581cb6ddcSMark Murray * This product includes software developed by the University of 1681cb6ddcSMark Murray * California, Berkeley and its contributors. 1781cb6ddcSMark Murray * 4. Neither the name of the University nor the names of its contributors 1881cb6ddcSMark Murray * may be used to endorse or promote products derived from this software 1981cb6ddcSMark Murray * without specific prior written permission. 2081cb6ddcSMark Murray * 2181cb6ddcSMark Murray * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2281cb6ddcSMark Murray * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2381cb6ddcSMark Murray * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2481cb6ddcSMark Murray * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2581cb6ddcSMark Murray * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2681cb6ddcSMark Murray * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2781cb6ddcSMark Murray * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2881cb6ddcSMark Murray * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2981cb6ddcSMark Murray * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3081cb6ddcSMark Murray * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3181cb6ddcSMark Murray * SUCH DAMAGE. 3281cb6ddcSMark Murray * 3381cb6ddcSMark Murray * @(#)encrypt.h 8.1 (Berkeley) 6/4/93 3481cb6ddcSMark Murray */ 3581cb6ddcSMark Murray 3681cb6ddcSMark Murray /* 3781cb6ddcSMark Murray * Copyright (C) 1990 by the Massachusetts Institute of Technology 3881cb6ddcSMark Murray * 3981cb6ddcSMark Murray * Export of this software from the United States of America is assumed 4081cb6ddcSMark Murray * to require a specific license from the United States Government. 4181cb6ddcSMark Murray * It is the responsibility of any person or organization contemplating 4281cb6ddcSMark Murray * export to obtain such a license before exporting. 4381cb6ddcSMark Murray * 4481cb6ddcSMark Murray * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 4581cb6ddcSMark Murray * distribute this software and its documentation for any purpose and 4681cb6ddcSMark Murray * without fee is hereby granted, provided that the above copyright 4781cb6ddcSMark Murray * notice appear in all copies and that both that copyright notice and 4881cb6ddcSMark Murray * this permission notice appear in supporting documentation, and that 4981cb6ddcSMark Murray * the name of M.I.T. not be used in advertising or publicity pertaining 5081cb6ddcSMark Murray * to distribution of the software without specific, written prior 5181cb6ddcSMark Murray * permission. M.I.T. makes no representations about the suitability of 5281cb6ddcSMark Murray * this software for any purpose. It is provided "as is" without express 5381cb6ddcSMark Murray * or implied warranty. 5481cb6ddcSMark Murray */ 5581cb6ddcSMark Murray 5681cb6ddcSMark Murray #ifdef ENCRYPTION 5781cb6ddcSMark Murray # ifndef __ENCRYPTION__ 5881cb6ddcSMark Murray # define __ENCRYPTION__ 5981cb6ddcSMark Murray 6081cb6ddcSMark Murray #define DIR_DECRYPT 1 6181cb6ddcSMark Murray #define DIR_ENCRYPT 2 6281cb6ddcSMark Murray 630f8c8396SNick Sayer #include <des.h> 6481cb6ddcSMark Murray typedef unsigned char Block[8]; 6581cb6ddcSMark Murray typedef unsigned char *BlockT; 660f8c8396SNick Sayer #if 0 6704c426ccSMark Murray typedef struct { Block __; } Schedule[16]; 680f8c8396SNick Sayer #else 690f8c8396SNick Sayer #define Schedule des_key_schedule 700f8c8396SNick Sayer #endif 7181cb6ddcSMark Murray 7281cb6ddcSMark Murray #define VALIDKEY(key) ( key[0] | key[1] | key[2] | key[3] | \ 7381cb6ddcSMark Murray key[4] | key[5] | key[6] | key[7]) 7481cb6ddcSMark Murray 7581cb6ddcSMark Murray #define SAMEKEY(k1, k2) (!bcmp((void *)k1, (void *)k2, sizeof(Block))) 7681cb6ddcSMark Murray 7781cb6ddcSMark Murray typedef struct { 7881cb6ddcSMark Murray short type; 7981cb6ddcSMark Murray int length; 8081cb6ddcSMark Murray unsigned char *data; 8181cb6ddcSMark Murray } Session_Key; 8281cb6ddcSMark Murray 8381cb6ddcSMark Murray # if !defined(P) 8481cb6ddcSMark Murray # ifdef __STDC__ 8581cb6ddcSMark Murray # define P(x) x 8681cb6ddcSMark Murray # else 8781cb6ddcSMark Murray # define P(x) () 8881cb6ddcSMark Murray # endif 8981cb6ddcSMark Murray # endif 9081cb6ddcSMark Murray 9181cb6ddcSMark Murray typedef struct { 9281cb6ddcSMark Murray char *name; 9381cb6ddcSMark Murray int type; 9481cb6ddcSMark Murray void (*output) P((unsigned char *, int)); 9581cb6ddcSMark Murray int (*input) P((int)); 9681cb6ddcSMark Murray void (*init) P((int)); 9781cb6ddcSMark Murray int (*start) P((int, int)); 9881cb6ddcSMark Murray int (*is) P((unsigned char *, int)); 9981cb6ddcSMark Murray int (*reply) P((unsigned char *, int)); 10081cb6ddcSMark Murray void (*session) P((Session_Key *, int)); 10181cb6ddcSMark Murray int (*keyid) P((int, unsigned char *, int *)); 10281cb6ddcSMark Murray void (*printsub) P((unsigned char *, int, unsigned char *, int)); 10381cb6ddcSMark Murray } Encryptions; 10481cb6ddcSMark Murray 10581cb6ddcSMark Murray #define SK_DES 1 /* Matched Kerberos v5 KEYTYPE_DES */ 10681cb6ddcSMark Murray 10781cb6ddcSMark Murray #include "enc-proto.h" 10881cb6ddcSMark Murray 10981cb6ddcSMark Murray extern int encrypt_debug_mode; 11081cb6ddcSMark Murray extern int (*decrypt_input) P((int)); 11181cb6ddcSMark Murray extern void (*encrypt_output) P((unsigned char *, int)); 11281cb6ddcSMark Murray # endif /* __ENCRYPTION__ */ 11381cb6ddcSMark Murray #endif /* ENCRYPTION */ 114