1*7348b5c5SDavid van Moolenbroek /*- 2*7348b5c5SDavid van Moolenbroek * Copyright (c) 1991, 1993 3*7348b5c5SDavid van Moolenbroek * Dave Safford. All rights reserved. 4*7348b5c5SDavid van Moolenbroek * 5*7348b5c5SDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 6*7348b5c5SDavid van Moolenbroek * modification, are permitted provided that the following conditions 7*7348b5c5SDavid van Moolenbroek * are met: 8*7348b5c5SDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright 9*7348b5c5SDavid van Moolenbroek * notice, this list of conditions and the following disclaimer. 10*7348b5c5SDavid van Moolenbroek * 2. Redistributions in binary form must reproduce the above copyright 11*7348b5c5SDavid van Moolenbroek * notice, this list of conditions and the following disclaimer in the 12*7348b5c5SDavid van Moolenbroek * documentation and/or other materials provided with the distribution. 13*7348b5c5SDavid van Moolenbroek * 3. Neither the name of the University nor the names of its contributors 14*7348b5c5SDavid van Moolenbroek * may be used to endorse or promote products derived from this software 15*7348b5c5SDavid van Moolenbroek * without specific prior written permission. 16*7348b5c5SDavid van Moolenbroek * 17*7348b5c5SDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18*7348b5c5SDavid van Moolenbroek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*7348b5c5SDavid van Moolenbroek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*7348b5c5SDavid van Moolenbroek * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21*7348b5c5SDavid van Moolenbroek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*7348b5c5SDavid van Moolenbroek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23*7348b5c5SDavid van Moolenbroek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24*7348b5c5SDavid van Moolenbroek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25*7348b5c5SDavid van Moolenbroek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26*7348b5c5SDavid van Moolenbroek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27*7348b5c5SDavid van Moolenbroek * SUCH DAMAGE. 28*7348b5c5SDavid van Moolenbroek * 29*7348b5c5SDavid van Moolenbroek * $FreeBSD: src/contrib/telnet/libtelnet/pk.h,v 1.6 2001/11/30 21:06:34 markm Exp $ 30*7348b5c5SDavid van Moolenbroek */ 31*7348b5c5SDavid van Moolenbroek 32*7348b5c5SDavid van Moolenbroek /* header for the des routines that we will use */ 33*7348b5c5SDavid van Moolenbroek 34*7348b5c5SDavid van Moolenbroek typedef unsigned char byte, DesData[ 8], IdeaData[16]; 35*7348b5c5SDavid van Moolenbroek #define DesKeys des_key_schedule 36*7348b5c5SDavid van Moolenbroek 37*7348b5c5SDavid van Moolenbroek #define DES_DECRYPT 0 38*7348b5c5SDavid van Moolenbroek #define DES_ENCRYPT 1 39*7348b5c5SDavid van Moolenbroek 40*7348b5c5SDavid van Moolenbroek /* public key routines */ 41*7348b5c5SDavid van Moolenbroek /* functions: 42*7348b5c5SDavid van Moolenbroek genkeys(char *public, char *secret) 43*7348b5c5SDavid van Moolenbroek common_key(char *secret, char *public, desData *deskey) 44*7348b5c5SDavid van Moolenbroek where 45*7348b5c5SDavid van Moolenbroek char public[HEXKEYBYTES + 1]; 46*7348b5c5SDavid van Moolenbroek char secret[HEXKEYBYTES + 1]; 47*7348b5c5SDavid van Moolenbroek */ 48*7348b5c5SDavid van Moolenbroek 49*7348b5c5SDavid van Moolenbroek #define HEXMODULUS "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b" 50*7348b5c5SDavid van Moolenbroek #define HEXKEYBYTES 48 51*7348b5c5SDavid van Moolenbroek #define KEYSIZE 192 52*7348b5c5SDavid van Moolenbroek #define KEYBYTES 24 53*7348b5c5SDavid van Moolenbroek #define PROOT 3 54*7348b5c5SDavid van Moolenbroek 55*7348b5c5SDavid van Moolenbroek extern void genkeys(char *public, char *secret); 56*7348b5c5SDavid van Moolenbroek extern void common_key(char *secret, char *public, IdeaData *common, 57*7348b5c5SDavid van Moolenbroek DesData *deskey); 58*7348b5c5SDavid van Moolenbroek extern void pk_encode(const char *in, char *out, DesData *deskey); 59*7348b5c5SDavid van Moolenbroek extern void pk_decode(const char *in, char *out, DesData *deskey); 60