1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * @(#)des_crypt.h 2.1 88/08/11 4.0 RPCSRC; from 1.4 88/02/08 (C) 1986 SMI 3*53ee8cc1Swenshuai.xi * 4*53ee8cc1Swenshuai.xi * des_crypt.h, des library routine interface 5*53ee8cc1Swenshuai.xi * Copyright (C) 1986, Sun Microsystems, Inc. 6*53ee8cc1Swenshuai.xi */ 7*53ee8cc1Swenshuai.xi /* 8*53ee8cc1Swenshuai.xi * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 9*53ee8cc1Swenshuai.xi * unrestricted use provided that this legend is included on all tape 10*53ee8cc1Swenshuai.xi * media and as a part of the software program in whole or part. Users 11*53ee8cc1Swenshuai.xi * may copy or modify Sun RPC without charge, but are not authorized 12*53ee8cc1Swenshuai.xi * to license or distribute it to anyone else except as part of a product or 13*53ee8cc1Swenshuai.xi * program developed by the user. 14*53ee8cc1Swenshuai.xi * 15*53ee8cc1Swenshuai.xi * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 16*53ee8cc1Swenshuai.xi * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 17*53ee8cc1Swenshuai.xi * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 18*53ee8cc1Swenshuai.xi * 19*53ee8cc1Swenshuai.xi * Sun RPC is provided with no support and without any obligation on the 20*53ee8cc1Swenshuai.xi * part of Sun Microsystems, Inc. to assist in its use, correction, 21*53ee8cc1Swenshuai.xi * modification or enhancement. 22*53ee8cc1Swenshuai.xi * 23*53ee8cc1Swenshuai.xi * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 24*53ee8cc1Swenshuai.xi * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 25*53ee8cc1Swenshuai.xi * OR ANY PART THEREOF. 26*53ee8cc1Swenshuai.xi * 27*53ee8cc1Swenshuai.xi * In no event will Sun Microsystems, Inc. be liable for any lost revenue 28*53ee8cc1Swenshuai.xi * or profits or other special, indirect and consequential damages, even if 29*53ee8cc1Swenshuai.xi * Sun has been advised of the possibility of such damages. 30*53ee8cc1Swenshuai.xi * 31*53ee8cc1Swenshuai.xi * Sun Microsystems, Inc. 32*53ee8cc1Swenshuai.xi * 2550 Garcia Avenue 33*53ee8cc1Swenshuai.xi * Mountain View, California 94043 34*53ee8cc1Swenshuai.xi */ 35*53ee8cc1Swenshuai.xi 36*53ee8cc1Swenshuai.xi #ifndef __DES_CRYPT_H__ 37*53ee8cc1Swenshuai.xi #define __DES_CRYPT_H__ 1 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi #include <features.h> 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi __BEGIN_DECLS 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi #define DES_MAXDATA 8192 /* max bytes encrypted in one call */ 44*53ee8cc1Swenshuai.xi #define DES_DIRMASK (1 << 0) 45*53ee8cc1Swenshuai.xi #define DES_ENCRYPT (0*DES_DIRMASK) /* Encrypt */ 46*53ee8cc1Swenshuai.xi #define DES_DECRYPT (1*DES_DIRMASK) /* Decrypt */ 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xi 49*53ee8cc1Swenshuai.xi #define DES_DEVMASK (1 << 1) 50*53ee8cc1Swenshuai.xi #define DES_HW (0*DES_DEVMASK) /* Use hardware device */ 51*53ee8cc1Swenshuai.xi #define DES_SW (1*DES_DEVMASK) /* Use software device */ 52*53ee8cc1Swenshuai.xi 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi #define DESERR_NONE 0 /* succeeded */ 55*53ee8cc1Swenshuai.xi #define DESERR_NOHWDEVICE 1 /* succeeded, but hw device not available */ 56*53ee8cc1Swenshuai.xi #define DESERR_HWERROR 2 /* failed, hardware/driver error */ 57*53ee8cc1Swenshuai.xi #define DESERR_BADPARAM 3 /* failed, bad parameter to call */ 58*53ee8cc1Swenshuai.xi 59*53ee8cc1Swenshuai.xi #define DES_FAILED(err) \ 60*53ee8cc1Swenshuai.xi ((err) > DESERR_NOHWDEVICE) 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi /* 63*53ee8cc1Swenshuai.xi * cbc_crypt() 64*53ee8cc1Swenshuai.xi * ecb_crypt() 65*53ee8cc1Swenshuai.xi * 66*53ee8cc1Swenshuai.xi * Encrypt (or decrypt) len bytes of a buffer buf. 67*53ee8cc1Swenshuai.xi * The length must be a multiple of eight. 68*53ee8cc1Swenshuai.xi * The key should have odd parity in the low bit of each byte. 69*53ee8cc1Swenshuai.xi * ivec is the input vector, and is updated to the new one (cbc only). 70*53ee8cc1Swenshuai.xi * The mode is created by oring together the appropriate parameters. 71*53ee8cc1Swenshuai.xi * DESERR_NOHWDEVICE is returned if DES_HW was specified but 72*53ee8cc1Swenshuai.xi * there was no hardware to do it on (the data will still be 73*53ee8cc1Swenshuai.xi * encrypted though, in software). 74*53ee8cc1Swenshuai.xi */ 75*53ee8cc1Swenshuai.xi 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xi /* 78*53ee8cc1Swenshuai.xi * Cipher Block Chaining mode 79*53ee8cc1Swenshuai.xi */ 80*53ee8cc1Swenshuai.xi extern int cbc_crypt (char *__key, char *__buf, unsigned __len, 81*53ee8cc1Swenshuai.xi unsigned __mode, char *__ivec) __THROW; 82*53ee8cc1Swenshuai.xi 83*53ee8cc1Swenshuai.xi /* 84*53ee8cc1Swenshuai.xi * Electronic Code Book mode 85*53ee8cc1Swenshuai.xi */ 86*53ee8cc1Swenshuai.xi extern int ecb_crypt (char *__key, char *__buf, unsigned __len, 87*53ee8cc1Swenshuai.xi unsigned __mode) __THROW; 88*53ee8cc1Swenshuai.xi 89*53ee8cc1Swenshuai.xi /* 90*53ee8cc1Swenshuai.xi * Set des parity for a key. 91*53ee8cc1Swenshuai.xi * DES parity is odd and in the low bit of each byte 92*53ee8cc1Swenshuai.xi */ 93*53ee8cc1Swenshuai.xi extern void des_setparity (char *__key) __THROW; 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi __END_DECLS 96*53ee8cc1Swenshuai.xi 97*53ee8cc1Swenshuai.xi #endif 98