des_crypt.h revision 26209
1198892Srdivacky/* 2198892Srdivacky * @(#)des_crypt.h 2.1 88/08/11 4.0 RPCSRC; from 1.4 88/02/08 (C) 1986 SMI 3198892Srdivacky * 4198892Srdivacky * des_crypt.h, des library routine interface 5198892Srdivacky * Copyright (C) 1986, Sun Microsystems, Inc. 6198892Srdivacky */ 7198892Srdivacky/* 8198892Srdivacky * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 9198892Srdivacky * unrestricted use provided that this legend is included on all tape 10198892Srdivacky * media and as a part of the software program in whole or part. Users 11198892Srdivacky * may copy or modify Sun RPC without charge, but are not authorized 12198892Srdivacky * to license or distribute it to anyone else except as part of a product or 13198892Srdivacky * program developed by the user. 14198892Srdivacky * 15198892Srdivacky * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 16198892Srdivacky * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 17198892Srdivacky * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 18198892Srdivacky * 19198892Srdivacky * Sun RPC is provided with no support and without any obligation on the 20198892Srdivacky * part of Sun Microsystems, Inc. to assist in its use, correction, 21198892Srdivacky * modification or enhancement. 22198892Srdivacky * 23198892Srdivacky * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 24198892Srdivacky * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 25198892Srdivacky * OR ANY PART THEREOF. 26198892Srdivacky * 27198892Srdivacky * In no event will Sun Microsystems, Inc. be liable for any lost revenue 28198892Srdivacky * or profits or other special, indirect and consequential damages, even if 29198892Srdivacky * Sun has been advised of the possibility of such damages. 30198892Srdivacky * 31198892Srdivacky * Sun Microsystems, Inc. 32198892Srdivacky * 2550 Garcia Avenue 33198892Srdivacky * Mountain View, California 94043 34198892Srdivacky */ 35198892Srdivacky 36198892Srdivacky#include <sys/cdefs.h> 37198892Srdivacky#include <rpc/rpc.h> 38198892Srdivacky 39198892Srdivacky#define DES_MAXDATA 8192 /* max bytes encrypted in one call */ 40198892Srdivacky#define DES_DIRMASK (1 << 0) 41198892Srdivacky#define DES_ENCRYPT (0*DES_DIRMASK) /* Encrypt */ 42198892Srdivacky#define DES_DECRYPT (1*DES_DIRMASK) /* Decrypt */ 43198892Srdivacky 44198892Srdivacky 45198892Srdivacky#define DES_DEVMASK (1 << 1) 46198892Srdivacky#define DES_HW (0*DES_DEVMASK) /* Use hardware device */ 47198892Srdivacky#define DES_SW (1*DES_DEVMASK) /* Use software device */ 48198892Srdivacky 49198892Srdivacky 50198892Srdivacky#define DESERR_NONE 0 /* succeeded */ 51198892Srdivacky#define DESERR_NOHWDEVICE 1 /* succeeded, but hw device not available */ 52198892Srdivacky#define DESERR_HWERROR 2 /* failed, hardware/driver error */ 53198892Srdivacky#define DESERR_BADPARAM 3 /* failed, bad parameter to call */ 54198892Srdivacky 55198892Srdivacky#define DES_FAILED(err) \ 56198892Srdivacky ((err) > DESERR_NOHWDEVICE) 57198892Srdivacky 58198892Srdivacky/* 59198892Srdivacky * cbc_crypt() 60198892Srdivacky * ecb_crypt() 61198892Srdivacky * 62198892Srdivacky * Encrypt (or decrypt) len bytes of a buffer buf. 63198892Srdivacky * The length must be a multiple of eight. 64198892Srdivacky * The key should have odd parity in the low bit of each byte. 65198892Srdivacky * ivec is the input vector, and is updated to the new one (cbc only). 66198892Srdivacky * The mode is created by oring together the appropriate parameters. 67198892Srdivacky * DESERR_NOHWDEVICE is returned if DES_HW was specified but 68198892Srdivacky * there was no hardware to do it on (the data will still be 69198892Srdivacky * encrypted though, in software). 70198892Srdivacky */ 71198892Srdivacky 72198892Srdivacky 73198892Srdivacky/* 74198892Srdivacky * Cipher Block Chaining mode 75198892Srdivacky */ 76198892Srdivacky__BEGIN_DECLS 77198892Srdivacky#ifdef __STDC__ 78198892Srdivackyint cbc_crypt __P(( char *, char *, unsigned int, unsigned int, char *)); 79198892Srdivacky#else 80199481Srdivackycbc_crypt(/* key, buf, len, mode, ivec */); /* 81198892Srdivacky char *key; 82198892Srdivacky char *buf; 83198892Srdivacky unsigned len; 84198892Srdivacky unsigned mode; 85198892Srdivacky char *ivec; 86198892Srdivacky*/ 87198892Srdivacky#endif 88198892Srdivacky 89198892Srdivacky/* 90198892Srdivacky * Electronic Code Book mode 91198892Srdivacky */ 92198892Srdivacky#ifdef __STDC__ 93198892Srdivackyint ecb_crypt __P(( char *, char *, unsigned int, unsigned int )); 94198892Srdivacky#else 95198892Srdivackyecb_crypt(/* key, buf, len, mode */); /* 96198892Srdivacky char *key; 97198892Srdivacky char *buf; 98198892Srdivacky unsigned len; 99198892Srdivacky unsigned mode; 100198892Srdivacky*/ 101198892Srdivacky#endif 102198892Srdivacky__END_DECLS 103198892Srdivacky 104198892Srdivacky#ifndef KERNEL 105198892Srdivacky/* 106198892Srdivacky * Set des parity for a key. 107198892Srdivacky * DES parity is odd and in the low bit of each byte 108198892Srdivacky */ 109198892Srdivacky__BEGIN_DECLS 110198892Srdivacky#ifdef __STDC__ 111198892Srdivackyvoid des_setparity __P(( char *)); 112198892Srdivacky#else 113198892Srdivackyvoid 114198892Srdivackydes_setparity(/* key */); /* 115198892Srdivacky char *key; 116198892Srdivacky*/ 117198892Srdivacky#endif 118198892Srdivacky__END_DECLS 119198892Srdivacky#endif 120198892Srdivacky