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. 13351432Semaste * 3. Neither the name of the University nor the names of its contributors 1429088Smarkm * may be used to endorse or promote products derived from this software 1529088Smarkm * without specific prior written permission. 1629088Smarkm * 1729088Smarkm * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1829088Smarkm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1929088Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2029088Smarkm * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2129088Smarkm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2229088Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2329088Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2429088Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2529088Smarkm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2629088Smarkm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2729088Smarkm * SUCH DAMAGE. 2829088Smarkm * 2929088Smarkm * @(#)encrypt.h 8.1 (Berkeley) 6/4/93 3057442Smarkm * $FreeBSD: stable/11/contrib/telnet/libtelnet/encrypt.h 351432 2019-08-23 17:40:47Z emaste $ 3129088Smarkm */ 3229088Smarkm 3329088Smarkm/* 3429088Smarkm * Copyright (C) 1990 by the Massachusetts Institute of Technology 3529088Smarkm * 3629088Smarkm * Export of this software from the United States of America is assumed 3729088Smarkm * to require a specific license from the United States Government. 3829088Smarkm * It is the responsibility of any person or organization contemplating 3929088Smarkm * export to obtain such a license before exporting. 4029088Smarkm * 4129088Smarkm * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 4229088Smarkm * distribute this software and its documentation for any purpose and 4329088Smarkm * without fee is hereby granted, provided that the above copyright 4429088Smarkm * notice appear in all copies and that both that copyright notice and 4529088Smarkm * this permission notice appear in supporting documentation, and that 4629088Smarkm * the name of M.I.T. not be used in advertising or publicity pertaining 4729088Smarkm * to distribution of the software without specific, written prior 4829088Smarkm * permission. M.I.T. makes no representations about the suitability of 4929088Smarkm * this software for any purpose. It is provided "as is" without express 5029088Smarkm * or implied warranty. 5129088Smarkm */ 5229088Smarkm 5329088Smarkm#ifdef ENCRYPTION 5429088Smarkm# ifndef __ENCRYPTION__ 5529088Smarkm# define __ENCRYPTION__ 5629088Smarkm 5729088Smarkm#define DIR_DECRYPT 1 5829088Smarkm#define DIR_ENCRYPT 2 5929088Smarkm 6057442Smarkm#include <openssl/des.h> 6129088Smarkmtypedef unsigned char Block[8]; 6229088Smarkmtypedef unsigned char *BlockT; 6349887Snsayer#if 0 6429181Smarkmtypedef struct { Block __; } Schedule[16]; 6549887Snsayer#else 6649887Snsayer#define Schedule des_key_schedule 6749887Snsayer#endif 6829088Smarkm 6929088Smarkm#define VALIDKEY(key) ( key[0] | key[1] | key[2] | key[3] | \ 7029088Smarkm key[4] | key[5] | key[6] | key[7]) 7129088Smarkm 7229088Smarkm#define SAMEKEY(k1, k2) (!bcmp((void *)k1, (void *)k2, sizeof(Block))) 7329088Smarkm 7429088Smarkmtypedef struct { 7529088Smarkm short type; 7629088Smarkm int length; 7729088Smarkm unsigned char *data; 7829088Smarkm} Session_Key; 7929088Smarkm 8029088Smarkmtypedef struct { 8187139Smarkm const char *name; 8229088Smarkm int type; 8387139Smarkm void (*output)(unsigned char *, int); 8487139Smarkm int (*input)(int); 8587139Smarkm void (*init)(int); 8687139Smarkm int (*start)(int, int); 8787139Smarkm int (*is)(unsigned char *, int); 8887139Smarkm int (*reply)(unsigned char *, int); 8987139Smarkm void (*session)(Session_Key *, int); 9087139Smarkm int (*keyid)(int, unsigned char *, int *); 9187139Smarkm void (*printsub)(unsigned char *, int, unsigned char *, int); 9229088Smarkm} Encryptions; 9329088Smarkm 9429088Smarkm#define SK_DES 1 /* Matched Kerberos v5 KEYTYPE_DES */ 9529088Smarkm 9629088Smarkm#include "enc-proto.h" 9729088Smarkm 9829088Smarkmextern int encrypt_debug_mode; 9987139Smarkmextern int (*decrypt_input)(int); 10087139Smarkmextern void (*encrypt_output)(unsigned char *, int); 10129088Smarkm# endif /* __ENCRYPTION__ */ 10229088Smarkm#endif /* ENCRYPTION */ 103