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