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