encrypt.h revision 29181
129088Smarkm/*- 229088Smarkm * Copyright (c) 1991, 1993 329088Smarkm * The Regents of the University of California. All rights reserved. 429088Smarkm * 529088Smarkm * Redistribution and use in source and binary forms, with or without 629088Smarkm * modification, are permitted provided that the following conditions 729088Smarkm * are met: 829088Smarkm * 1. Redistributions of source code must retain the above copyright 929088Smarkm * notice, this list of conditions and the following disclaimer. 1029088Smarkm * 2. Redistributions in binary form must reproduce the above copyright 1129088Smarkm * notice, this list of conditions and the following disclaimer in the 1229088Smarkm * documentation and/or other materials provided with the distribution. 1329088Smarkm * 3. All advertising materials mentioning features or use of this software 1429088Smarkm * must display the following acknowledgement: 1529088Smarkm * This product includes software developed by the University of 1629088Smarkm * California, Berkeley and its contributors. 1729088Smarkm * 4. Neither the name of the University nor the names of its contributors 1829088Smarkm * may be used to endorse or promote products derived from this software 1929088Smarkm * without specific prior written permission. 2029088Smarkm * 2129088Smarkm * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2229088Smarkm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2329088Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2429088Smarkm * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2529088Smarkm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2629088Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2729088Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2829088Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2929088Smarkm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3029088Smarkm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3129088Smarkm * SUCH DAMAGE. 3229088Smarkm * 3329088Smarkm * @(#)encrypt.h 8.1 (Berkeley) 6/4/93 3429088Smarkm */ 3529088Smarkm 3629088Smarkm/* 3729088Smarkm * Copyright (C) 1990 by the Massachusetts Institute of Technology 3829088Smarkm * 3929088Smarkm * Export of this software from the United States of America is assumed 4029088Smarkm * to require a specific license from the United States Government. 4129088Smarkm * It is the responsibility of any person or organization contemplating 4229088Smarkm * export to obtain such a license before exporting. 4329088Smarkm * 4429088Smarkm * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 4529088Smarkm * distribute this software and its documentation for any purpose and 4629088Smarkm * without fee is hereby granted, provided that the above copyright 4729088Smarkm * notice appear in all copies and that both that copyright notice and 4829088Smarkm * this permission notice appear in supporting documentation, and that 4929088Smarkm * the name of M.I.T. not be used in advertising or publicity pertaining 5029088Smarkm * to distribution of the software without specific, written prior 5129088Smarkm * permission. M.I.T. makes no representations about the suitability of 5229088Smarkm * this software for any purpose. It is provided "as is" without express 5329088Smarkm * or implied warranty. 5429088Smarkm */ 5529088Smarkm 5629088Smarkm#ifdef ENCRYPTION 5729088Smarkm# ifndef __ENCRYPTION__ 5829088Smarkm# define __ENCRYPTION__ 5929088Smarkm 6029088Smarkm#define DIR_DECRYPT 1 6129088Smarkm#define DIR_ENCRYPT 2 6229088Smarkm 6329088Smarkmtypedef unsigned char Block[8]; 6429088Smarkmtypedef unsigned char *BlockT; 6529181Smarkmtypedef struct { Block __; } Schedule[16]; 6629088Smarkm 6729088Smarkm#define VALIDKEY(key) ( key[0] | key[1] | key[2] | key[3] | \ 6829088Smarkm key[4] | key[5] | key[6] | key[7]) 6929088Smarkm 7029088Smarkm#define SAMEKEY(k1, k2) (!bcmp((void *)k1, (void *)k2, sizeof(Block))) 7129088Smarkm 7229088Smarkmtypedef struct { 7329088Smarkm short type; 7429088Smarkm int length; 7529088Smarkm unsigned char *data; 7629088Smarkm} Session_Key; 7729088Smarkm 7829088Smarkm# if !defined(P) 7929088Smarkm# ifdef __STDC__ 8029088Smarkm# define P(x) x 8129088Smarkm# else 8229088Smarkm# define P(x) () 8329088Smarkm# endif 8429088Smarkm# endif 8529088Smarkm 8629088Smarkmtypedef struct { 8729088Smarkm char *name; 8829088Smarkm int type; 8929088Smarkm void (*output) P((unsigned char *, int)); 9029088Smarkm int (*input) P((int)); 9129088Smarkm void (*init) P((int)); 9229088Smarkm int (*start) P((int, int)); 9329088Smarkm int (*is) P((unsigned char *, int)); 9429088Smarkm int (*reply) P((unsigned char *, int)); 9529088Smarkm void (*session) P((Session_Key *, int)); 9629088Smarkm int (*keyid) P((int, unsigned char *, int *)); 9729088Smarkm void (*printsub) P((unsigned char *, int, unsigned char *, int)); 9829088Smarkm} Encryptions; 9929088Smarkm 10029088Smarkm#define SK_DES 1 /* Matched Kerberos v5 KEYTYPE_DES */ 10129088Smarkm 10229088Smarkm#include "enc-proto.h" 10329088Smarkm 10429088Smarkmextern int encrypt_debug_mode; 10529088Smarkmextern int (*decrypt_input) P((int)); 10629088Smarkmextern void (*encrypt_output) P((unsigned char *, int)); 10729088Smarkm# endif /* __ENCRYPTION__ */ 10829088Smarkm#endif /* ENCRYPTION */ 109